⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bigrat.html

📁 perl教程
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<?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::BigRat - Arbitrary big rational numbers</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::BigRat - Arbitrary big rational numbers</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="#math_library">MATH LIBRARY</a></li>
	</ul>

	<li><a href="#methods">METHODS</a></li>
	<ul>

		<li><a href="#new__"><code>new()</code></a></li>
		<li><a href="#numerator__"><code>numerator()</code></a></li>
		<li><a href="#denominator__"><code>denominator()</code></a></li>
		<li><a href="#parts__"><code>parts()</code></a></li>
		<li><a href="#as_int__"><code>as_int()</code></a></li>
		<li><a href="#as_hex__"><code>as_hex()</code></a></li>
		<li><a href="#as_bin__"><code>as_bin()</code></a></li>
		<li><a href="#bfac__"><code>bfac()</code></a></li>
		<li><a href="#blog__"><code>blog()</code></a></li>
		<li><a href="#bround___round___bfround__"><code>bround()/round()/bfround()</code></a></li>
		<li><a href="#bmod__"><code>bmod()</code></a></li>
		<li><a href="#is_one__"><code>is_one()</code></a></li>
		<li><a href="#is_zero__"><code>is_zero()</code></a></li>
		<li><a href="#is_pos__"><code>is_pos()</code></a></li>
		<li><a href="#is_neg__"><code>is_neg()</code></a></li>
		<li><a href="#is_int__"><code>is_int()</code></a></li>
		<li><a href="#is_odd__"><code>is_odd()</code></a></li>
		<li><a href="#is_even__"><code>is_even()</code></a></li>
		<li><a href="#bceil__"><code>bceil()</code></a></li>
		<li><a href="#bfloor__"><code>bfloor()</code></a></li>
		<li><a href="#bsqrt__"><code>bsqrt()</code></a></li>
		<li><a href="#config">config</a></li>
	</ul>

	<li><a href="#bugs">BUGS</a></li>
	<li><a href="#license">LICENSE</a></li>
	<li><a href="#see_also">SEE ALSO</a></li>
	<li><a href="#authors">AUTHORS</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Math::BigRat - Arbitrary big rational numbers</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
        <span class="keyword">use</span> <span class="variable">Math::BigRat</span><span class="operator">;</span>
</pre>
<pre>
        <span class="keyword">my</span> <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'3/7'</span><span class="operator">);</span> <span class="variable">$x</span> <span class="operator">+=</span> <span class="string">'5/9'</span><span class="operator">;</span>
</pre>
<pre>
        <span class="keyword">print</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">bstr</span><span class="operator">(),</span><span class="string">"\n"</span><span class="operator">;</span>
        <span class="keyword">print</span> <span class="variable">$x</span> <span class="operator">**</span> <span class="number">2</span><span class="operator">,</span><span class="string">"\n"</span><span class="operator">;</span>
</pre>
<pre>
        <span class="keyword">my</span> <span class="variable">$y</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'inf'</span><span class="operator">);</span>
        <span class="keyword">print</span> <span class="string">"$y "</span><span class="operator">,</span> <span class="operator">(</span><span class="variable">$y</span><span class="operator">-&gt;</span><span class="variable">is_inf</span> <span class="operator">?</span> <span class="string">'is'</span> <span class="operator">:</span> <span class="string">'is not'</span><span class="operator">)</span> <span class="operator">,</span> <span class="string">" infinity\n"</span><span class="operator">;</span>
</pre>
<pre>
        <span class="keyword">my</span> <span class="variable">$z</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">144</span><span class="operator">);</span> <span class="variable">$z</span><span class="operator">-&gt;</span><span class="variable">bsqrt</span><span class="operator">();</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>Math::BigRat complements Math::BigInt and Math::BigFloat by providing support
for arbitrary big rational numbers.</p>
<p>
</p>
<h2><a name="math_library">MATH LIBRARY</a></h2>
<p>Math with the numbers is done (by default) by a module called
Math::BigInt::Calc. This is equivalent to saying:</p>
<pre>
        <span class="keyword">use</span> <span class="variable">Math::BigRat</span> <span class="string">lib</span> <span class="operator">=&gt;</span> <span class="string">'Calc'</span><span class="operator">;</span>
</pre>
<p>You can change this by using:</p>
<pre>
        <span class="keyword">use</span> <span class="variable">Math::BigRat</span> <span class="string">lib</span> <span class="operator">=&gt;</span> <span class="string">'BitVect'</span><span class="operator">;</span>
</pre>
<p>The following would first try to find Math::BigInt::Foo, then
Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:</p>
<pre>
        <span class="keyword">use</span> <span class="variable">Math::BigRat</span> <span class="string">lib</span> <span class="operator">=&gt;</span> <span class="string">'Foo,Math::BigInt::Bar'</span><span class="operator">;</span>
</pre>
<p>Calc.pm uses as internal format an array of elements of some decimal base
(usually 1e7, but this might be different for some systems) with the least
significant digit first, while BitVect.pm uses a bit vector of base 2, most
significant bit first. Other modules might use even different means of
representing the numbers. See the respective module documentation for further
details.</p>
<p>Currently the following replacement libraries exist, search for them at CPAN:</p>
<pre>
        Math::BigInt::BitVect
        Math::BigInt::GMP
        Math::BigInt::Pari
        Math::BigInt::FastCalc</pre>
<p>
</p>
<hr />
<h1><a name="methods">METHODS</a></h1>
<p>Any methods not listed here are dervied from Math::BigFloat (or
Math::BigInt), so make sure you check these two modules for further
information.</p>
<p>
</p>
<h2><a name="new__"><code>new()</code></a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'1/3'</span><span class="operator">);</span>
</pre>
<p>Create a new Math::BigRat object. Input can come in various forms:</p>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">123</span><span class="operator">);</span>                            <span class="comment"># scalars</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'inf'</span><span class="operator">);</span>                          <span class="comment"># infinity</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'123.3'</span><span class="operator">);</span>                        <span class="comment"># float</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'1/3'</span><span class="operator">);</span>                          <span class="comment"># simple string</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'1 / 3'</span><span class="operator">);</span>                        <span class="comment"># spaced</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'1 / 0.1'</span><span class="operator">);</span>                      <span class="comment"># w/ floats</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">3</span><span class="operator">));</span>           <span class="comment"># BigInt</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="variable">Math::BigFloat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'3.1'</span><span class="operator">));</span>     <span class="comment"># BigFloat</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="variable">Math::BigInt::Lite</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'2'</span><span class="operator">));</span>   <span class="comment"># BigLite</span>
</pre>
<pre>
        <span class="comment"># You can also give D and N as different objects:</span>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span>
                <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(-</span><span class="number">123</span><span class="operator">),</span>
                <span class="variable">Math::BigInt</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="number">7</span><span class="operator">),</span>
                <span class="operator">);</span>                      <span class="comment"># =&gt; -123/7</span>
</pre>
<p>
</p>
<h2><a name="numerator__"><code>numerator()</code></a></h2>
<pre>
        <span class="variable">$n</span> <span class="operator">=</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">numerator</span><span class="operator">();</span>
</pre>
<p>Returns a copy of the numerator (the part above the line) as signed BigInt.</p>
<p>
</p>
<h2><a name="denominator__"><code>denominator()</code></a></h2>
<pre>

        <span class="variable">$d</span> <span class="operator">=</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">denominator</span><span class="operator">();</span>
</pre>
<p>Returns a copy of the denominator (the part under the line) as positive BigInt.</p>
<p>
</p>
<h2><a name="parts__"><code>parts()</code></a></h2>
<pre>
        <span class="operator">(</span><span class="variable">$n</span><span class="operator">,</span><span class="variable">$d</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">parts</span><span class="operator">();</span>
</pre>
<p>Return a list consisting of (signed) numerator and (unsigned) denominator as
BigInts.</p>
<p>
</p>
<h2><a name="as_int__"><code>as_int()</code></a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'13/7'</span><span class="operator">);</span>
        <span class="keyword">print</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">as_int</span><span class="operator">(),</span><span class="string">"\n"</span><span class="operator">;</span>                <span class="comment"># '1'</span>
</pre>
<p>Returns a copy of the object as BigInt, truncated to an integer.</p>
<p><code>as_number()</code> is an alias for <code>as_int()</code>.</p>
<p>
</p>
<h2><a name="as_hex__"><code>as_hex()</code></a></h2>
<pre>
        <span class="variable">$x</span> <span class="operator">=</span> <span class="variable">Math::BigRat</span><span class="operator">-&gt;</span><span class="variable">new</span><span class="operator">(</span><span class="string">'13'</span><span class="operator">);</span>
        <span class="keyword">print</span> <span class="variable">$x</span><span class="operator">-&gt;</span><span class="variable">as_hex</span><span class="operator">(),</span><span class="string">"\n"</span><span class="operator">;</span>                <span class="comment"># '0xd'</span>
</pre>
<p>Returns the BigRat as hexadecimal string. Works only for integers.</p>
<p>
</p>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -