long-decimal 0.00.15 → 0.00.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|