📄 ch08_144.htm
字号:
<html><head><title>Math::BigInt::Calc (Perl in a Nutshell, 2nd Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Stephen Spainhour" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly & Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="0596002416L" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl in a Nutshell, 2nd Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Java and XSLT" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch08_143.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch08_145.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">8.144. Math::BigInt::Calc</h2><p><a name="INDEX-1498" />Supports big integer calculations.Math::BigInt::Calc allows you to use library modules for core mathroutines. This module is shipped with the Perl 5.8 source kit.</p><p>If you've written a module that uses the same API asMath::BigInt, you can use Math::BigInt::Calc as follows:</p><blockquote><pre class="code">use Math::BigInt lib => 'yourlibname';use Math::BigInt lib => 'Math::BigInt::yourlibname';</pre></blockquote><p>Math::BigInt exports the following functions, which must be definedin your module so Math::BigInt can support it:</p><dl><dt><b><tt class="literal">_new(</tt><em class="replaceable">string</em><tt class="literal">)</tt></b></dt><dd>Returns a reference to new object from reference to decimal string.</p></dd><dt><b><tt class="literal">_zero()</tt></b></dt><dd>Returns a new object with value <tt class="literal">0</tt>.</p></dd><dt><b><tt class="literal">_one()</tt></b></dt><dd>Returns a new object with value <tt class="literal">1</tt>.</p></dd><dt><b><tt class="literal">_str(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns a reference to a string representing the object.</p></dd><dt><b><tt class="literal">_num(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns a Perl integer or floating-point number. This may notnecessarily be accurate, depending on machine-dependent,floating-point size limitations.</p></dd><dt><b><tt class="literal">_add(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Allows simple addition of two objects.</p></dd><dt><b><tt class="literal">_mul(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Allows multiplication of two objects.</p></dd><dt><b><tt class="literal">_div(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Implements division of the first object by the second. In a listcontext, <tt class="literal">div()</tt> returns<em class="replaceable"><tt>result</tt></em>,<em class="replaceable"><tt>remainder</tt></em>.</p></dd><dt><b><tt class="literal">_sub(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Implements simple subtraction of one object from another. A third,optional parameter indicates that the parameters are swapped.</p></dd><dt><b><tt class="literal">_dec(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Decrements object by one. </p></dd><dt><b><tt class="literal">_inc(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Increments object by one.</p></dd><dt><b><tt class="literal">_acmp(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>The <tt class="literal"><=></tt> operator for objects, which returns<tt class="literal">-1</tt>, <tt class="literal">0</tt>, or <tt class="literal">1</tt>.</p></dd><dt><b><tt class="literal">_len(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns count of the decimal digits of the object.</p></dd><dt><b><tt class="literal">_digit(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">n</em><tt class="literal">)</tt></b></dt><dd>Returns the <em class="replaceable"><tt>n</tt></em>th decimal digit of object.</p></dd><dt><b><tt class="literal">_is_one(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns true if argument is <tt class="literal">1</tt>.</p></dd><dt><b><tt class="literal">_is_zero(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns true if the argument is <tt class="literal">0</tt>.</p></dd><dt><b><tt class="literal">_is_even(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns true if argument is even.</p></dd><dt><b><tt class="literal">_is_odd(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns true if argument is odd.</p></dd><dt><b><tt class="literal">_copy()</tt></b></dt><dd>Returns a reference to a true copy of the object.</p></dd><dt><b><tt class="literal">_check(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Checks whether the internal representation is still intact. Returns<tt class="literal">0</tt> for OK or an error message as a string.</p></dd></dl><p>The following functions are optional and can be defined if theunderlying library can do them quickly. If undefined, Math::BigIntwill use pure Perl fallback routines to emulate these. Note thatfalling back to Perl's routines will cause aperformance hit.</p><dl><dt><b><tt class="literal">_from_hex(</tt><em class="replaceable">string</em><tt class="literal">)</tt></b></dt><dd>Returns a reference to a new object from a reference to a hexadecimalstring.</p></dd><dt><b><tt class="literal">_from_bin(</tt><em class="replaceable">string</em><tt class="literal">)</tt></b></dt><dd>Returns a reference to a new object from a reference to a binarystring.</p></dd><dt><b><tt class="literal">_as_hex(</tt><em class="replaceable">string</em><tt class="literal">)</tt></b></dt><dd>Returns a reference to a scalar string containing the value as anunsigned hex string. <tt class="literal">_as_hex()</tt> prepends the<tt class="literal">0x</tt>, although you must strip all leading zeros.</p></dd><dt><b><tt class="literal">_as_bin(</tt><em class="replaceable">string</em><tt class="literal">)</tt></b></dt><dd>Similar to <tt class="literal">_as_hex()</tt>, except that it takes abinary string that contains only zeros and ones.</p></dd><dt><b><tt class="literal">_rsft(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">n</em><tt class="literal">,</tt> <em class="replaceable">b</em><tt class="literal">)</tt></b></dt><dd>Shifts object (right) in base <em class="replaceable"><tt>B</tt></em> by<em class="replaceable"><tt>n</tt></em> digits. Returns <tt class="literal">undef</tt>on failure.</p></dd><dt><b><tt class="literal">_lsft(</tt><em class="replaceable">obj</em><tt class="literal">,</tt> <em class="replaceable">n</em><tt class="literal">,</tt> <em class="replaceable">b</em><tt class="literal">)</tt></b></dt><dd>Shifts object in base <em class="replaceable"><tt>b</tt></em> by<em class="replaceable"><tt>n</tt></em> digits. Returns <tt class="literal">undef</tt>on failure.</p></dd><dt><b><tt class="literal">_xor(</tt><em class="replaceable">obj1</em><tt class="literal">,</tt> <em class="replaceable">obj2</em><tt class="literal">)</tt></b></dt><dd>Does an XOR of object 1 with object 2.</p></dd><dt><b><tt class="literal">_and(</tt><em class="replaceable">obj1</em><tt class="literal">,</tt> <em class="replaceable">obj2</em><tt class="literal">)</tt></b></dt><dd>Does an AND of object 1 with object 2.</p></dd><dt><b><tt class="literal">_or(</tt><em class="replaceable">obj1</em><tt class="literal">,</tt> <em class="replaceable">obj2</em><tt class="literal">)</tt></b></dt><dd>Does an OR of object 1 with object 2.</p></dd><dt><b><tt class="literal">_mod(</tt><em class="replaceable">obj1</em><tt class="literal">,</tt> <em class="replaceable">obj2</em><tt class="literal">)</tt></b></dt><dd>Returns remainder of division of the first object by the secondobject.</p></dd><dt><b><tt class="literal">_sqrt(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns the square root of the object.</p></dd><dt><b><tt class="literal">_fac(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns. factorial of object.</p></dd><dt><b><tt class="literal">_pow(</tt><em class="replaceable">obj1</em><tt class="literal">,</tt> <em class="replaceable">obj2</em><tt class="literal">)</tt></b></dt><dd>Returns object 1 to the power of object 2.</p></dd><dt><b><tt class="literal">_gcd(</tt><em class="replaceable">obj1</em><tt class="literal">,</tt> <em class="replaceable">obj2</em><tt class="literal">)</tt></b></dt><dd>Returns the greatest common divisor of two objects. </p></dd><dt><b><tt class="literal">_zeros(</tt><em class="replaceable">obj</em><tt class="literal">)</tt></b></dt><dd>Returns the number of trailing decimal zeros.</p></dd></dl><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch08_143.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch08_145.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">8.143. Math::BigInt</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">8.145. Math::BigRat</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright © 2002</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -