develooper Front page | perl.perl5.porters | Postings from January 2005

[PATCH] Math::BigInt v1.74, Math::BigRat v0.14, bignum v0.16

Thread Next
January 1, 2005 09:59
[PATCH] Math::BigInt v1.74, Math::BigRat v0.14, bignum v0.16
Message ID:


attached is a patch to sync blead to the latest Math::* release.

MD5 and SHA1 sum:

6fadace5f37e417c8d670dc23f4f94f2  patch_bigint_v1.74.txt.gz
e0128538854d9bd273aeab7ec3f80cc311c64248  patch_bigint_v1.74.txt.gz

On my system:

	All tests successful.
	u=2.66  s=0.76  cu=178.73  cs=19.88  scripts=873  tests=100191

(Ooops, I broke the 100K test barrier...)

A short overview of what has changed is noted below. This update contains an
important security fix, so upgrading is strongly recommended.

Hm, should have released my math modules yesterday, now I had to change the
year numbers all over the place :°)

Anyway, to everyone a big Thank You! for all the hard work as well as the
friendly atmosphere in Perl development in the last year. Happy New Year!

Best wishes,


Math::BigInt v1.74:

Calc : small cleanups, remove some dead wood
       shortcut for _div() with numbers of equal nr of parts (scales
        much better than before)
       inline is_zero() into _gcd() to make it slightly faster
MBI  : streamline _scale_(a|p) as to not require accuracy/precicison()
        and round_mode() unless nec.
       remove the now unnec. support for MB_NEVER_ROUND and {_f}, this
        makes all ops that call round() a tad faster (one exists is
        removed) and shrinks the codesize a bit
       streamline bneg(), inline is_zero(): makes it 1.6 times faster
       replace ref($_[0]) w/ undef when it isn't actually needed. This
        makes some ops (bsstr(), bneg etc) about 2% faster for small numbers
       restrict low-level math library names to sane chars to avoid
        exploitation of eval()
       fill_can_cache() accidentily did checks for 'or' & 'xor'
       inline fill_can_cache()
       add _register_callback() to notify subclasses of lib changes
       bgcd() is now about 10% faster
       is_positive(0) == 0, since 0 is neither positive nor negative
       (thanx Reed Wilson)
       load Exporter only if neccessary (e.g. "use Math::BigInt;" doesn't)
MBF  : add bneg() and inline is_zero() in it, making it 1.6 times faster
       replace ref($_[0]) w/ undef when it isn't actually needed. This
        makes some ops (bsstr(), bneg etc) about 2% faster for small numbers
       use _register_callback()
       bgcd()/blcm() never worked, so fix them for integers and add tests
misc : small doc cleanups
tests: lib_load.t: test for _register_callback()
       change inf_nan.t to use Test::More

Math::BigRat v0.14:

 * streamlined copy()
 * take over tests from Math::BigInt v1.74 and require it
 * inline is_zero() into bneg(), making it about 50% faster
 * more tests for bneg()
 * register callback to get notified of lib changes from Math::BigInt
 * much simpler import() logic
 * new() accepts input like new(Math::BigInt->new(123),Math::BigInt->new(7));
 * doc: as_hex(), as_bin(), add note about as_pos(), as_neg() and as_int()
 * numify() now deals with large N and D by using BigFloat (Thanx Hugo!)
 * numify() lost the sign on negative integer values (Thanx Zefram!)

bignum 0.16:

  * option "l", "a", and "p" did not work under -Mbigrat
  * little doc fixes
  * add more tests, convert some testfiles to Test::More

- --
 Signed on Sat Jan  1 18:59:50 2005 with key 0x93B84C15.
 Visit my photo gallery at
 PGP key on or per email.

 "We're confident that DNF will be one of the greatest, if not the
 greatest, game of 1998. And this confidence is not misplaced." -Scott
 Miller, 1997 (

Version: GnuPG v1.2.4 (GNU/Linux)


Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About