NAME
Math::BigInt::Constant - Arbitrary sized constant integers
SYNOPSIS
use Math::BigInt::Constant;
# Number creation
$x = Math::BigInt->new($str); # defaults to 0
$nan = Math::BigInt->bnan(); # create a NotANumber
$zero = Math::BigInt->bzero();# create a "+0"
# Testing
$x->is_zero(); # return wether arg is zero or not
$x->is_nan(); # return wether arg is NaN or not
$x->is_one(); # return true if arg is +1
$x->is_one('-'); # return true if arg is -1
$x->is_odd(); # return true if odd, false for even
$x->is_even(); # return true if even, false for odd
$x->bcmp($y); # compare numbers (undef,<0,=0,>0)
$x->bacmp($y); # compare absolutely (undef,<0,=0,>0)
$x->sign(); # return the sign, either +,- or NaN
# The following would modify and thus are illegal:
# set
$x->bzero(); # set $x to 0
$x->bnan(); # set $x to NaN
$x->bneg(); # negation
$x->babs(); # absolute value
$x->bnorm(); # normalize (no-op)
$x->bnot(); # two's complement (bit wise not)
$x->binc(); # increment x by 1
$x->bdec(); # decrement x by 1
$x->badd($y); # addition (add $y to $x)
$x->bsub($y); # subtraction (subtract $y from $x)
$x->bmul($y); # multiplication (multiply $x by $y)
$x->bdiv($y); # divide, set $x to quotient
# return (quo,rem) or quo if scalar
$x->bmod($y); # modulus (x % y)
$x->bpow($y); # power of arguments (x ** y)
$x->blsft($y); # left shift
$x->brsft($y); # right shift
$x->band($y); # bit-wise and
$x->bior($y); # bit-wise inclusive or
$x->bxor($y); # bit-wise exclusive or
$x->bnot(); # bit-wise not (two's complement)
# The following do not modify their arguments and are ok:
bgcd(@values); # greatest common divisor
blcm(@values); # lowest common multiplicator
$x->bstr(); # return normalized string
$x->length(); # return number of digits in number
DESCRIPTION
This module let's you defined constant BigInt's on a per-object basis. The usual use Math::BigInt ':constant'
will catch all integer constants in the script at compile time, but will not let you create constant values on the fly, nor work for strings and/or floating point constants like 1e5
.
EXAMPLES
Opposed to compile-time checking via use constant
:
use Math::BigInt;
use constant X => Math::BigInt->new(12345678);
print X," ",X+2,"\n"; # okay
print "X\n"; # oups
these provide runtime checks and can be interpolated into strings:
use Math::BigInt::Constant;
$x = Math::BigInt::Constant->new(3141592);
print "$x\n"; # okay
print $x+2,"\n"; # dito
$x += 2; # not okay
BUGS
None discovered yet.
AUTHORS
Tels http://bloodgate.com in early 2001.