This file contains all the CHANGES and bugfixes from original BigInt/BigFloat
to the rewritten one:
v1.21:
general:
+ It is subsequent faster than the original
+ regression test suite greatly enlarged to cover more problematic cases
+ added example scripts (prime.pl, bigprimes.pl)
caveats:
+ bpow now modifies the first argument like all other routines do
+ bstr() and stringify now drop the leading '+' (to make overloaded cmp work
as expected when cmp'aring to scalars and other objects (read: bugfix)
bugs and buglets fixed over Mark's original:
+ 0**0 gave NaN instead of 1
+ -1**y gave -1 instead of +1 for even y
+ mod/div for negative numbers were incompatible to Perl's way
+ integers of the form 1E5, 1.01E3, 100E-2 etc are now valid input values
+ $a = new Math::BigInt; creates now a +0, while "" still gives a NaN
This supresses all warnings on undef arguments. Wether this is better...
+ import would always use "Math::BigInt" and give only one arg to new() as
well as clash with Exporter
+ use Math::BigInt qw(bneg); $a = bneg('1234'); etc did not work at all
+ documentation fixed and enhanced
internal fixes:
+ uses a blessed hash ref instead scalar ref (easier subclassable)
+ use strict and -w
+ s/$[/0/ (after all, $[ = 1; in main does not effect this package)
+ $# partially removed ($#y is scalar @y -1, $#$y is scalar @$y-1 - ugh!)
new modules (experimental):
+ Math::BigInt::Constant - read-only BigInt's
+ Math::BigFraction - 1 / 3 * 2 / 7 => 2 / 21
+ Math::Big - usefull functions
new stuff:
+ bacmp (acmp), because needed for more efficient add()
+ bint() for writing shorter code (exportable new())
+ bzero(), bnan(), sign()
+ is_zero(), is_nan(), is_one(), is_odd(), is_even() for faster testing
+ bgcd accepts now lists
+ blcm (also accepts lists)
Please send me test-reports, your experiences with this and your ideas - I love
to hear about my work!
Tels <http://bloodgate.com/>