Math::BigInt::Lite - What Math::BigInts are before they become big
use Math::BigInt::Lite;
my $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)
Math::BigInt is not very good suited to work with small (read: typical less than
10 digits) numbers, since it has a quite high per-operation overhead and is
thus much slower than normal Perl for operations like:
my $x = 1 + 2; # fast and correct
my $x = 2 ** 256; # fast, but wrong
my $x = Math::BigInt->new(1) + 2; # slow, but correct
my $x = Math::BigInt->new(2) ** 256; # slow, and still correct
But for some applications, you 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 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 => 'GMP';
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';
See the respective low-level math library 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!
The pragmas bigrat, bignum and bigint will automatically use Math::BigInt::Lite
whenever possible.
$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, an object of the class of $upgrade (typically
Math::BigInt) will be returned.
All other methods from BigInt and BigFloat should work as expected.
Please report any bugs or feature requests to "bug-math-bigint at
rt.cpan.org", or through the web interface at
<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt-Lite>
(requires login). We will be notified, and then you'll automatically be
notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Math::BigInt::Lite
You can also look for information at:
- •
- RT: CPAN's request tracker
<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt-Lite>
- •
- AnnoCPAN: Annotated CPAN documentation
<http://annocpan.org/dist/Math-BigInt-Lite>
- •
- CPAN Ratings
<http://cpanratings.perl.org/dist/Math-BigInt-Lite>
- •
- Search CPAN
<http://search.cpan.org/dist/Math-BigInt-Lite/>
- •
- CPAN Testers Matrix
<http://matrix.cpantesters.org/?dist=Math-BigInt-Lite>
This program is free software; you may redistribute it and/or modify it under
the same terms as Perl itself.
Math::BigFloat and Math::Big as well as Math::BigInt::Pari and
Math::BigInt::GMP.
The bignum module.
- •
- Copyright 2002-2007 Tels, <http://bloodgate.com>.
- •
- Copyright 2010 Florian Ragwitz flora@cpan.org.
- •
- Copyright 2016- Peter John Acklam pjacklam@online.no.