NAME
Math::BigInt::Lite - What BigInt's are before they become big
SYNOPSIS
use Math::BigInt::Lite;
$x = Math::BigInt::Lite->new(1);
print $x->bstr(),"\n"; # 1
$x = Math::BigInt::Lite->new('1e1234');
print $x->bsstr(),"\n"; # 1e1234 (silently upgrades to
# Math::BigInt)
DESCRIPTION
Math::BigInt is not very good suited to calculate with small (read: typical less than 10 digits) numbers, since it has a quite high per-operation overhead.
But for some simple applications, you don't need rounding, infinity nor NaN handling, and yet want fast speed for small numbers without the risk of overflowing.
This is were Math::BigInt::Lite comes into play.
Math::BigInt::Lite objects should behave in every way like Math::BigInt objects, that is apart from the different label, you should not be able to tell the difference. Since Math::BigInt::Lite is designed with speed in mind, there are certain limitations build-in. In praxis, however, you will not feel them, because everytime something gets to big to pass as Lite (literally), it will upgrade the objects and operation in question to Math::BigInt.
MATH LIBRARY
Math with the numbers is done (by default) by a module called Math::BigInt::Calc. This is equivalent to saying:
use Math::BigInt::Lite lib => 'Calc';
You can change this by using:
use Math::BigInt::Lite lib => 'BitVect';
The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
use Math::BigInt::Lite lib => 'Foo,Math::BigInt::Bar';
Calc.pm uses as internal format an array of elements of some decimal base (usually 1e7, but this might be differen for some systems) with the least significant digit first, while BitVect.pm uses a bit vector of base 2, most significant bit first. Other modules might use even different means of representing the numbers. See the respective module documentation for further details.
Please note that Math::BigInt::Lite does not use the denoted library itself, but it merely passes the lib argument to Math::BigInt. So, instead of the need to do:
use Math::BigInt lib => 'GMP';
use Math::BigInt::Lite;
you can roll it all into one line:
use Math::BigInt::Lite lib => 'GMP';
Use the lib, Luke!
METHODS
new
$x = Math::BigInt::Lite->new('1');
Create a new Math::BigInt:Lite object. When the input is not of an suitable simple and small form, a $upgrade
object will be returned.
BUGS
None know yet. Please see also Math::BigInt.
LICENSE
This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
Math::BigFloat and Math::Big as well as Math::BigInt::BitVect, Math::BigInt::Pari and Math::BigInt::GMP.
The bignum module.
AUTHORS
(C) by Tels http://bloodgate.com/ 2002.