The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
This file contains all the changes and bugfixes from the original version of
BigInt/BigFloat to the rewritten one. For what has changed in the latest
version see NEW and for a complete list of changes see the file CHANGES.

v1.82:

 general:
  + It is subsequent faster than the original in many places
    + Use more than 16 bit at a time, greater BASELEN for 64 bit systems
    + overload for things like +=
    + special operations like binc()
    + many optimizations and shortcuts in normal operations
    + Can use Math::BigInt lib => 'name'; for Pari, GMP, Bit::Vector or others
  + regression test suite greatly enhanced to cover more problematic cases
  + added example scripts (prime.pl, bigprimes.pl, hailstone.pl)
  + documentation fixed and greatly enhanced
  + BigInt is sub-classable with very little effort, see M::S or M::BF
  + subclasses of Math::BigInt know all the same methods, so that you can call
    $x->some_method() without having to know which type of class $x is
  + added infinity handling
  + much better NaN handling
 caveats:
  + bstr() and stringify now drop the leading '+' (to make overloaded cmp work
    as expected when cmp'aring to scalars and other objects (read: bugfix)
  + due to the dropping of '+' the string sort order has changed. It is now
    compatible to the way perl sorts it's strings.
  + spaces are no longer allowed in a number (but may precede or follow it)
  !! You can always make a subclass and change all these things quite easily !!
 input:
  + underscores are now valid between any two digits (in hex/binary input, too)
  + integers of the form 1E2, 1.23E2, 2.00 etc now valid for BigInt.pm, too
  + hexadecimal numbers of the form 0xabcdefABCDEF0123456789
  + binary numbers of the form 0b01010101101000001000100101
  + octal numbers can be input via from_oct()
 output:
  + as_hex(), as_bin() and as_oct() for easier conversation between bases
 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
  + fsqrt() gave slightly wrong results (like for fsqrt(9))
  + +x/0 is now +inf, -x/0 is -inf (both were NaN), as well as other inf cases
  + mod/div for negative numbers were incompatible to Perl's way
  + added P. Prymmer's OS/390 '/1e5 vs *1e-5' patch w/o the performance snag
  + incorporated all the patches to the core modules by John Peacock
  + BigFloat::bxxx() works as well as BigFloat::fxxx()
  + Math::BigInt->new(10) / Math::BigFloat->new(2) returned NaN (ditto for
    other subclasses of Math::BigInt)
  + $a = new Math::BigInt; creates now a +0, while "" still gives a NaN
    This suppresses all warnings on undef arguments. Wether this is better...
  + import() would always use "Math::BigInt" and clash with Exporter
  + use Math::BigInt qw(bneg); $a = bneg('1234'); etc did not work at all
  + $x->xxx() now modifies $x in all cases of modifiers and actually returns
    the same $x (e.g. not a plain scalar or a different reference). All
    testing routines leave $x alone. bpow(), bmod(), fround(), ffround() etc
    were broken in this regard.
 accuracy and precision:
  + there is now support for both accuracy (significant digits) and precision
    (fixed number of digits after decimal point), which by default is off
  + objects/numbers now can have a local accuracy/precision
 internal fixes:
  + uses a blessed hash ref instead scalar ref (easier subclassable)
  + my instead of local
  + 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!)
  + added LICENSE section and file
 new stuff:
  + MBF: :constant works now
  + MBI: :constant picks up binary and hexadecimal constants
  + brsft()/blsft() also can do other bases than 2
  + bacmp (acmp), because needed for more efficient add()
  + bzero(), bnan(), bone(), binf()
  + binc(), bdec(), bfac()
  + is_zero(), is_nan(), is_one(), is_odd(), is_even(), is_inf(), is_int()
  + digit(), length(), copy()
  + as_number() (alias: as_int()), as_hex(), as_bin()
  + is_positive(), is_negative() (alias: is_pos() and is_neg())
  + mantissa(), exponent(), parts(), sign()
  + bgcd() accepts now lists, blcm() (also accepts lists)
  + flog()/blog() for overloading of log()
  + fexp()/bexp() for overloading of exp()
  + round(accuracy,precision,mode) round to accuracy/precision using mode
  + MBF: fpow(), fmod(), fdiv() in list context (Thanx J. Peacock)
  + fpow() can now handle non-integer arguments, like in fpow(2.1 ** 0.2)
  + MBI: bsqrt()
  + bmodpow(), bmodinv() (Thanx John Borwick)
  + bfloor(), bceil(), broot()
  + CORE cos()/sin()/exp()/atan2() now work when passed BigInts or BigFloats

Please send me test-reports, your experiences with this and your ideas - I love
to hear about my work!

Tels <http://bloodgate.com/>