Edit D:\app\Administrator\product\11.2.0\dbhome_1\perl\html\lib\Math\BigInt\Calc.html
<?xml version="1.0" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Math::BigInt::Calc - Pure Perl module to support Math::BigInt</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rev="made" href="mailto:" /> </head> <body style="background-color: white"> <table border="0" width="100%" cellspacing="0" cellpadding="3"> <tr><td class="block" style="background-color: #cccccc" valign="middle"> <big><strong><span class="block"> Math::BigInt::Calc - Pure Perl module to support Math::BigInt</span></strong></big> </td></tr> </table> <!-- INDEX BEGIN --> <div name="index"> <p><a name="__index__"></a></p> <ul> <li><a href="#name">NAME</a></li> <li><a href="#synopsis">SYNOPSIS</a></li> <li><a href="#description">DESCRIPTION</a></li> <li><a href="#storage">STORAGE</a></li> <li><a href="#methods">METHODS</a></li> <li><a href="#wrap_your_own">WRAP YOUR OWN</a></li> <li><a href="#license">LICENSE</a></li> <li><a href="#authors">AUTHORS</a></li> <li><a href="#see_also">SEE ALSO</a></li> </ul> <hr name="index" /> </div> <!-- INDEX END --> <p> </p> <h1><a name="name">NAME</a></h1> <p>Math::BigInt::Calc - Pure Perl module to support Math::BigInt</p> <p> </p> <hr /> <h1><a name="synopsis">SYNOPSIS</a></h1> <p>Provides support for big integer calculations. Not intended to be used by other modules. Other modules which sport the same functions can also be used to support Math::BigInt, like Math::BigInt::GMP or Math::BigInt::Pari.</p> <p> </p> <hr /> <h1><a name="description">DESCRIPTION</a></h1> <p>In order to allow for multiple big integer libraries, Math::BigInt was rewritten to use library modules for core math routines. Any module which follows the same API as this can be used instead by using the following:</p> <pre> use Math::BigInt lib => 'libname';</pre> <p>'libname' is either the long name ('Math::BigInt::Pari'), or only the short version like 'Pari'.</p> <p> </p> <hr /> <h1><a name="storage">STORAGE</a></h1> <p> </p> <hr /> <h1><a name="methods">METHODS</a></h1> <p>The following functions MUST be defined in order to support the use by Math::BigInt v1.70 or later:</p> <pre> api_version() return API version, 1 for v1.70, 2 for v1.83 _new(string) return ref to new object from ref to decimal string _zero() return a new object with value 0 _one() return a new object with value 1 _two() return a new object with value 2 _ten() return a new object with value 10</pre> <pre> _str(obj) return ref to a string representing the object _num(obj) returns a Perl integer/floating point number NOTE: because of Perl numeric notation defaults, the _num'ified obj may lose accuracy due to machine-dependent floating point size limitations _add(obj,obj) Simple addition of two objects _mul(obj,obj) Multiplication of two objects _div(obj,obj) Division of the 1st object by the 2nd In list context, returns (result,remainder). NOTE: this is integer math, so no fractional part will be returned. The second operand will be not be 0, so no need to check for that. _sub(obj,obj) Simple subtraction of 1 object from another a third, optional parameter indicates that the params are swapped. In this case, the first param needs to be preserved, while you can destroy the second. sub (x,y,1) => return x - y and keep x intact! _dec(obj) decrement object by one (input is guaranteed to be > 0) _inc(obj) increment object by one</pre> <pre> _acmp(obj,obj) <=> operator for objects (return -1, 0 or 1)</pre> <pre> _len(obj) returns count of the decimal digits of the object _digit(obj,n) returns the n'th decimal digit of object</pre> <pre> _is_one(obj) return true if argument is 1 _is_two(obj) return true if argument is 2 _is_ten(obj) return true if argument is 10 _is_zero(obj) return true if argument is 0 _is_even(obj) return true if argument is even (0,2,4,6..) _is_odd(obj) return true if argument is odd (1,3,5,7..)</pre> <pre> _copy return a ref to a true copy of the object</pre> <pre> _check(obj) check whether internal representation is still intact return 0 for ok, otherwise error message as string</pre> <pre> _from_hex(str) return new object from a hexadecimal string _from_bin(str) return new object from a binary string _from_oct(str) return new object from an octal string _as_hex(str) return string containing the value as unsigned hex string, with the '0x' prepended. Leading zeros must be stripped. _as_bin(str) Like as_hex, only as binary string containing only zeros and ones. Leading zeros must be stripped and a '0b' must be prepended. _rsft(obj,N,B) shift object in base B by N 'digits' right _lsft(obj,N,B) shift object in base B by N 'digits' left _xor(obj1,obj2) XOR (bit-wise) object 1 with object 2 Note: XOR, AND and OR pad with zeros if size mismatches _and(obj1,obj2) AND (bit-wise) object 1 with object 2 _or(obj1,obj2) OR (bit-wise) object 1 with object 2</pre> <pre> _mod(obj1,obj2) Return remainder of div of the 1st by the 2nd object _sqrt(obj) return the square root of object (truncated to int) _root(obj) return the n'th (n >= 3) root of obj (truncated to int) _fac(obj) return factorial of object 1 (1*2*3*4..) _pow(obj1,obj2) return object 1 to the power of object 2 return undef for NaN _zeros(obj) return number of trailing decimal zeros _modinv return inverse modulus _modpow return modulus of power ($x ** $y) % $z _log_int(X,N) calculate integer log() of X in base N X >= 0, N >= 0 (return undef for NaN) returns (RESULT, EXACT) where EXACT is: 1 : result is exactly RESULT 0 : result was truncated to RESULT undef : unknown whether result is exactly RESULT _gcd(obj,obj) return Greatest Common Divisor of two objects</pre> <p>The following functions are REQUIRED for an api_version of 2 or greater:</p> <pre> _1ex($x) create the number 1Ex where x >= 0 _alen(obj) returns approximate count of the decimal digits of the object. This estimate MUST always be greater or equal to what _len() returns. _nok(n,k) calculate n over k (binomial coefficient)</pre> <p>The following functions are optional, and can be defined if the underlying lib has a fast way to do them. If undefined, Math::BigInt will use pure Perl (hence slow) fallback routines to emulate these:</p> <pre> _signed_or _signed_and _signed_xor</pre> <p>Input strings come in as unsigned but with prefix (i.e. as '123', '0xabc' or '0b1101').</p> <p>So the library needs only to deal with unsigned big integers. Testing of input parameter validity is done by the caller, so you need not worry about underflow (f.i. in <code>_sub()</code>, <code>_dec()</code>) nor about division by zero or similar cases.</p> <p>The first parameter can be modified, that includes the possibility that you return a reference to a completely different object instead. Although keeping the reference and just changing its contents is preferred over creating and returning a different reference.</p> <p>Return values are always references to objects, strings, or true/false for comparison routines.</p> <p> </p> <hr /> <h1><a name="wrap_your_own">WRAP YOUR OWN</a></h1> <p>If you want to port your own favourite c-lib for big numbers to the Math::BigInt interface, you can take any of the already existing modules as a rough guideline. You should really wrap up the latest BigInt and BigFloat testsuites with your module, and replace in them any of the following:</p> <pre> use Math::BigInt;</pre> <p>by this:</p> <pre> use Math::BigInt lib => 'yourlib';</pre> <p>This way you ensure that your library really works 100% within Math::BigInt.</p> <p> </p> <hr /> <h1><a name="license_this_program_is_free_software__you_may_redistribute_it_and_or_modify_it_under_the_same_terms_as_perl_itself_">LICENSE This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.</a></h1> <p> </p> <hr /> <h1><a name="authors">AUTHORS</a></h1> <p>Original math code by Mark Biggar, rewritten by Tels <a href="http://bloodgate.com/">http://bloodgate.com/</a> in late 2000. Seperated from BigInt and shaped API with the help of John Peacock.</p> <p>Fixed, speed-up, streamlined and enhanced by Tels 2001 - 2007.</p> <p> </p> <hr /> <h1><a name="see_also">SEE ALSO</a></h1> <p><a href="file://C|\ADE\aime_smenon_perl_090715\perl\html/lib/Math/BigInt.html">the Math::BigInt manpage</a>, <a href="file://C|\ADE\aime_smenon_perl_090715\perl\html/lib/Math/BigFloat.html">the Math::BigFloat manpage</a>, <a href="file://C|\ADE\aime_smenon_perl_090715\perl\html/Math/BigInt/GMP.html">the Math::BigInt::GMP manpage</a>, <a href="file://C|\ADE\aime_smenon_perl_090715\perl\html/lib/Math/BigInt/FastCalc.html">the Math::BigInt::FastCalc manpage</a> and <a href="file://C|\ADE\aime_smenon_perl_090715\perl\html/Math/BigInt/Pari.html">the Math::BigInt::Pari manpage</a>.</p> <table border="0" width="100%" cellspacing="0" cellpadding="3"> <tr><td class="block" style="background-color: #cccccc" valign="middle"> <big><strong><span class="block"> Math::BigInt::Calc - Pure Perl module to support Math::BigInt</span></strong></big> </td></tr> </table> </body> </html>
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de