@node Math/BigInt, Math/BigInteger, Math/BigFloat, Module List
@unnumbered Arbitrary size integer math package


@unnumberedsec NAME

Math::BigInt - Arbitrary size integer math package

@unnumberedsec SYNOPSIS

@example
use Math::BigInt;
$i = Math::BigInt->new($string);
@end example

@example
$i->bneg return BINT               negation
$i->babs return BINT               absolute value
$i->bcmp(BINT) return CODE         compare numbers (undef,<0,=0,>0)
$i->badd(BINT) return BINT         addition
$i->bsub(BINT) return BINT         subtraction
$i->bmul(BINT) return BINT         multiplication
$i->bdiv(BINT) return (BINT,BINT)  division (quo,rem) just quo if scalar
$i->bmod(BINT) return BINT         modulus
$i->bgcd(BINT) return BINT         greatest common divisor
$i->bnorm return BINT              normalization
@end example

@unnumberedsec DESCRIPTION

All basic math operations are overloaded if you declare your big
integers as

@example
$i = new Math::BigInt @'123 456 789 123 456 789@';
@end example

@table @asis
@item Canonical notation
Big integer value are strings of the form @code{/^[+-]\d+$/} with leading
zeros suppressed.

@item Input
Input values to these routines may be strings of the form
@code{/^\s*[+-]?[\d\s]+$/}.

@item Output
Output values always always in canonical form

@end table
Actual math is done in an internal format consisting of an array
whose first element is the sign (/^[+-]$/) and whose remaining 
elements are base 100000 digits with the least significant digit first.
The string @'NaN@' is used to represent the result when input arguments 
are not numbers, as well as the result of dividing by zero.

@unnumberedsec EXAMPLES

@example
@'+0@'                            canonical zero value
@'   -123 123 123@'               canonical value @'-123123123@'
@'1 23 456 7890@'                 canonical value @'+1234567890@'
@end example

@unnumberedsec BUGS

The current version of this module is a preliminary version of the
real thing that is currently (as of perl5.002) under development.

@unnumberedsec AUTHOR

Mark Biggar, overloaded interface by Ilya Zakharevich.

