Florian Ragwitz > Math-BigInt-Lite-0.14 > Math::BigInt::Lite

Download:
Math-BigInt-Lite-0.14.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  2
View/Report Bugs
Module Version: 0.14   Source  

NAME ^

Math::BigInt::Lite - What BigInts 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 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 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 => '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!

Using Lite as substitute for Math::BigInt

The pragmas bigrat, bignum and bigint will automatically use Math::BigInt::Lite whenever possible.

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, an object of the class of $upgrade (typically Math::BigInt) will be returned.

All other methods from BigInt and BigFloat should work as expected.

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::Pari and Math::BigInt::GMP.

The bignum module.

AUTHORS ^

(C) by Tels http://bloodgate.com/ 2002-2007.

syntax highlighting: