📄 bigfloat.html
字号:
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>Math::BigFloat - Arbitrary size floating point math package</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>Math::BigFloat - Arbitrary size floating point math package</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<ul>
<li><a href="#canonical_notation">Canonical notation</a></li>
<li><a href="#output">Output</a></li>
<li><a href="#mantissa____exponent___and_parts__"><code>mantissa()</code>, <code>exponent()</code> and <code>parts()</code></a></li>
<li><a href="#accuracy_vs__precision">Accuracy vs. Precision</a></li>
<li><a href="#rounding">Rounding</a></li>
</ul>
<li><a href="#methods">METHODS</a></li>
<ul>
<li><a href="#accuracy">accuracy</a></li>
<li><a href="#precision__"><code>precision()</code></a></li>
</ul>
<li><a href="#autocreating_constants">Autocreating constants</a></li>
<ul>
<li><a href="#math_library">Math library</a></li>
<li><a href="#using_math__bigint__lite">Using Math::BigInt::Lite</a></li>
</ul>
<li><a href="#bugs">BUGS</a></li>
<li><a href="#caveats">CAVEATS</a></li>
<li><a href="#see_also">SEE ALSO</a></li>
<li><a href="#license">LICENSE</a></li>
<li><a href="#authors">AUTHORS</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Math::BigFloat - Arbitrary size floating point math package</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">Math::BigFloat</span><span class="operator">;</span>
</pre>
<pre>
<span class="comment"># Number creation</span>
<span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">new</span><span class="operator">(</span><span class="variable">$str</span><span class="operator">);</span> <span class="comment"># defaults to 0</span>
<span class="variable">$nan</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">bnan</span><span class="operator">();</span> <span class="comment"># create a NotANumber</span>
<span class="variable">$zero</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">bzero</span><span class="operator">();</span> <span class="comment"># create a +0</span>
<span class="variable">$inf</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">binf</span><span class="operator">();</span> <span class="comment"># create a +inf</span>
<span class="variable">$inf</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">binf</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span> <span class="comment"># create a -inf</span>
<span class="variable">$one</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">bone</span><span class="operator">();</span> <span class="comment"># create a +1</span>
<span class="variable">$one</span> <span class="operator">=</span> <span class="variable">Math::BigFloat</span><span class="operator">-></span><span class="variable">bone</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span> <span class="comment"># create a -1</span>
</pre>
<pre>
<span class="comment"># Testing</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_zero</span><span class="operator">();</span> <span class="comment"># true if arg is +0</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_nan</span><span class="operator">();</span> <span class="comment"># true if arg is NaN</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_one</span><span class="operator">();</span> <span class="comment"># true if arg is +1</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_one</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span> <span class="comment"># true if arg is -1</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_odd</span><span class="operator">();</span> <span class="comment"># true if odd, false for even</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_even</span><span class="operator">();</span> <span class="comment"># true if even, false for odd</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_pos</span><span class="operator">();</span> <span class="comment"># true if >= 0</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_neg</span><span class="operator">();</span> <span class="comment"># true if < 0</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">is_inf</span><span class="operator">(</span><span class="variable">sign</span><span class="operator">);</span> <span class="comment"># true if +inf, or -inf (default is '+')</span>
</pre>
<pre>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bcmp</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># compare numbers (undef,<0,=0,>0)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bacmp</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># compare absolutely (undef,<0,=0,>0)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">sign</span><span class="operator">();</span> <span class="comment"># return the sign, either +,- or NaN</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">digit</span><span class="operator">(</span><span class="variable">$n</span><span class="operator">);</span> <span class="comment"># return the nth digit, counting from right</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">digit</span><span class="operator">(-</span><span class="variable">$n</span><span class="operator">);</span> <span class="comment"># return the nth digit, counting from left</span>
</pre>
<pre>
<span class="comment"># The following all modify their first argument. If you want to preserve</span>
<span class="comment"># $x, use $z = $x->copy()->bXXX($y); See under L<CAVEATS> for why this is</span>
<span class="comment"># neccessary when mixing $a = $b assigments with non-overloaded math.</span>
<span class="comment"># set </span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bzero</span><span class="operator">();</span> <span class="comment"># set $i to 0</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bnan</span><span class="operator">();</span> <span class="comment"># set $i to NaN</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bone</span><span class="operator">();</span> <span class="comment"># set $x to +1</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bone</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span> <span class="comment"># set $x to -1</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">binf</span><span class="operator">();</span> <span class="comment"># set $x to inf</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">binf</span><span class="operator">(</span><span class="string">'-'</span><span class="operator">);</span> <span class="comment"># set $x to -inf</span>
</pre>
<pre>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bneg</span><span class="operator">();</span> <span class="comment"># negation</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">babs</span><span class="operator">();</span> <span class="comment"># absolute value</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bnorm</span><span class="operator">();</span> <span class="comment"># normalize (no-op)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bnot</span><span class="operator">();</span> <span class="comment"># two's complement (bit wise not)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">binc</span><span class="operator">();</span> <span class="comment"># increment x by 1</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bdec</span><span class="operator">();</span> <span class="comment"># decrement x by 1</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">badd</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># addition (add $y to $x)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bsub</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># subtraction (subtract $y from $x)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bmul</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># multiplication (multiply $x by $y)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bdiv</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># divide, set $x to quotient</span>
<span class="comment"># return (quo,rem) or quo if scalar</span>
</pre>
<pre>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bmod</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># modulus ($x % $y)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bpow</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># power of arguments ($x ** $y)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">blsft</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># left shift</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">brsft</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># right shift </span>
<span class="comment"># return (quo,rem) or quo if scalar</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">blog</span><span class="operator">();</span> <span class="comment"># logarithm of $x to base e (Euler's number)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">blog</span><span class="operator">(</span><span class="variable">$base</span><span class="operator">);</span> <span class="comment"># logarithm of $x to base $base (f.i. 2)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">band</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># bit-wise and</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bior</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># bit-wise inclusive or</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bxor</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># bit-wise exclusive or</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bnot</span><span class="operator">();</span> <span class="comment"># bit-wise not (two's complement)</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">bsqrt</span><span class="operator">();</span> <span class="comment"># calculate square-root</span>
<span class="variable">$x</span><span class="operator">-></span><span class="variable">broot</span><span class="operator">(</span><span class="variable">$y</span><span class="operator">);</span> <span class="comment"># $y'th root of $x (e.g. $y == 3 => cubic root)</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -