develooper Front page | perl.perl5.porters | Postings from December 2003

BigInt v1.68 - pre-release

Thread Next
From:
Tels
Date:
December 22, 2003 16:08
Subject:
BigInt v1.68 - pre-release
Message ID:
200312230106.27661@bloodgate.com
-----BEGIN PGP SIGNED MESSAGE-----

Moin,

I am pleased to announce the first pre-release version of Math::BigInt v1.68.
There is a patch against bleadperl, but since it is about 62 Kbyte
uncompressed I uploaded it to bloodgate.com, too.

	http://bloodgate.com/perl/packages/devel/Math-BigInt-1.68.tar.gz
	md5sum 432fd62adba8e053e5dbee7fe01a6217
	http://bloodgate.com/perl/packages/devel/patch_blead_BigInt-v1.68.txt.gz
	md5sum 9b5f4ac5eccb3194ea32c25239d191b9

Here is a list of the things that have changed so far from v1.67:

File changes:

* I factored out the emulation code (the code that is used to emulate 
functions that  the low-level math library does not provide) and put it into

	Math/BigInt/CalcEmu.pm

This (combined with merging 3 use vars// statements together) improves the
startup time by about 5-10% and reduces the memory footprint by a few kbyte -
a few more if you use GMP).

The code size from BigInt.pm is 132000 bytes vs. 145000 - much less than I
hoped, but I did not realizes that about 56000 bytes of BigInt.pm are pod.
Oops - there is more doc than I knew about.

Memory savings due to not loading the code from Emu.pm (Perl v5.8.1, 32 bit):

       | v1.67  v1.68          Savings
 ------|-------------------------------
  GMP  |  3072   2940   132 Kbyte 4.2%
  Calc |  3192   3112    80 Kbyte 2.5%

* There are 4 new tesfiles for the new alias functions:

	t/alias.inc
	t/sub_ali.t
	t/mbi_ali.t
	t/mbf_ali.t


Also, I wrote recently that the streamlining options have all been exhausted.
I was wrong:

BigInt:

* new() is about 20 % faster for smaller numbers (less than 7 digits)
* bdec() is about 10% faster for negative numbers
* bpow() is about 30% faster for smaller numbers
* exponent() is about twice as fast (making parts() about 50% faster)
* binary/hexadecimal input was twice as slow due to a typo in v1.66 in %CAN

(The last point is rather embarrassing and was caught by by timeline
benchmarks...)

Bugfixes:

* bfac(inf) is inf, not NaN
* round() was missing a croak() in path testing for wrong roundmode

Speed-ups:

* blog() is now much faster if the BASE is a small number, especially if the
result was a large(r) number. Basically, it scales much better.
* flog() uses blog() to calculate a guess, and if guessed right, returns it.
Makes it much faster for integer results.

Outstanding issues:

* root() failures on irix. (off-by-one error).

Best wishes,

Tels

- --
 Signed on Tue Dec 23 00:34:32 2003 with key 0x93B84C15.
 Visit my photo gallery at http://bloodgate.com/photos/
 PGP key on http://bloodgate.com/tels.asc or per email.

perl -MMath::String=from_number -le 'print from_number(Math::BigInt->new(
"18646399493525281530194668228877222090413595623092063296651")*2*27*7*1289,
[ "a".."z", "A".."Z"," ","!"]);'



-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux)
Comment: When cryptography is outlawed, bayl bhgynjf jvyy unir cevinpl.

iQEVAwUBP+eHs3cLPEOTuEwVAQGyoQf8DTkRf9stabGT8g6b9sH4YIwqpiRW5I70
R+lZlIOhbt3SEQE0qLZo3Nki6ComAsUwd+3IPmw+SyiHZ/Ik5xkM8g0f8/NSjMIR
m80BJZpKuL/U+L+9hKIgFCdH98cVuIyl9QhyNZK5Vyp3MvAPu2WkZNA/szDEEx5y
etZI4G/lLqDhnUKHUaaDzYKo/wWbrmLFfWsuFyAc+ALLNVv3IM1OSRQdg79r7Xq9
lBAAHLhEE6yf/ToJaBViPFBdWfMCXfjzW7NYAPriY8SAi2WyfqlBnNUxFU4zbNnn
qkDjm/Vj+dIxarJFPkVSB4hr/3DAR2heTo/iiLd2+M08oV336kpOdw==
=amzo
-----END PGP SIGNATURE-----


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About