long-decimal 0.00.15 → 0.00.16
Sign up to get free protection for your applications and to get access to all the features.
- data/README +8 -5
- data/VERSION +1 -1
- data/doc/classes/{LongMath/LongDecimal.html → LongDecimal.html} +372 -515
- data/doc/classes/{LongMath/LongDecimal.src/M000060.html → LongDecimal.src/M000034.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000061.html → LongDecimal.src/M000035.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000062.html → LongDecimal.src/M000036.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000063.html → LongDecimal.src/M000037.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000064.html → LongDecimal.src/M000038.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000065.html → LongDecimal.src/M000039.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000066.html → LongDecimal.src/M000040.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000067.html → LongDecimal.src/M000041.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000068.html → LongDecimal.src/M000042.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000069.html → LongDecimal.src/M000043.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000070.html → LongDecimal.src/M000044.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000071.html → LongDecimal.src/M000045.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000072.html → LongDecimal.src/M000046.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000074.html → LongDecimal.src/M000047.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000075.html → LongDecimal.src/M000048.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000076.html → LongDecimal.src/M000049.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000077.html → LongDecimal.src/M000050.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000078.html → LongDecimal.src/M000051.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000079.html → LongDecimal.src/M000052.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000080.html → LongDecimal.src/M000053.html} +3 -4
- data/doc/classes/{LongMath/LongDecimal.src/M000081.html → LongDecimal.src/M000054.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000082.html → LongDecimal.src/M000055.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000083.html → LongDecimal.src/M000056.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000085.html → LongDecimal.src/M000058.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000088.html → LongDecimal.src/M000059.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000089.html → LongDecimal.src/M000060.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000090.html → LongDecimal.src/M000061.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000092.html → LongDecimal.src/M000062.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000093.html → LongDecimal.src/M000063.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000094.html → LongDecimal.src/M000064.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000095.html → LongDecimal.src/M000065.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000096.html → LongDecimal.src/M000066.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000097.html → LongDecimal.src/M000067.html} +4 -4
- data/doc/classes/{LongMath/LongDecimal.src/M000098.html → LongDecimal.src/M000068.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000099.html → LongDecimal.src/M000069.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000100.html → LongDecimal.src/M000070.html} +5 -5
- data/doc/classes/{LongMath/LongDecimal.src/M000101.html → LongDecimal.src/M000071.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000102.html → LongDecimal.src/M000072.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000103.html → LongDecimal.src/M000073.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000104.html → LongDecimal.src/M000074.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000105.html → LongDecimal.src/M000075.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000106.html → LongDecimal.src/M000076.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000107.html → LongDecimal.src/M000077.html} +6 -6
- data/doc/classes/{LongMath/LongDecimal.src/M000108.html → LongDecimal.src/M000078.html} +6 -6
- data/doc/classes/{LongMath/LongDecimal.src/M000109.html → LongDecimal.src/M000079.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000110.html → LongDecimal.src/M000080.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000111.html → LongDecimal.src/M000081.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000112.html → LongDecimal.src/M000082.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000113.html → LongDecimal.src/M000083.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000114.html → LongDecimal.src/M000084.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000115.html → LongDecimal.src/M000085.html} +3 -3
- data/doc/classes/LongDecimal.src/M000086.html +18 -0
- data/doc/classes/LongDecimal.src/M000087.html +18 -0
- data/doc/classes/{LongMath/LongDecimal.src/M000119.html → LongDecimal.src/M000088.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000124.html → LongDecimal.src/M000089.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000125.html → LongDecimal.src/M000090.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000126.html → LongDecimal.src/M000091.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000129.html → LongDecimal.src/M000094.html} +3 -3
- data/doc/classes/LongDecimal.src/M000095.html +18 -0
- data/doc/classes/{LongMath/LongDecimal.src/M000130.html → LongDecimal.src/M000096.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000131.html → LongDecimal.src/M000097.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000132.html → LongDecimal.src/M000098.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000133.html → LongDecimal.src/M000099.html} +3 -3
- data/doc/classes/LongDecimalBase.html +354 -0
- data/doc/classes/{LongMath/LongDecimal.src/M000073.html → LongDecimalBase.src/M000101.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000086.html → LongDecimalBase.src/M000102.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000087.html → LongDecimalBase.src/M000103.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000091.html → LongDecimalBase.src/M000104.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000044.html → LongDecimalBase.src/M000105.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000117.html → LongDecimalBase.src/M000106.html} +3 -3
- data/doc/classes/{LongMath/LongDecimal.src/M000121.html → LongDecimalBase.src/M000109.html} +4 -4
- data/doc/classes/{LongMath/LongDecimal.src/M000122.html → LongDecimalBase.src/M000110.html} +4 -4
- data/doc/classes/{LongMath/LongDecimal.src/M000123.html → LongDecimalBase.src/M000111.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.html → LongDecimalQuot.html} +249 -263
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000026.html → LongDecimalQuot.src/M000003.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000027.html → LongDecimalQuot.src/M000004.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000028.html → LongDecimalQuot.src/M000005.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000029.html → LongDecimalQuot.src/M000006.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000030.html → LongDecimalQuot.src/M000007.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000032.html → LongDecimalQuot.src/M000008.html} +3 -3
- data/doc/classes/LongDecimalQuot.src/M000009.html +18 -0
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000033.html → LongDecimalQuot.src/M000010.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000034.html → LongDecimalQuot.src/M000011.html} +3 -3
- data/doc/classes/LongDecimalQuot.src/M000012.html +18 -0
- data/doc/classes/LongDecimalQuot.src/M000013.html +18 -0
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000036.html → LongDecimalQuot.src/M000014.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000037.html → LongDecimalQuot.src/M000015.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000038.html → LongDecimalQuot.src/M000016.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000039.html → LongDecimalQuot.src/M000017.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000040.html → LongDecimalQuot.src/M000018.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000041.html → LongDecimalQuot.src/M000019.html} +4 -4
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000042.html → LongDecimalQuot.src/M000020.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000043.html → LongDecimalQuot.src/M000021.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000046.html → LongDecimalQuot.src/M000022.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000048.html → LongDecimalQuot.src/M000023.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000049.html → LongDecimalQuot.src/M000024.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000050.html → LongDecimalQuot.src/M000025.html} +3 -3
- data/doc/classes/LongDecimalQuot.src/M000026.html +18 -0
- data/doc/classes/LongDecimalQuot.src/M000027.html +18 -0
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000054.html → LongDecimalQuot.src/M000028.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000055.html → LongDecimalQuot.src/M000029.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000058.html → LongDecimalQuot.src/M000032.html} +3 -3
- data/doc/classes/{LongMath/LongDecimalQuot.src/M000059.html → LongDecimalQuot.src/M000033.html} +3 -3
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +5 -5
- data/doc/classes/LongMath.html +117 -117
- data/doc/classes/LongMath.src/{M000001.html → M000112.html} +1 -1
- data/doc/classes/LongMath.src/{M000002.html → M000113.html} +1 -1
- data/doc/classes/LongMath.src/{M000003.html → M000114.html} +1 -1
- data/doc/classes/LongMath.src/{M000004.html → M000115.html} +1 -1
- data/doc/classes/LongMath.src/{M000005.html → M000116.html} +1 -1
- data/doc/classes/LongMath.src/{M000006.html → M000117.html} +1 -1
- data/doc/classes/LongMath.src/{M000007.html → M000118.html} +1 -1
- data/doc/classes/LongMath.src/{M000008.html → M000119.html} +1 -1
- data/doc/classes/LongMath.src/{M000009.html → M000120.html} +1 -1
- data/doc/classes/LongMath.src/{M000010.html → M000121.html} +1 -1
- data/doc/classes/LongMath.src/{M000011.html → M000122.html} +1 -4
- data/doc/classes/LongMath.src/{M000012.html → M000123.html} +1 -1
- data/doc/classes/LongMath.src/{M000013.html → M000124.html} +1 -1
- data/doc/classes/LongMath.src/{M000014.html → M000125.html} +1 -2
- data/doc/classes/LongMath.src/{M000015.html → M000126.html} +1 -1
- data/doc/classes/LongMath.src/{M000016.html → M000127.html} +1 -2
- data/doc/classes/LongMath.src/{M000017.html → M000128.html} +1 -5
- data/doc/classes/LongMath.src/{M000018.html → M000129.html} +1 -1
- data/doc/classes/LongMath.src/{M000019.html → M000130.html} +1 -1
- data/doc/classes/LongMath.src/{M000020.html → M000131.html} +1 -1
- data/doc/classes/LongMath.src/{M000021.html → M000132.html} +4 -3
- data/doc/classes/LongMath.src/{M000022.html → M000133.html} +1 -1
- data/doc/classes/LongMath.src/{M000023.html → M000134.html} +2 -1
- data/doc/classes/{LongMath/Numeric.html → Numeric.html} +18 -15
- data/doc/classes/{LongMath/Numeric.src/M000134.html → Numeric.src/M000100.html} +3 -3
- data/doc/created.rid +1 -1
- data/doc/dot/f_0.dot +14 -5
- data/doc/dot/f_0.png +0 -0
- data/doc/files/lib/long-decimal_rb.html +10 -9
- data/doc/{classes/LongMath.src/M000024.html → files/lib/long-decimal_rb.src/M000001.html} +3 -3
- data/doc/{classes/LongMath.src/M000025.html → files/lib/long-decimal_rb.src/M000002.html} +3 -3
- data/doc/fr_class_index.html +1 -0
- data/doc/fr_method_index.html +126 -127
- data/lib/long-decimal.rb +154 -160
- data/test/testlongdecimal.rb +140 -11
- metadata +138 -136
- data/doc/classes/LongMath/LongDecimal.src/M000116.html +0 -30
- data/doc/classes/LongMath/LongDecimalQuot.src/M000031.html +0 -18
- data/doc/classes/LongMath/LongDecimalQuot.src/M000035.html +0 -18
- data/doc/classes/LongMath/LongDecimalQuot.src/M000045.html +0 -18
- data/doc/classes/LongMath/LongDecimalQuot.src/M000047.html +0 -18
- data/doc/classes/LongMath/LongDecimalQuot.src/M000051.html +0 -23
- data/doc/classes/LongMath/LongDecimalQuot.src/M000052.html +0 -19
- data/doc/classes/LongMath/LongDecimalQuot.src/M000053.html +0 -18
data/doc/dot/f_0.png
CHANGED
Binary file
|
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>
|
59
|
+
<td>Fri Mar 24 18:59:00 CET 2006</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -69,13 +69,14 @@
|
|
69
69
|
<div id="contextContent">
|
70
70
|
<div id="diagram">
|
71
71
|
<map id="map" name="map">
|
72
|
-
<area shape="RECT" coords="
|
73
|
-
<area shape="RECT" coords="
|
74
|
-
<area shape="RECT" coords="
|
75
|
-
<area shape="RECT" coords="
|
76
|
-
<area shape="RECT" coords="
|
77
|
-
<area shape="RECT" coords="
|
78
|
-
<area shape="RECT" coords="
|
72
|
+
<area shape="RECT" coords="68,197,186,245" href="../../classes/LongDecimalBase.html" alt="LongDecimalBase">
|
73
|
+
<area shape="RECT" coords="163,5,243,53" href="../../classes/Comparable.html" alt="Comparable">
|
74
|
+
<area shape="RECT" coords="139,101,267,149" href="../../classes/LongDecimalRoundingMode/RoundingModeClass.html" alt="RoundingModeClass">
|
75
|
+
<area shape="RECT" coords="6,293,120,341" href="../../classes/LongDecimalQuot.html" alt="LongDecimalQuot">
|
76
|
+
<area shape="RECT" coords="144,293,238,341" href="../../classes/LongDecimal.html" alt="LongDecimal">
|
77
|
+
<area shape="RECT" coords="43,101,115,149" href="../../classes/Numeric.html" alt="Numeric">
|
78
|
+
<area shape="RECT" coords="246,187,339,233" href="../../classes/LongMath.html" alt="LongMath">
|
79
|
+
<area shape="RECT" coords="128,68,304,160" href="../../classes/LongDecimalRoundingMode.html" alt="LongDecimalRoundingMode">
|
79
80
|
</map>
|
80
81
|
<img src="../../dot/f_0.png" usemap="#map" border=0 alt="TopLevel">
|
81
82
|
</div>
|
@@ -87,7 +88,7 @@ point
|
|
87
88
|
</p>
|
88
89
|
<p>
|
89
90
|
CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/lib/long-decimal.rb,v
|
90
|
-
1.
|
91
|
+
1.9 2006/03/24 17:42:07 bk1 Exp $ CVS-Label: $Name: PRE_ALPHA_0_16 $
|
91
92
|
Author: $Author: bk1 $ (Karl Brodowsky)
|
92
93
|
</p>
|
93
94
|
|
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>LongDecimal (
|
8
|
+
<title>LongDecimal (lib/long-decimal.rb)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1578</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongDecimal</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span> = <span class="ruby-value">0</span>)
|
15
15
|
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">a</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>) <span class="ruby-keyword kw">then</span>
|
16
16
|
<span class="ruby-identifier">a</span>
|
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>LongDecimalQuot (
|
8
|
+
<title>LongDecimalQuot (lib/long-decimal.rb)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<link rel="stylesheet" href="
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1591</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongDecimalQuot</span>(<span class="ruby-identifier">first</span>, <span class="ruby-identifier">second</span>)
|
15
15
|
<span class="ruby-constant">LongDecimalQuot</span>.<span class="ruby-identifier">new!</span>(<span class="ruby-identifier">first</span>, <span class="ruby-identifier">second</span>)
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
data/doc/fr_class_index.html
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
<h1 class="section-bar">Classes</h1>
|
22
22
|
<div id="index-entries">
|
23
23
|
<a href="classes/LongDecimal.html">LongDecimal</a><br />
|
24
|
+
<a href="classes/LongDecimalBase.html">LongDecimalBase</a><br />
|
24
25
|
<a href="classes/LongDecimalQuot.html">LongDecimalQuot</a><br />
|
25
26
|
<a href="classes/LongDecimalRoundingMode.html">LongDecimalRoundingMode</a><br />
|
26
27
|
<a href="classes/LongDecimalRoundingMode/RoundingModeClass.html">LongDecimalRoundingMode::RoundingModeClass</a><br />
|
data/doc/fr_method_index.html
CHANGED
@@ -20,142 +20,141 @@
|
|
20
20
|
<div id="index">
|
21
21
|
<h1 class="section-bar">Methods</h1>
|
22
22
|
<div id="index-entries">
|
23
|
-
<a href="classes/
|
24
|
-
<a href="classes/
|
25
|
-
<a href="classes/LongDecimal.html#
|
26
|
-
<a href="classes/
|
27
|
-
<a href="classes/
|
28
|
-
<a href="classes/LongDecimal.html#
|
29
|
-
<a href="classes/LongDecimalQuot.html#
|
30
|
-
<a href="classes/
|
31
|
-
<a href="classes/
|
32
|
-
<a href="classes/
|
33
|
-
<a href="classes/LongDecimal.html#
|
34
|
-
<a href="classes/LongDecimalQuot.html#
|
35
|
-
<a href="classes/LongDecimal.html#
|
36
|
-
<a href="classes/
|
37
|
-
<a href="classes/
|
38
|
-
<a href="classes/
|
39
|
-
<a href="classes/
|
40
|
-
<a href="classes/
|
41
|
-
<a href="classes/LongDecimalRoundingMode/RoundingModeClass.html#
|
42
|
-
<a href="classes/LongDecimalQuot.html#
|
43
|
-
<a href="classes/LongDecimal.html#
|
44
|
-
<a href="classes/
|
45
|
-
<a href="classes/LongDecimal.html#
|
46
|
-
<a href="classes/LongDecimal.html#M000085">>> (LongDecimal)</a><br />
|
23
|
+
<a href="classes/LongDecimal.html#M000072">% (LongDecimal)</a><br />
|
24
|
+
<a href="classes/LongDecimalQuot.html#M000021">% (LongDecimalQuot)</a><br />
|
25
|
+
<a href="classes/LongDecimal.html#M000073">& (LongDecimal)</a><br />
|
26
|
+
<a href="classes/LongDecimal.html#M000065">* (LongDecimal)</a><br />
|
27
|
+
<a href="classes/LongDecimalQuot.html#M000017">* (LongDecimalQuot)</a><br />
|
28
|
+
<a href="classes/LongDecimal.html#M000070">** (LongDecimal)</a><br />
|
29
|
+
<a href="classes/LongDecimalQuot.html#M000019">** (LongDecimalQuot)</a><br />
|
30
|
+
<a href="classes/LongDecimalQuot.html#M000015">+ (LongDecimalQuot)</a><br />
|
31
|
+
<a href="classes/LongDecimal.html#M000063">+ (LongDecimal)</a><br />
|
32
|
+
<a href="classes/LongDecimalBase.html#M000104">+@ (LongDecimalBase)</a><br />
|
33
|
+
<a href="classes/LongDecimal.html#M000064">- (LongDecimal)</a><br />
|
34
|
+
<a href="classes/LongDecimalQuot.html#M000016">- (LongDecimalQuot)</a><br />
|
35
|
+
<a href="classes/LongDecimal.html#M000062">-@ (LongDecimal)</a><br />
|
36
|
+
<a href="classes/LongDecimalQuot.html#M000014">-@ (LongDecimalQuot)</a><br />
|
37
|
+
<a href="classes/LongDecimal.html#M000069">/ (LongDecimal)</a><br />
|
38
|
+
<a href="classes/LongDecimalQuot.html#M000018">/ (LongDecimalQuot)</a><br />
|
39
|
+
<a href="classes/LongDecimal.html#M000077"><< (LongDecimal)</a><br />
|
40
|
+
<a href="classes/LongDecimalBase.html#M000109"><=> (LongDecimalBase)</a><br />
|
41
|
+
<a href="classes/LongDecimalRoundingMode/RoundingModeClass.html#M000135"><=> (LongDecimalRoundingMode::RoundingModeClass)</a><br />
|
42
|
+
<a href="classes/LongDecimalQuot.html#M000025">== (LongDecimalQuot)</a><br />
|
43
|
+
<a href="classes/LongDecimal.html#M000094">== (LongDecimal)</a><br />
|
44
|
+
<a href="classes/LongDecimal.html#M000095">=== (LongDecimal)</a><br />
|
45
|
+
<a href="classes/LongDecimal.html#M000078">>> (LongDecimal)</a><br />
|
47
46
|
<a href="files/lib/long-decimal_rb.html#M000001">LongDecimal (lib/long-decimal.rb)</a><br />
|
48
47
|
<a href="files/lib/long-decimal_rb.html#M000002">LongDecimalQuot (lib/long-decimal.rb)</a><br />
|
49
|
-
<a href="classes/LongDecimal.html#
|
50
|
-
<a href="classes/LongDecimal.html#
|
51
|
-
<a href="classes/LongDecimal.html#
|
52
|
-
<a href="classes/LongDecimalQuot.html#
|
53
|
-
<a href="classes/
|
54
|
-
<a href="classes/LongDecimal.html#
|
55
|
-
<a href="classes/
|
56
|
-
<a href="classes/LongMath.html#
|
57
|
-
<a href="classes/LongMath.html#
|
58
|
-
<a href="classes/LongMath.html#M000114">
|
59
|
-
<a href="classes/LongMath.html#
|
60
|
-
<a href="classes/LongMath.html#
|
61
|
-
<a href="classes/LongMath.html#
|
62
|
-
<a href="classes/
|
63
|
-
<a href="classes/
|
64
|
-
<a href="classes/
|
65
|
-
<a href="classes/LongDecimal.html#
|
66
|
-
<a href="classes/
|
48
|
+
<a href="classes/LongDecimal.html#M000079">[] (LongDecimal)</a><br />
|
49
|
+
<a href="classes/LongDecimal.html#M000075">^ (LongDecimal)</a><br />
|
50
|
+
<a href="classes/LongDecimal.html#M000088">abs (LongDecimal)</a><br />
|
51
|
+
<a href="classes/LongDecimalQuot.html#M000022">abs (LongDecimalQuot)</a><br />
|
52
|
+
<a href="classes/LongDecimalBase.html#M000108">abs2 (LongDecimalBase)</a><br />
|
53
|
+
<a href="classes/LongDecimal.html#M000055">anti_equalize_scale (LongDecimal)</a><br />
|
54
|
+
<a href="classes/LongMath.html#M000127">calc_iprec_for_exp (LongMath)</a><br />
|
55
|
+
<a href="classes/LongMath.html#M000125">calc_pi (LongMath)</a><br />
|
56
|
+
<a href="classes/LongMath.html#M000113">check_is_int (LongMath)</a><br />
|
57
|
+
<a href="classes/LongMath.html#M000114">check_is_ld (LongMath)</a><br />
|
58
|
+
<a href="classes/LongMath.html#M000116">check_is_mode (LongMath)</a><br />
|
59
|
+
<a href="classes/LongMath.html#M000115">check_is_prec (LongMath)</a><br />
|
60
|
+
<a href="classes/LongMath.html#M000112">check_word_len (LongMath)</a><br />
|
61
|
+
<a href="classes/LongDecimalQuot.html#M000024">coerce (LongDecimalQuot)</a><br />
|
62
|
+
<a href="classes/LongDecimal.html#M000089">coerce (LongDecimal)</a><br />
|
63
|
+
<a href="classes/LongDecimalBase.html#M000103">dec (LongDecimalBase)</a><br />
|
64
|
+
<a href="classes/LongDecimal.html#M000060">dec! (LongDecimal)</a><br />
|
65
|
+
<a href="classes/LongDecimalQuot.html#M000013">dec! (LongDecimalQuot)</a><br />
|
66
|
+
<a href="classes/LongDecimal.html#M000051">denominator (LongDecimal)</a><br />
|
67
67
|
<a href="classes/LongDecimalQuot.html#M000006">denominator (LongDecimalQuot)</a><br />
|
68
|
-
<a href="classes/LongDecimal.html#
|
69
|
-
<a href="classes/LongDecimal.html#
|
70
|
-
<a href="classes/LongDecimal.html#
|
71
|
-
<a href="classes/
|
72
|
-
<a href="classes/
|
73
|
-
<a href="classes/
|
74
|
-
<a href="classes/LongMath.html#
|
75
|
-
<a href="classes/LongMath.html#
|
76
|
-
<a href="classes/
|
77
|
-
<a href="classes/
|
78
|
-
<a href="classes/
|
79
|
-
<a href="classes/LongDecimal.html#
|
80
|
-
<a href="classes/
|
81
|
-
<a href="classes/
|
82
|
-
<a href="classes/
|
83
|
-
<a href="classes/LongDecimal.html#
|
84
|
-
<a href="classes/LongDecimal.html#
|
85
|
-
<a href="classes/
|
86
|
-
<a href="classes/LongDecimalQuot.html#
|
87
|
-
<a href="classes/LongDecimal.html#
|
88
|
-
<a href="classes/LongMath.html#
|
89
|
-
<a href="classes/LongMath.html#
|
90
|
-
<a href="classes/LongMath.html#
|
91
|
-
<a href="classes/LongMath.html#
|
92
|
-
<a href="classes/LongMath.html#
|
93
|
-
<a href="classes/LongDecimal.html#
|
94
|
-
<a href="classes/LongDecimal.html#
|
95
|
-
<a href="classes/LongDecimal.html#
|
96
|
-
<a href="classes/LongDecimal.html#
|
97
|
-
<a href="classes/LongDecimal.html#
|
98
|
-
<a href="classes/LongMath.html#
|
99
|
-
<a href="classes/LongDecimal.html#M000044">new (LongDecimal)</a><br />
|
68
|
+
<a href="classes/LongDecimal.html#M000066">divide (LongDecimal)</a><br />
|
69
|
+
<a href="classes/LongDecimal.html#M000067">divide_s (LongDecimal)</a><br />
|
70
|
+
<a href="classes/LongDecimal.html#M000071">divmod (LongDecimal)</a><br />
|
71
|
+
<a href="classes/LongDecimalQuot.html#M000020">divmod (LongDecimalQuot)</a><br />
|
72
|
+
<a href="classes/LongDecimal.html#M000054">equalize_scale (LongDecimal)</a><br />
|
73
|
+
<a href="classes/LongMath.html#M000126">exp (LongMath)</a><br />
|
74
|
+
<a href="classes/LongMath.html#M000128">exp_internal (LongMath)</a><br />
|
75
|
+
<a href="classes/LongMath.html#M000123">gcd_with_high_power (LongMath)</a><br />
|
76
|
+
<a href="classes/LongDecimal.html#M000098">hash (LongDecimal)</a><br />
|
77
|
+
<a href="classes/LongDecimalQuot.html#M000032">hash (LongDecimalQuot)</a><br />
|
78
|
+
<a href="classes/LongDecimalBase.html#M000102">inc (LongDecimalBase)</a><br />
|
79
|
+
<a href="classes/LongDecimal.html#M000059">inc! (LongDecimal)</a><br />
|
80
|
+
<a href="classes/LongDecimalQuot.html#M000012">inc! (LongDecimalQuot)</a><br />
|
81
|
+
<a href="classes/LongDecimalQuot.html#M000033">inspect (LongDecimalQuot)</a><br />
|
82
|
+
<a href="classes/LongDecimal.html#M000099">inspect (LongDecimal)</a><br />
|
83
|
+
<a href="classes/LongDecimal.html#M000053">int_digits10 (LongDecimal)</a><br />
|
84
|
+
<a href="classes/LongDecimal.html#M000052">int_digits2 (LongDecimal)</a><br />
|
85
|
+
<a href="classes/LongDecimalBase.html#M000107">inverse (LongDecimalBase)</a><br />
|
86
|
+
<a href="classes/LongDecimalQuot.html#M000028">is_int? (LongDecimalQuot)</a><br />
|
87
|
+
<a href="classes/LongDecimal.html#M000090">is_int? (LongDecimal)</a><br />
|
88
|
+
<a href="classes/LongMath.html#M000129">log (LongMath)</a><br />
|
89
|
+
<a href="classes/LongMath.html#M000130">log10 (LongMath)</a><br />
|
90
|
+
<a href="classes/LongMath.html#M000131">log2 (LongMath)</a><br />
|
91
|
+
<a href="classes/LongMath.html#M000132">log_internal (LongMath)</a><br />
|
92
|
+
<a href="classes/LongMath.html#M000118">merge_from_words (LongMath)</a><br />
|
93
|
+
<a href="classes/LongDecimal.html#M000039">minus_one! (LongDecimal)</a><br />
|
94
|
+
<a href="classes/LongDecimal.html#M000081">move_point_left (LongDecimal)</a><br />
|
95
|
+
<a href="classes/LongDecimal.html#M000083">move_point_left_int (LongDecimal)</a><br />
|
96
|
+
<a href="classes/LongDecimal.html#M000082">move_point_right (LongDecimal)</a><br />
|
97
|
+
<a href="classes/LongDecimal.html#M000084">move_point_right_int (LongDecimal)</a><br />
|
98
|
+
<a href="classes/LongMath.html#M000124">multiplicity_of_factor (LongMath)</a><br />
|
100
99
|
<a href="classes/LongDecimalQuot.html#M000004">new (LongDecimalQuot)</a><br />
|
100
|
+
<a href="classes/LongDecimal.html#M000041">new (LongDecimal)</a><br />
|
101
101
|
<a href="classes/LongDecimalQuot.html#M000003">new! (LongDecimalQuot)</a><br />
|
102
|
-
<a href="classes/LongDecimal.html#
|
103
|
-
<a href="classes/LongDecimal.html#
|
102
|
+
<a href="classes/LongDecimal.html#M000034">new! (LongDecimal)</a><br />
|
103
|
+
<a href="classes/LongDecimal.html#M000057">next (LongDecimal)</a><br />
|
104
104
|
<a href="classes/LongDecimalQuot.html#M000005">numerator (LongDecimalQuot)</a><br />
|
105
|
-
<a href="classes/LongDecimal.html#
|
106
|
-
<a href="classes/
|
107
|
-
<a href="classes/
|
108
|
-
<a href="classes/LongMath.html#
|
109
|
-
<a href="classes/
|
110
|
-
<a href="classes/LongDecimal.html#
|
111
|
-
<a href="classes/LongDecimal.html#
|
112
|
-
<a href="classes/
|
113
|
-
<a href="classes/
|
114
|
-
<a href="classes/
|
115
|
-
<a href="classes/
|
116
|
-
<a href="classes/LongDecimal.html#
|
117
|
-
<a href="classes/
|
118
|
-
<a href="classes/
|
119
|
-
<a href="classes/
|
120
|
-
<a href="classes/
|
121
|
-
<a href="classes/
|
122
|
-
<a href="classes/
|
123
|
-
<a href="classes/LongDecimal.html#
|
124
|
-
<a href="classes/LongDecimalQuot.html#
|
125
|
-
<a href="classes/LongDecimal.html#
|
126
|
-
<a href="classes/
|
127
|
-
<a href="classes/LongDecimal.html#
|
128
|
-
<a href="classes/
|
129
|
-
<a href="classes/
|
130
|
-
<a href="classes/
|
131
|
-
<a href="classes/LongMath.html#
|
132
|
-
<a href="classes/LongMath.html#
|
133
|
-
<a href="classes/
|
134
|
-
<a href="classes/
|
135
|
-
<a href="classes/
|
136
|
-
<a href="classes/LongDecimal.html#
|
137
|
-
<a href="classes/
|
138
|
-
<a href="classes/LongDecimal.html#
|
139
|
-
<a href="classes/
|
140
|
-
<a href="classes/
|
141
|
-
<a href="classes/LongDecimal.html#M000051">to_f (LongDecimal)</a><br />
|
142
|
-
<a href="classes/LongDecimal.html#M000052">to_i (LongDecimal)</a><br />
|
105
|
+
<a href="classes/LongDecimal.html#M000036">one! (LongDecimal)</a><br />
|
106
|
+
<a href="classes/LongDecimalQuot.html#M000027">one? (LongDecimalQuot)</a><br />
|
107
|
+
<a href="classes/LongDecimal.html#M000097">one? (LongDecimal)</a><br />
|
108
|
+
<a href="classes/LongMath.html#M000133">power (LongMath)</a><br />
|
109
|
+
<a href="classes/LongMath.html#M000134">power_internal (LongMath)</a><br />
|
110
|
+
<a href="classes/LongDecimal.html#M000040">power_of_ten! (LongDecimal)</a><br />
|
111
|
+
<a href="classes/LongDecimal.html#M000058">pred (LongDecimal)</a><br />
|
112
|
+
<a href="classes/LongDecimal.html#M000068">rdiv (LongDecimal)</a><br />
|
113
|
+
<a href="classes/LongDecimalBase.html#M000106">reciprocal (LongDecimalBase)</a><br />
|
114
|
+
<a href="classes/LongDecimalQuot.html#M000023">round_to_scale (LongDecimalQuot)</a><br />
|
115
|
+
<a href="classes/LongDecimal.html#M000043">round_to_scale (LongDecimal)</a><br />
|
116
|
+
<a href="classes/LongDecimal.html#M000042">scale= (LongDecimal)</a><br />
|
117
|
+
<a href="classes/LongDecimalBase.html#M000111">scale_equal (LongDecimalBase)</a><br />
|
118
|
+
<a href="classes/LongDecimalBase.html#M000110">scale_ufo (LongDecimalBase)</a><br />
|
119
|
+
<a href="classes/LongDecimalQuot.html#M000029">sgn (LongDecimalQuot)</a><br />
|
120
|
+
<a href="classes/LongDecimal.html#M000091">sgn (LongDecimal)</a><br />
|
121
|
+
<a href="classes/LongDecimal.html#M000093">sign (LongDecimal)</a><br />
|
122
|
+
<a href="classes/LongDecimalQuot.html#M000031">sign (LongDecimalQuot)</a><br />
|
123
|
+
<a href="classes/LongDecimal.html#M000092">signum (LongDecimal)</a><br />
|
124
|
+
<a href="classes/LongDecimalQuot.html#M000030">signum (LongDecimalQuot)</a><br />
|
125
|
+
<a href="classes/LongDecimal.html#M000080">size (LongDecimal)</a><br />
|
126
|
+
<a href="classes/LongMath.html#M000117">split_to_words (LongMath)</a><br />
|
127
|
+
<a href="classes/LongDecimal.html#M000086">sqrt (LongDecimal)</a><br />
|
128
|
+
<a href="classes/LongDecimal.html#M000087">sqrt_with_remainder (LongDecimal)</a><br />
|
129
|
+
<a href="classes/LongMath.html#M000119">sqrtb (LongMath)</a><br />
|
130
|
+
<a href="classes/LongMath.html#M000120">sqrtb_with_remainder (LongMath)</a><br />
|
131
|
+
<a href="classes/LongMath.html#M000121">sqrtw (LongMath)</a><br />
|
132
|
+
<a href="classes/LongMath.html#M000122">sqrtw_with_remainder (LongMath)</a><br />
|
133
|
+
<a href="classes/LongDecimalBase.html#M000105">square (LongDecimalBase)</a><br />
|
134
|
+
<a href="classes/LongDecimal.html#M000085">square (LongDecimal)</a><br />
|
135
|
+
<a href="classes/LongDecimal.html#M000056">succ (LongDecimal)</a><br />
|
136
|
+
<a href="classes/LongDecimal.html#M000038">ten! (LongDecimal)</a><br />
|
137
|
+
<a href="classes/LongDecimalQuot.html#M000009">to_bd (LongDecimalQuot)</a><br />
|
138
|
+
<a href="classes/LongDecimal.html#M000050">to_bd (LongDecimal)</a><br />
|
139
|
+
<a href="classes/LongDecimalQuot.html#M000008">to_f (LongDecimalQuot)</a><br />
|
140
|
+
<a href="classes/LongDecimal.html#M000047">to_f (LongDecimal)</a><br />
|
143
141
|
<a href="classes/LongDecimalQuot.html#M000010">to_i (LongDecimalQuot)</a><br />
|
144
|
-
<a href="classes/
|
142
|
+
<a href="classes/LongDecimal.html#M000048">to_i (LongDecimal)</a><br />
|
145
143
|
<a href="classes/LongDecimalQuot.html#M000011">to_ld (LongDecimalQuot)</a><br />
|
146
|
-
<a href="classes/LongDecimal.html#
|
147
|
-
<a href="classes/
|
148
|
-
<a href="classes/
|
149
|
-
<a href="classes/LongDecimal.html#M000047">to_s (LongDecimal)</a><br />
|
144
|
+
<a href="classes/LongDecimal.html#M000049">to_ld (LongDecimal)</a><br />
|
145
|
+
<a href="classes/Numeric.html#M000100">to_ld (Numeric)</a><br />
|
146
|
+
<a href="classes/LongDecimalBase.html#M000101">to_r (LongDecimalBase)</a><br />
|
150
147
|
<a href="classes/LongDecimalQuot.html#M000007">to_s (LongDecimalQuot)</a><br />
|
151
|
-
<a href="classes/LongDecimal.html#
|
152
|
-
<a href="classes/LongDecimal.html#
|
153
|
-
<a href="classes/LongDecimal.html#
|
154
|
-
<a href="classes/LongDecimal.html#
|
155
|
-
<a href="classes/LongDecimal.html#
|
156
|
-
<a href="classes/LongDecimal.html#
|
157
|
-
<a href="classes/LongDecimal.html#
|
158
|
-
<a href="classes/
|
148
|
+
<a href="classes/LongDecimal.html#M000044">to_s (LongDecimal)</a><br />
|
149
|
+
<a href="classes/LongDecimal.html#M000045">to_s_10 (LongDecimal)</a><br />
|
150
|
+
<a href="classes/LongDecimal.html#M000046">to_s_internal (LongDecimal)</a><br />
|
151
|
+
<a href="classes/LongDecimal.html#M000037">two! (LongDecimal)</a><br />
|
152
|
+
<a href="classes/LongDecimal.html#M000061">unit (LongDecimal)</a><br />
|
153
|
+
<a href="classes/LongDecimal.html#M000035">zero! (LongDecimal)</a><br />
|
154
|
+
<a href="classes/LongDecimal.html#M000096">zero? (LongDecimal)</a><br />
|
155
|
+
<a href="classes/LongDecimalQuot.html#M000026">zero? (LongDecimalQuot)</a><br />
|
156
|
+
<a href="classes/LongDecimal.html#M000074">| (LongDecimal)</a><br />
|
157
|
+
<a href="classes/LongDecimal.html#M000076">~ (LongDecimal)</a><br />
|
159
158
|
</div>
|
160
159
|
</div>
|
161
160
|
</body>
|
data/lib/long-decimal.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#
|
2
2
|
# long-decimal.rb -- Arbitrary precision decimals with fixed decimal point
|
3
3
|
#
|
4
|
-
# CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/lib/long-decimal.rb,v 1.
|
5
|
-
# CVS-Label: $Name:
|
4
|
+
# CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/lib/long-decimal.rb,v 1.9 2006/03/24 17:42:07 bk1 Exp $
|
5
|
+
# CVS-Label: $Name: PRE_ALPHA_0_16 $
|
6
6
|
# Author: $Author: bk1 $ (Karl Brodowsky)
|
7
7
|
#
|
8
8
|
require "complex"
|
@@ -52,15 +52,114 @@ module LongDecimalRoundingMode
|
|
52
52
|
|
53
53
|
end # LongDecimalRoundingMode
|
54
54
|
|
55
|
+
#
|
56
|
+
# common base class for LongDecimal and LongDecimalQuot
|
57
|
+
#
|
58
|
+
class LongDecimalBase < Numeric
|
59
|
+
@RCS_ID='-$Id: long-decimal.rb,v 1.9 2006/03/24 17:42:07 bk1 Exp $-'
|
60
|
+
|
61
|
+
include LongDecimalRoundingMode
|
62
|
+
|
63
|
+
#
|
64
|
+
# convert self into Rational
|
65
|
+
# this works quite straitforward.
|
66
|
+
# in case of LongDecimal use int_val as numerator and a power of 10
|
67
|
+
# as denominator, which happens to be the way numerator and
|
68
|
+
# denominator are defined
|
69
|
+
#
|
70
|
+
def to_r
|
71
|
+
Rational(numerator, denominator)
|
72
|
+
end
|
73
|
+
|
74
|
+
#
|
75
|
+
# self + 1
|
76
|
+
#
|
77
|
+
def inc
|
78
|
+
self + 1
|
79
|
+
end
|
80
|
+
|
81
|
+
#
|
82
|
+
# self - 1
|
83
|
+
#
|
84
|
+
def dec
|
85
|
+
self - 1
|
86
|
+
end
|
87
|
+
|
88
|
+
#
|
89
|
+
# unary plus returns self
|
90
|
+
#
|
91
|
+
def +@
|
92
|
+
self
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# calculate the square of self
|
97
|
+
#
|
98
|
+
def square
|
99
|
+
self * self
|
100
|
+
end
|
101
|
+
|
102
|
+
#
|
103
|
+
# calculate the multiplicative inverse
|
104
|
+
#
|
105
|
+
def reciprocal
|
106
|
+
1 / self
|
107
|
+
end
|
108
|
+
|
109
|
+
alias inverse reciprocal
|
110
|
+
|
111
|
+
#
|
112
|
+
# square of absolute value
|
113
|
+
# happens to be the square
|
114
|
+
#
|
115
|
+
alias abs2 square
|
116
|
+
|
117
|
+
#
|
118
|
+
# Compares the two numbers.
|
119
|
+
# returns -1 if self < other
|
120
|
+
# 0 if self-other = 0
|
121
|
+
# +1 if self > other
|
122
|
+
# it needs to be observed, that
|
123
|
+
# x == y implies (x <=> y) == 0
|
124
|
+
# but not
|
125
|
+
# (x <=> y) == 0 implies x == y
|
126
|
+
# because == also takes the scale into account and considers two
|
127
|
+
# numbers only equal, if they have the same number of potentially
|
128
|
+
# zero digits after the decimal point.
|
129
|
+
#
|
130
|
+
def <=> (other)
|
131
|
+
diff = (self - other)
|
132
|
+
if (diff.kind_of? LongDecimalBase) then
|
133
|
+
diff.sgn
|
134
|
+
else
|
135
|
+
diff <=> 0
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
#
|
140
|
+
# <=>-comparison for the scales
|
141
|
+
#
|
142
|
+
def scale_ufo(other)
|
143
|
+
raise TypeError, "only works for LongDecimal or LongDecimalQuot" unless (other.kind_of? LongDecimalBase)
|
144
|
+
self.scale <=> other.scale
|
145
|
+
end
|
146
|
+
|
147
|
+
#
|
148
|
+
# ==-comparison for the scales
|
149
|
+
#
|
150
|
+
def scale_equal(other)
|
151
|
+
scale_ufo(other).zero?
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
55
156
|
#
|
56
157
|
# class for holding fixed point long decimal numbers
|
57
158
|
# these can be considered as a pair of two integer. One contains the
|
58
159
|
# digits and the other one the position of the decimal point.
|
59
160
|
#
|
60
|
-
class LongDecimal <
|
61
|
-
@RCS_ID='-$Id: long-decimal.rb,v 1.
|
62
|
-
|
63
|
-
include LongDecimalRoundingMode
|
161
|
+
class LongDecimal < LongDecimalBase
|
162
|
+
@RCS_ID='-$Id: long-decimal.rb,v 1.9 2006/03/24 17:42:07 bk1 Exp $-'
|
64
163
|
|
65
164
|
# MINUS_ONE = LongDecimal(-1)
|
66
165
|
# ZERO = LongDecimal(0)
|
@@ -365,15 +464,6 @@ class LongDecimal < Numeric
|
|
365
464
|
protected :to_s_10
|
366
465
|
protected :to_s_internal
|
367
466
|
|
368
|
-
#
|
369
|
-
# convert self into Rational
|
370
|
-
# this works quite straitforward. use int_val as numerator and a
|
371
|
-
# power of 10 as denominator
|
372
|
-
#
|
373
|
-
def to_r
|
374
|
-
Rational(numerator, denominator)
|
375
|
-
end
|
376
|
-
|
377
467
|
#
|
378
468
|
# convert self into Float
|
379
469
|
# this works straitforward by dividing int_val by power of 10 in
|
@@ -507,7 +597,6 @@ class LongDecimal < Numeric
|
|
507
597
|
idx -= 1
|
508
598
|
expon = 1 << idx
|
509
599
|
power = powers[idx]
|
510
|
-
# puts("i=#{int_part} p=#{power}\n")
|
511
600
|
while int_part >= power
|
512
601
|
id += expon
|
513
602
|
int_part = (int_part / power).to_i
|
@@ -576,20 +665,6 @@ class LongDecimal < Numeric
|
|
576
665
|
LongDecimal(int_val - 1, scale)
|
577
666
|
end
|
578
667
|
|
579
|
-
#
|
580
|
-
# self + 1
|
581
|
-
#
|
582
|
-
def inc
|
583
|
-
self + 1
|
584
|
-
end
|
585
|
-
|
586
|
-
#
|
587
|
-
# self - 1
|
588
|
-
#
|
589
|
-
def dec
|
590
|
-
self - 1
|
591
|
-
end
|
592
|
-
|
593
668
|
#
|
594
669
|
# self += 1
|
595
670
|
#
|
@@ -611,14 +686,6 @@ class LongDecimal < Numeric
|
|
611
686
|
LongDecimal(1, scale)
|
612
687
|
end
|
613
688
|
|
614
|
-
#
|
615
|
-
# apply unary +
|
616
|
-
# (returns self)
|
617
|
-
#
|
618
|
-
def +@
|
619
|
-
self
|
620
|
-
end
|
621
|
-
|
622
689
|
#
|
623
690
|
# apply unary -
|
624
691
|
# (returns negated self)
|
@@ -699,7 +766,7 @@ class LongDecimal < Numeric
|
|
699
766
|
if (q.kind_of? Float) then
|
700
767
|
q = LongDecimal(q)
|
701
768
|
end
|
702
|
-
if (q.kind_of?
|
769
|
+
if (q.kind_of? LongDecimalBase) then
|
703
770
|
if (new_scale.nil?) then
|
704
771
|
new_scale = q.scale
|
705
772
|
end
|
@@ -753,7 +820,7 @@ class LongDecimal < Numeric
|
|
753
820
|
# applying power, usually resulting in a Float as power.
|
754
821
|
#
|
755
822
|
def **(other)
|
756
|
-
if (
|
823
|
+
if (other.kind_of? LongDecimalBase) && other.is_int? then
|
757
824
|
other = other.to_i
|
758
825
|
end
|
759
826
|
if other.kind_of? Integer then
|
@@ -765,7 +832,7 @@ class LongDecimal < Numeric
|
|
765
832
|
LongDecimalQuot(Rational(10 ** new_scale, int_val ** abs_other), new_scale)
|
766
833
|
end
|
767
834
|
else
|
768
|
-
if (other.kind_of?
|
835
|
+
if (other.kind_of? LongDecimalBase) then
|
769
836
|
other = other.to_r
|
770
837
|
end
|
771
838
|
self.to_r ** other
|
@@ -965,7 +1032,7 @@ class LongDecimal < Numeric
|
|
965
1032
|
return [ y, r ]
|
966
1033
|
else
|
967
1034
|
if ((rounding_mode == ROUND_HALF_EVEN || rounding_mode == ROUND_HALF_DOWN) && rem > 0) then
|
968
|
-
|
1035
|
+
rounding_mode = ROUND_HALF_UP
|
969
1036
|
end
|
970
1037
|
y = y.round_to_scale(new_scale, rounding_mode)
|
971
1038
|
return y
|
@@ -974,15 +1041,6 @@ class LongDecimal < Numeric
|
|
974
1041
|
|
975
1042
|
private :sqrt_internal
|
976
1043
|
|
977
|
-
#
|
978
|
-
# calculate the multiplicative inverse
|
979
|
-
#
|
980
|
-
def reciprocal
|
981
|
-
1 / self
|
982
|
-
end
|
983
|
-
|
984
|
-
alias inverse reciprocal
|
985
|
-
|
986
1044
|
#
|
987
1045
|
# Absolute value
|
988
1046
|
#
|
@@ -990,49 +1048,6 @@ class LongDecimal < Numeric
|
|
990
1048
|
LongDecimal(int_val.abs, scale)
|
991
1049
|
end
|
992
1050
|
|
993
|
-
#
|
994
|
-
# square of absolute value
|
995
|
-
# happens to be the square
|
996
|
-
#
|
997
|
-
alias abs2 square
|
998
|
-
|
999
|
-
#
|
1000
|
-
# Compares the two numbers.
|
1001
|
-
# returns -1 if self < other
|
1002
|
-
# 0 if self-other = 0
|
1003
|
-
# +1 if self > other
|
1004
|
-
# it needs to be observed, that
|
1005
|
-
# x == y implies (x <=> y) == 0
|
1006
|
-
# but not
|
1007
|
-
# (x <=> y) == 0 implies x == y
|
1008
|
-
# because == also takes the scale into account and considers two
|
1009
|
-
# numbers only equal, if they have the same number of potentially
|
1010
|
-
# zero digits after the decimal point.
|
1011
|
-
#
|
1012
|
-
def <=> (other)
|
1013
|
-
diff = (self - other)
|
1014
|
-
if (diff.kind_of? LongDecimal) || (diff.kind_of? LongDecimalQuot) then
|
1015
|
-
diff.sgn
|
1016
|
-
else
|
1017
|
-
diff <=> 0
|
1018
|
-
end
|
1019
|
-
end
|
1020
|
-
|
1021
|
-
#
|
1022
|
-
# <=>-comparison for the scales
|
1023
|
-
#
|
1024
|
-
def scale_ufo(other)
|
1025
|
-
raise TypeError, "only works for LongDecimal and LongDecimalQuot" unless (other.kind_of? LongDecimal) || (other.kind_of? LongDecimalQuot)
|
1026
|
-
self.scale <=> other.scale
|
1027
|
-
end
|
1028
|
-
|
1029
|
-
#
|
1030
|
-
# ==-comparison for the scales
|
1031
|
-
#
|
1032
|
-
def scale_equal(other)
|
1033
|
-
scale_ufo(other).zero?
|
1034
|
-
end
|
1035
|
-
|
1036
1051
|
#
|
1037
1052
|
# return a pair o, s resembling other, self, but potentially
|
1038
1053
|
# converted to compatible types and ready for
|
@@ -1101,6 +1116,15 @@ class LongDecimal < Numeric
|
|
1101
1116
|
(other.kind_of? LongDecimal) && self.int_val == other.int_val && self.scale == other.scale
|
1102
1117
|
end
|
1103
1118
|
|
1119
|
+
#
|
1120
|
+
# comparison of self with other for equality
|
1121
|
+
# takes into account the values expressed by self and other and the
|
1122
|
+
# equality of the number of digits.
|
1123
|
+
#
|
1124
|
+
def ===(other)
|
1125
|
+
(other.kind_of? LongDecimal) && self.int_val == other.int_val
|
1126
|
+
end
|
1127
|
+
|
1104
1128
|
#
|
1105
1129
|
# check if the number expressed by self is 0 (zero)
|
1106
1130
|
# with any number of 0s after the decimal point.
|
@@ -1138,11 +1162,9 @@ end # LongDecimal
|
|
1138
1162
|
# performed a division. The division cannot be completed without
|
1139
1163
|
# providing additional information on how to round the result.
|
1140
1164
|
#
|
1141
|
-
class LongDecimalQuot <
|
1165
|
+
class LongDecimalQuot < LongDecimalBase
|
1142
1166
|
|
1143
|
-
@RCS_ID='-$Id: long-decimal.rb,v 1.
|
1144
|
-
|
1145
|
-
include LongDecimalRoundingMode
|
1167
|
+
@RCS_ID='-$Id: long-decimal.rb,v 1.9 2006/03/24 17:42:07 bk1 Exp $-'
|
1146
1168
|
|
1147
1169
|
#
|
1148
1170
|
# constructor
|
@@ -1212,13 +1234,6 @@ class LongDecimalQuot < Numeric
|
|
1212
1234
|
str + "[" + scale.to_s + "]"
|
1213
1235
|
end
|
1214
1236
|
|
1215
|
-
#
|
1216
|
-
# conversion to rational
|
1217
|
-
#
|
1218
|
-
def to_r
|
1219
|
-
Rational(numerator, denominator)
|
1220
|
-
end
|
1221
|
-
|
1222
1237
|
#
|
1223
1238
|
# convert into Float
|
1224
1239
|
#
|
@@ -1226,6 +1241,13 @@ class LongDecimalQuot < Numeric
|
|
1226
1241
|
to_r.to_f
|
1227
1242
|
end
|
1228
1243
|
|
1244
|
+
#
|
1245
|
+
# conversion to BigDecimal
|
1246
|
+
#
|
1247
|
+
def to_bd
|
1248
|
+
to_ld.to_bd
|
1249
|
+
end
|
1250
|
+
|
1229
1251
|
#
|
1230
1252
|
# convert into Integer
|
1231
1253
|
#
|
@@ -1241,10 +1263,17 @@ class LongDecimalQuot < Numeric
|
|
1241
1263
|
end
|
1242
1264
|
|
1243
1265
|
#
|
1244
|
-
#
|
1266
|
+
# self += 1
|
1245
1267
|
#
|
1246
|
-
def
|
1247
|
-
|
1268
|
+
def inc!
|
1269
|
+
@rat += 1
|
1270
|
+
end
|
1271
|
+
|
1272
|
+
#
|
1273
|
+
# self -= 1
|
1274
|
+
#
|
1275
|
+
def dec!
|
1276
|
+
@rat -= 1
|
1248
1277
|
end
|
1249
1278
|
|
1250
1279
|
#
|
@@ -1326,7 +1355,7 @@ class LongDecimalQuot < Numeric
|
|
1326
1355
|
# otherwise result will be Float, BigDecimal or Complex
|
1327
1356
|
#
|
1328
1357
|
def **(other)
|
1329
|
-
if (other.kind_of?
|
1358
|
+
if (other.kind_of? LongDecimalBase) then
|
1330
1359
|
if other.is_int? then
|
1331
1360
|
other = other.to_i
|
1332
1361
|
else
|
@@ -1348,9 +1377,9 @@ class LongDecimalQuot < Numeric
|
|
1348
1377
|
|
1349
1378
|
#
|
1350
1379
|
# division with remainder
|
1351
|
-
# calculate q and r such that
|
1380
|
+
# calculate q and r such that
|
1352
1381
|
# q is an integer and r is non-negative and less or equal the
|
1353
|
-
# divisor.
|
1382
|
+
# divisor.
|
1354
1383
|
#
|
1355
1384
|
def divmod(other)
|
1356
1385
|
if (other.kind_of? Complex) then
|
@@ -1359,7 +1388,7 @@ class LongDecimalQuot < Numeric
|
|
1359
1388
|
q = (self / other).to_i
|
1360
1389
|
return q, self - other * q
|
1361
1390
|
end
|
1362
|
-
|
1391
|
+
|
1363
1392
|
#
|
1364
1393
|
# division with remainder
|
1365
1394
|
# only return the remainder
|
@@ -1369,20 +1398,6 @@ class LongDecimalQuot < Numeric
|
|
1369
1398
|
r
|
1370
1399
|
end
|
1371
1400
|
|
1372
|
-
#
|
1373
|
-
# calculate the square of self
|
1374
|
-
#
|
1375
|
-
def square
|
1376
|
-
self * self
|
1377
|
-
end
|
1378
|
-
|
1379
|
-
#
|
1380
|
-
# calculate the multiplicative inverse
|
1381
|
-
#
|
1382
|
-
def reciprocal
|
1383
|
-
1 / self
|
1384
|
-
end
|
1385
|
-
|
1386
1401
|
#
|
1387
1402
|
# Absolute value
|
1388
1403
|
#
|
@@ -1392,10 +1407,9 @@ class LongDecimalQuot < Numeric
|
|
1392
1407
|
|
1393
1408
|
#
|
1394
1409
|
# square of absolute value
|
1410
|
+
# happens to be the square
|
1395
1411
|
#
|
1396
|
-
|
1397
|
-
self.abs.square
|
1398
|
-
end
|
1412
|
+
alias abs2 square
|
1399
1413
|
|
1400
1414
|
#
|
1401
1415
|
# convert LongDecimalQuot to LongDecimal with the given precision
|
@@ -1510,30 +1524,19 @@ class LongDecimalQuot < Numeric
|
|
1510
1524
|
end
|
1511
1525
|
|
1512
1526
|
#
|
1513
|
-
#
|
1514
|
-
#
|
1515
|
-
def <=> (other)
|
1516
|
-
diff = (self - other)
|
1517
|
-
if (diff.kind_of? LongDecimal) || (diff.kind_of? LongDecimalQuot) then
|
1518
|
-
diff.sgn
|
1519
|
-
else
|
1520
|
-
diff <=> 0
|
1521
|
-
end
|
1522
|
-
end
|
1523
|
-
|
1524
|
-
#
|
1525
|
-
# compare scales with <=>
|
1527
|
+
# check if the number expressed by self is 0 (zero)
|
1528
|
+
# with any number of 0s after the decimal point.
|
1526
1529
|
#
|
1527
|
-
def
|
1528
|
-
|
1529
|
-
self.scale <=> other.scale
|
1530
|
+
def zero?
|
1531
|
+
@rat.zero?
|
1530
1532
|
end
|
1531
1533
|
|
1532
1534
|
#
|
1533
|
-
# check if
|
1535
|
+
# check if the number expressed by self is 1 (one)
|
1536
|
+
# with any number of 0s after the decimal point.
|
1534
1537
|
#
|
1535
|
-
def
|
1536
|
-
|
1538
|
+
def one?
|
1539
|
+
(@rat == 1)
|
1537
1540
|
end
|
1538
1541
|
|
1539
1542
|
#
|
@@ -1791,7 +1794,6 @@ module LongMath
|
|
1791
1794
|
return sqrtb_with_remainder(xwords[0])
|
1792
1795
|
end
|
1793
1796
|
|
1794
|
-
# puts(xwords.inspect + "\n")
|
1795
1797
|
xi = (xwords[0] << n2) + xwords[1]
|
1796
1798
|
a = sqrtb_with_remainder(xi)
|
1797
1799
|
yi = a[0]
|
@@ -1811,7 +1813,6 @@ module LongMath
|
|
1811
1813
|
d = d0 + q
|
1812
1814
|
r = xi - (q * d)
|
1813
1815
|
break if (0 <= r && (r < d || was_negative))
|
1814
|
-
# puts("i=#{i} j=#{j} q=#{q} d0=#{d0} d=#{d} r=#{r} yi=#{yi} xi=#{xi}\n")
|
1815
1816
|
if (r < 0) then
|
1816
1817
|
was_negative = true
|
1817
1818
|
q = q-1
|
@@ -1820,7 +1821,6 @@ module LongMath
|
|
1820
1821
|
end
|
1821
1822
|
j += 1
|
1822
1823
|
if (j > 10) then
|
1823
|
-
# puts("i=#{i} j=#{j} q=#{q} q0=#{q0} d0=#{d0} d=#{d} r=#{r} yi=#{yi} xi=#{xi}\n")
|
1824
1824
|
break
|
1825
1825
|
end
|
1826
1826
|
end
|
@@ -1831,7 +1831,6 @@ module LongMath
|
|
1831
1831
|
end
|
1832
1832
|
|
1833
1833
|
#
|
1834
|
-
|
1835
1834
|
# find the gcd of an Integer x with b**n0 where n0 is a sufficiently
|
1836
1835
|
# high exponent
|
1837
1836
|
# such that gcd(x, b**m) = gcd(x, b**n) for all m, n >= n0
|
@@ -1940,7 +1939,6 @@ module LongMath
|
|
1940
1939
|
last_diff = diff
|
1941
1940
|
k += 1
|
1942
1941
|
pow_k = pow_k << 1
|
1943
|
-
# puts("k=#{k} pi=#{pi.to_s}\nd=#{diff}\n\n")
|
1944
1942
|
end
|
1945
1943
|
pi.round_to_scale(prec, final_mode)
|
1946
1944
|
end
|
@@ -1975,7 +1973,6 @@ module LongMath
|
|
1975
1973
|
if (iprec < prec) then
|
1976
1974
|
iprec = prec
|
1977
1975
|
end
|
1978
|
-
# puts("calc_iprec_for_exp: x=#{x} prec=#{prec} iprec=#{iprec} iprec_extra=#{iprec_extra}\n")
|
1979
1976
|
iprec
|
1980
1977
|
end
|
1981
1978
|
|
@@ -2032,7 +2029,6 @@ module LongMath
|
|
2032
2029
|
iprec = calc_iprec_for_exp(x, prec)
|
2033
2030
|
end
|
2034
2031
|
check_is_prec(iprec, "iprec")
|
2035
|
-
# puts("exp_internal: x=#{x} prec=#{prec} iprec=#{iprec}\n")
|
2036
2032
|
|
2037
2033
|
dprec = [ iprec, (prec + 1) << 1 ].min
|
2038
2034
|
|
@@ -2062,13 +2058,10 @@ module LongMath
|
|
2062
2058
|
if (i > 0) then
|
2063
2059
|
x_i = (x_i * x_k).round_to_scale(iprec, mode)
|
2064
2060
|
end
|
2065
|
-
# puts("y_k=#{y_k}\ni=#{i} j=#{j} k=#{k} x=#{x}\nx_k=#{x_k}\nx_j=#{x_j}\nx_i=#{x_i}\ns[i]=#{s[i]}\n\n")
|
2066
2061
|
y_k += (s[i] * x_i).round_to_scale(iprec, mode)
|
2067
2062
|
end
|
2068
|
-
# puts("y_k = #{y_k}\n")
|
2069
2063
|
k.times do |i|
|
2070
2064
|
y_k = y_k.square.round_to_scale(iprec, mode)
|
2071
|
-
# puts("i=#{i} y_k = #{y_k}\n")
|
2072
2065
|
end
|
2073
2066
|
y = y_k.round_to_scale(prec, final_mode)
|
2074
2067
|
y
|
@@ -2231,7 +2224,7 @@ module LongMath
|
|
2231
2224
|
# puts("y=#{y} s=#{s} f=#{factor} sum=#{sum}\n")
|
2232
2225
|
return y.round_to_scale(prec, final_mode)
|
2233
2226
|
|
2234
|
-
end
|
2227
|
+
end # log_internal
|
2235
2228
|
|
2236
2229
|
#
|
2237
2230
|
# calc the power of x with exponent y to the given precision as
|
@@ -2281,7 +2274,8 @@ module LongMath
|
|
2281
2274
|
xy = exp_internal(logx_y, prec + 1, mode)
|
2282
2275
|
# puts("power_internal: x=#{x} logx=#{logx} y=#{y} logx_y=#{logx_y} xy=#{xy} iprec=#{iprec} prec=#{prec}\n")
|
2283
2276
|
xy.round_to_scale(prec, final_mode)
|
2284
|
-
|
2277
|
+
|
2278
|
+
end # power_internal
|
2285
2279
|
|
2286
2280
|
end # LongMath
|
2287
2281
|
|