NAME

Math::GMP - High speed arbitrary size integer math

SYNOPSIS

use Math::GMP;
my $n = new Math::GMP 2;

$n = $n ** (256*1024);
$n = $n - 1;
print "n is now $n\n";

DESCRIPTION

Math::GMP is designed to be a drop-in replacement both for Math::BigInt and for regular integer arithmetic. Unlike BigInt, though, Math::GMP uses the GNU gmp library for all of its calculations, as opposed to straight Perl functions. This results in a speed increase of anywhere from 5 to 30 times. The downside is that this module requires a C compiler to install -- a small tradeoff in most cases.

A Math::GMP object can be used just as a normal numeric scalar would be -- the module overloads the normal arithmetic operators to provide as seamless an interface as possible. However, if you need a perfect interface, you can do the following:

use Math::GMP qw(:constant);

$n = 2 ** (256 * 1024);
print "n is $n\n";

This would fail without the ':constant' since Perl would use normal integers to compute the 250,000 bit number, and thereby truncate it into meaninglessness.

BUGS

As of version 0.9, Math::GMP is mostly compatible with Math::BigInt. There are some slight incompatibilities, such as output of positive numbers not being prefixed by a '+' sign. It is planned that the 1.0 release be completely compatible.

The install process of the gmp library is rather contrived. This needs fixing and testing on various platforms.

AUTHOR

Chip Turner <chip@zfx.com>, based on Math::BigInt by Mark Biggar and Ilya Zakharevich.