8.144. Math::BigInt::Calc
Supports big integer calculations.
Math::BigInt::Calc allows you to use library modules for core math
routines. This module is shipped with the Perl 5.8 source kit.
If you've written a module that uses the same API as
Math::BigInt, you can use Math::BigInt::Calc as follows:
use Math::BigInt lib => 'yourlibname';
use Math::BigInt lib => 'Math::BigInt::yourlibname';
Math::BigInt exports the following functions, which must be defined
in your module so Math::BigInt can support it:
- _new(string)
-
Returns a reference to new object from reference to decimal string.
- _zero()
-
Returns a new object with value 0.
- _one()
-
Returns a new object with value 1.
- _str(obj)
-
Returns a reference to a string representing the object.
- _num(obj)
-
Returns a Perl integer or floating-point number. This may not
necessarily be accurate, depending on machine-dependent,
floating-point size limitations.
- _add(obj, obj)
-
Allows simple addition of two objects.
- _mul(obj, obj)
-
Allows multiplication of two objects.
- _div(obj, obj)
-
Implements division of the first object by the second. In a list
context, div() returns
result,
remainder.
- _sub(obj, obj)
-
Implements simple subtraction of one object from another. A third,
optional parameter indicates that the parameters are swapped.
- _dec(obj)
-
Decrements object by one.
- _inc(obj)
-
Increments object by one.
- _acmp(obj, obj)
-
The <=> operator for objects, which returns
-1, 0, or 1.
- _len(obj)
-
Returns count of the decimal digits of the object.
- _digit(obj, n)
-
Returns the nth decimal digit of object.
- _is_one(obj)
-
Returns true if argument is 1.
- _is_zero(obj)
-
Returns true if the argument is 0.
- _is_even(obj)
-
Returns true if argument is even.
- _is_odd(obj)
-
Returns true if argument is odd.
- _copy()
-
Returns a reference to a true copy of the object.
- _check(obj)
-
Checks whether the internal representation is still intact. Returns
0 for OK or an error message as a string.
The following functions are optional and can be defined if the
underlying library can do them quickly. If undefined, Math::BigInt
will use pure Perl fallback routines to emulate these. Note that
falling back to Perl's routines will cause a
performance hit.
- _from_hex(string)
-
Returns a reference to a new object from a reference to a hexadecimal
string.
- _from_bin(string)
-
Returns a reference to a new object from a reference to a binary
string.
- _as_hex(string)
-
Returns a reference to a scalar string containing the value as an
unsigned hex string. _as_hex() prepends the
0x, although you must strip all leading zeros.
- _as_bin(string)
-
Similar to _as_hex(), except that it takes a
binary string that contains only zeros and ones.
- _rsft(obj, n, b)
-
Shifts object (right) in base B by
n digits. Returns undef
on failure.
- _lsft(obj, n, b)
-
Shifts object in base b by
n digits. Returns undef
on failure.
- _xor(obj1, obj2)
-
Does an XOR of object 1 with object 2.
- _and(obj1, obj2)
-
Does an AND of object 1 with object 2.
- _or(obj1, obj2)
-
Does an OR of object 1 with object 2.
- _mod(obj1, obj2)
-
Returns remainder of division of the first object by the second
object.
- _sqrt(obj)
-
Returns the square root of the object.
- _fac(obj)
-
Returns. factorial of object.
- _pow(obj1, obj2)
-
Returns object 1 to the power of object 2.
- _gcd(obj1, obj2)
-
Returns the greatest common divisor of two objects.
- _zeros(obj)
-
Returns the number of trailing decimal zeros.
| | |
8.143. Math::BigInt | | 8.145. Math::BigRat |
Copyright © 2002 O'Reilly & Associates. All rights reserved.