long-decimal 0.00.11 → 0.00.12
Sign up to get free protection for your applications and to get access to all the features.
- data/README +6 -3
- data/VERSION +1 -1
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +5 -5
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000133.html +22 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000135.html +22 -0
- data/doc/classes/LongMath.html +78 -29
- data/doc/classes/LongMath.src/M000001.html +1 -1
- data/doc/classes/LongMath.src/M000002.html +1 -1
- data/doc/classes/LongMath.src/M000003.html +1 -1
- data/doc/classes/LongMath.src/M000004.html +1 -1
- data/doc/classes/LongMath.src/M000005.html +1 -1
- data/doc/classes/LongMath.src/M000006.html +1 -1
- data/doc/classes/LongMath.src/M000007.html +1 -1
- data/doc/classes/LongMath.src/M000008.html +1 -1
- data/doc/classes/LongMath.src/M000009.html +1 -1
- data/doc/classes/LongMath.src/M000010.html +1 -1
- data/doc/classes/LongMath.src/M000011.html +2 -2
- data/doc/classes/LongMath.src/M000012.html +1 -1
- data/doc/classes/LongMath.src/M000013.html +1 -1
- data/doc/classes/LongMath.src/M000014.html +1 -1
- data/doc/classes/LongMath.src/M000015.html +1 -1
- data/doc/classes/LongMath.src/M000016.html +14 -11
- data/doc/classes/LongMath.src/M000017.html +10 -17
- data/doc/classes/LongMath.src/M000018.html +1 -1
- data/doc/classes/LongMath.src/M000019.html +2 -1
- data/doc/classes/LongMath.src/M000021.html +51 -1
- data/doc/classes/LongMath.src/M000022.html +12 -9
- data/doc/classes/LongMath.src/M000023.html +28 -5
- data/doc/classes/LongMath.src/M000024.html +22 -0
- data/doc/classes/LongMath.src/M000025.html +18 -0
- data/doc/classes/LongMath/LongDecimal.html +371 -371
- data/doc/classes/LongMath/LongDecimal.src/M000058.html +18 -0
- data/doc/classes/LongMath/LongDecimal.src/M000059.html +18 -0
- data/doc/classes/LongMath/LongDecimal.src/M000060.html +18 -0
- data/doc/classes/LongMath/LongDecimal.src/M000061.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000062.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000063.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000064.html +4 -6
- data/doc/classes/LongMath/LongDecimal.src/M000065.html +4 -95
- data/doc/classes/LongMath/LongDecimal.src/M000066.html +6 -20
- data/doc/classes/LongMath/LongDecimal.src/M000067.html +92 -24
- data/doc/classes/LongMath/LongDecimal.src/M000068.html +17 -18
- data/doc/classes/LongMath/LongDecimal.src/M000069.html +27 -4
- data/doc/classes/LongMath/LongDecimal.src/M000070.html +19 -13
- data/doc/classes/LongMath/LongDecimal.src/M000071.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000072.html +13 -22
- data/doc/classes/LongMath/LongDecimal.src/M000073.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000074.html +24 -4
- data/doc/classes/LongMath/LongDecimal.src/M000075.html +4 -6
- data/doc/classes/LongMath/LongDecimal.src/M000076.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000077.html +6 -15
- data/doc/classes/LongMath/LongDecimal.src/M000078.html +4 -32
- data/doc/classes/LongMath/LongDecimal.src/M000079.html +14 -14
- data/doc/classes/LongMath/LongDecimal.src/M000080.html +31 -12
- data/doc/classes/LongMath/LongDecimal.src/M000081.html +15 -4
- data/doc/classes/LongMath/LongDecimal.src/M000082.html +27 -0
- data/doc/classes/LongMath/LongDecimal.src/M000083.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000085.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000086.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000087.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000088.html +18 -0
- data/doc/classes/LongMath/LongDecimal.src/M000089.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000090.html +4 -8
- data/doc/classes/LongMath/LongDecimal.src/M000091.html +4 -9
- data/doc/classes/LongMath/LongDecimal.src/M000092.html +6 -7
- data/doc/classes/LongMath/LongDecimal.src/M000093.html +6 -6
- data/doc/classes/LongMath/LongDecimal.src/M000094.html +9 -4
- data/doc/classes/LongMath/LongDecimal.src/M000095.html +7 -13
- data/doc/classes/LongMath/LongDecimal.src/M000096.html +4 -9
- data/doc/classes/LongMath/LongDecimal.src/M000097.html +13 -7
- data/doc/classes/LongMath/LongDecimal.src/M000098.html +7 -18
- data/doc/classes/LongMath/LongDecimal.src/M000099.html +8 -7
- data/doc/classes/LongMath/LongDecimal.src/M000100.html +20 -5
- data/doc/classes/LongMath/LongDecimal.src/M000101.html +7 -8
- data/doc/classes/LongMath/LongDecimal.src/M000102.html +5 -9
- data/doc/classes/LongMath/LongDecimal.src/M000103.html +5 -5
- data/doc/classes/LongMath/LongDecimal.src/M000104.html +9 -4
- data/doc/classes/LongMath/LongDecimal.src/M000105.html +8 -6
- data/doc/classes/LongMath/LongDecimal.src/M000106.html +4 -7
- data/doc/classes/LongMath/LongDecimal.src/M000107.html +7 -4
- data/doc/classes/LongMath/LongDecimal.src/M000108.html +7 -4
- data/doc/classes/LongMath/LongDecimal.src/M000109.html +4 -9
- data/doc/classes/LongMath/LongDecimal.src/M000110.html +4 -9
- data/doc/classes/LongMath/LongDecimal.src/M000111.html +9 -5
- data/doc/classes/LongMath/LongDecimal.src/M000112.html +7 -7
- data/doc/classes/LongMath/LongDecimal.src/M000113.html +5 -4
- data/doc/classes/LongMath/LongDecimal.src/M000114.html +8 -15
- data/doc/classes/LongMath/LongDecimal.src/M000115.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000116.html +15 -8
- data/doc/classes/LongMath/LongDecimal.src/M000117.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000119.html +4 -9
- data/doc/classes/LongMath/LongDecimal.src/M000121.html +9 -4
- data/doc/classes/LongMath/LongDecimal.src/M000122.html +5 -33
- data/doc/classes/LongMath/LongDecimal.src/M000123.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000124.html +33 -4
- data/doc/classes/LongMath/LongDecimal.src/M000125.html +4 -33
- data/doc/classes/LongMath/LongDecimal.src/M000126.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000128.html +18 -0
- data/doc/classes/LongMath/LongDecimal.src/M000129.html +19 -0
- data/doc/classes/LongMath/LongDecimal.src/M000130.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000131.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000132.html +4 -4
- data/doc/classes/LongMath/LongDecimal.src/M000133.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.html +168 -168
- data/doc/classes/LongMath/LongDecimalQuot.src/M000026.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000027.html +14 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000028.html +4 -5
- data/doc/classes/LongMath/LongDecimalQuot.src/M000029.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000030.html +5 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000031.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000032.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000033.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000034.html +4 -8
- data/doc/classes/LongMath/LongDecimalQuot.src/M000035.html +4 -9
- data/doc/classes/LongMath/LongDecimalQuot.src/M000036.html +6 -7
- data/doc/classes/LongMath/LongDecimalQuot.src/M000037.html +5 -5
- data/doc/classes/LongMath/LongDecimalQuot.src/M000038.html +5 -5
- data/doc/classes/LongMath/LongDecimalQuot.src/M000039.html +7 -19
- data/doc/classes/LongMath/LongDecimalQuot.src/M000040.html +8 -7
- data/doc/classes/LongMath/LongDecimalQuot.src/M000041.html +21 -5
- data/doc/classes/LongMath/LongDecimalQuot.src/M000042.html +8 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000043.html +5 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000044.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000045.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000046.html +4 -63
- data/doc/classes/LongMath/LongDecimalQuot.src/M000047.html +4 -22
- data/doc/classes/LongMath/LongDecimalQuot.src/M000048.html +63 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000049.html +20 -7
- data/doc/classes/LongMath/LongDecimalQuot.src/M000050.html +4 -5
- data/doc/classes/LongMath/LongDecimalQuot.src/M000051.html +9 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000052.html +5 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000053.html +4 -4
- data/doc/classes/LongMath/LongDecimalQuot.src/M000054.html +1 -1
- data/doc/classes/LongMath/LongDecimalQuot.src/M000055.html +1 -1
- data/doc/classes/LongMath/LongDecimalQuot.src/M000056.html +18 -0
- data/doc/classes/LongMath/LongDecimalQuot.src/M000057.html +18 -0
- data/doc/classes/LongMath/LongDecimalQuot.src/M000058.html +1 -1
- data/doc/classes/LongMath/LongDecimalQuot.src/M000059.html +4 -4
- data/doc/classes/LongMath/Numeric.html +5 -5
- data/doc/classes/LongMath/Numeric.src/M000132.html +18 -0
- data/doc/classes/LongMath/Numeric.src/M000134.html +18 -0
- data/doc/created.rid +1 -1
- data/doc/files/lib/longdecimal_rb.html +2 -2
- data/doc/fr_method_index.html +115 -113
- data/lib/longdecimal.rb +84 -34
- data/test/testlongdecimal.rb +271 -15
- metadata +17 -2
@@ -96,7 +96,7 @@
|
|
96
96
|
<h3 class="section-bar">Methods</h3>
|
97
97
|
|
98
98
|
<div class="name-list">
|
99
|
-
<a href="#
|
99
|
+
<a href="#M000134">to_ld</a>
|
100
100
|
</div>
|
101
101
|
</div>
|
102
102
|
|
@@ -118,12 +118,12 @@
|
|
118
118
|
<div id="methods">
|
119
119
|
<h3 class="section-bar">Public Instance methods</h3>
|
120
120
|
|
121
|
-
<div id="method-
|
122
|
-
<a name="
|
121
|
+
<div id="method-M000134" class="method-detail">
|
122
|
+
<a name="M000134"></a>
|
123
123
|
|
124
124
|
<div class="method-heading">
|
125
|
-
<a href="Numeric.src/
|
126
|
-
onclick="popupCode('Numeric.src/
|
125
|
+
<a href="Numeric.src/M000134.html" target="Code" class="method-signature"
|
126
|
+
onclick="popupCode('Numeric.src/M000134.html');return false;">
|
127
127
|
<span class="method-name">to_ld</span><span class="method-args">()</span>
|
128
128
|
</a>
|
129
129
|
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>to_ld (LongMath::Numeric)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 2190</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ld</span>
|
15
|
+
<span class="ruby-constant">LongDecimal</span>(<span class="ruby-keyword kw">self</span>)
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>to_ld (LongMath::Numeric)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 2240</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ld</span>
|
15
|
+
<span class="ruby-constant">LongDecimal</span>(<span class="ruby-keyword kw">self</span>)
|
16
|
+
<span class="ruby-keyword kw">end</span></pre>
|
17
|
+
</body>
|
18
|
+
</html>
|
data/doc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
Sat Mar 18 07:40:45 CET 2006
|
@@ -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>Sat Mar 18 07:40:05 CET 2006</td>
|
60
60
|
</tr>
|
61
61
|
</table>
|
62
62
|
</div>
|
@@ -87,7 +87,7 @@ point
|
|
87
87
|
</p>
|
88
88
|
<p>
|
89
89
|
CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/lib/longdecimal.rb,v
|
90
|
-
1.
|
90
|
+
1.9 2006/03/18 06:03:58 bk1 Exp $ CVS-Label: $Name: PRE_ALPHA_0_12 $
|
91
91
|
Author: $Author: bk1 $ (Karl Brodowsky)
|
92
92
|
</p>
|
93
93
|
|
data/doc/fr_method_index.html
CHANGED
@@ -20,139 +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/LongMath/
|
24
|
-
<a href="classes/LongMath/
|
25
|
-
<a href="classes/LongMath/LongDecimal.html#
|
26
|
-
<a href="classes/LongMath/
|
27
|
-
<a href="classes/LongMath/
|
28
|
-
<a href="classes/LongMath/
|
29
|
-
<a href="classes/LongMath/
|
30
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
31
|
-
<a href="classes/LongMath/LongDecimal.html#
|
32
|
-
<a href="classes/LongMath/
|
33
|
-
<a href="classes/LongMath/
|
34
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
35
|
-
<a href="classes/LongMath/LongDecimal.html#
|
36
|
-
<a href="classes/LongMath/
|
37
|
-
<a href="classes/LongMath/
|
38
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
39
|
-
<a href="classes/LongMath/LongDecimal.html#
|
40
|
-
<a href="classes/LongMath/LongDecimal.html#
|
41
|
-
<a href="classes/LongMath/LongDecimal.html#
|
42
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
43
|
-
<a href="classes/LongDecimalRoundingMode/RoundingModeClass.html#
|
44
|
-
<a href="classes/LongMath/LongDecimal.html#
|
45
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
46
|
-
<a href="classes/LongMath/LongDecimal.html#
|
47
|
-
<a href="classes/LongMath.html#
|
48
|
-
<a href="classes/LongMath.html#
|
49
|
-
<a href="classes/LongMath/LongDecimal.html#
|
50
|
-
<a href="classes/LongMath/LongDecimal.html#
|
51
|
-
<a href="classes/LongMath/LongDecimal.html#
|
52
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
53
|
-
<a href="classes/LongMath/LongDecimal.html#
|
54
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
55
|
-
<a href="classes/LongMath/LongDecimal.html#
|
23
|
+
<a href="classes/LongMath/LongDecimal.html#M000102">% (LongMath::LongDecimal)</a><br />
|
24
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000043">% (LongMath::LongDecimalQuot)</a><br />
|
25
|
+
<a href="classes/LongMath/LongDecimal.html#M000103">& (LongMath::LongDecimal)</a><br />
|
26
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000039">* (LongMath::LongDecimalQuot)</a><br />
|
27
|
+
<a href="classes/LongMath/LongDecimal.html#M000095">* (LongMath::LongDecimal)</a><br />
|
28
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000041">** (LongMath::LongDecimalQuot)</a><br />
|
29
|
+
<a href="classes/LongMath/LongDecimal.html#M000100">** (LongMath::LongDecimal)</a><br />
|
30
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000037">+ (LongMath::LongDecimalQuot)</a><br />
|
31
|
+
<a href="classes/LongMath/LongDecimal.html#M000093">+ (LongMath::LongDecimal)</a><br />
|
32
|
+
<a href="classes/LongMath/LongDecimal.html#M000091">+@ (LongMath::LongDecimal)</a><br />
|
33
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000035">+@ (LongMath::LongDecimalQuot)</a><br />
|
34
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000038">- (LongMath::LongDecimalQuot)</a><br />
|
35
|
+
<a href="classes/LongMath/LongDecimal.html#M000094">- (LongMath::LongDecimal)</a><br />
|
36
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000036">-@ (LongMath::LongDecimalQuot)</a><br />
|
37
|
+
<a href="classes/LongMath/LongDecimal.html#M000092">-@ (LongMath::LongDecimal)</a><br />
|
38
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000040">/ (LongMath::LongDecimalQuot)</a><br />
|
39
|
+
<a href="classes/LongMath/LongDecimal.html#M000099">/ (LongMath::LongDecimal)</a><br />
|
40
|
+
<a href="classes/LongMath/LongDecimal.html#M000107"><< (LongMath::LongDecimal)</a><br />
|
41
|
+
<a href="classes/LongMath/LongDecimal.html#M000121"><=> (LongMath::LongDecimal)</a><br />
|
42
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000051"><=> (LongMath::LongDecimalQuot)</a><br />
|
43
|
+
<a href="classes/LongDecimalRoundingMode/RoundingModeClass.html#M000135"><=> (LongDecimalRoundingMode::RoundingModeClass)</a><br />
|
44
|
+
<a href="classes/LongMath/LongDecimal.html#M000129">== (LongMath::LongDecimal)</a><br />
|
45
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000050">== (LongMath::LongDecimalQuot)</a><br />
|
46
|
+
<a href="classes/LongMath/LongDecimal.html#M000108">>> (LongMath::LongDecimal)</a><br />
|
47
|
+
<a href="classes/LongMath.html#M000024">LongDecimal (LongMath)</a><br />
|
48
|
+
<a href="classes/LongMath.html#M000025">LongDecimalQuot (LongMath)</a><br />
|
49
|
+
<a href="classes/LongMath/LongDecimal.html#M000109">[] (LongMath::LongDecimal)</a><br />
|
50
|
+
<a href="classes/LongMath/LongDecimal.html#M000105">^ (LongMath::LongDecimal)</a><br />
|
51
|
+
<a href="classes/LongMath/LongDecimal.html#M000119">abs (LongMath::LongDecimal)</a><br />
|
52
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000046">abs (LongMath::LongDecimalQuot)</a><br />
|
53
|
+
<a href="classes/LongMath/LongDecimal.html#M000120">abs2 (LongMath::LongDecimal)</a><br />
|
54
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000047">abs2 (LongMath::LongDecimalQuot)</a><br />
|
55
|
+
<a href="classes/LongMath/LongDecimal.html#M000082">anti_equalize_scale (LongMath::LongDecimal)</a><br />
|
56
|
+
<a href="classes/LongMath.html#M000016">calc_iprec_for_exp (LongMath)</a><br />
|
56
57
|
<a href="classes/LongMath.html#M000014">calc_pi (LongMath)</a><br />
|
57
58
|
<a href="classes/LongMath.html#M000002">check_is_int (LongMath)</a><br />
|
58
59
|
<a href="classes/LongMath.html#M000003">check_is_ld (LongMath)</a><br />
|
59
60
|
<a href="classes/LongMath.html#M000005">check_is_mode (LongMath)</a><br />
|
60
61
|
<a href="classes/LongMath.html#M000004">check_is_prec (LongMath)</a><br />
|
61
62
|
<a href="classes/LongMath.html#M000001">check_word_len (LongMath)</a><br />
|
62
|
-
<a href="classes/LongMath/
|
63
|
-
<a href="classes/LongMath/
|
64
|
-
<a href="classes/LongMath/LongDecimal.html#
|
65
|
-
<a href="classes/LongMath/LongDecimal.html#
|
66
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
67
|
-
<a href="classes/LongMath/LongDecimal.html#
|
68
|
-
<a href="classes/LongMath/LongDecimal.html#
|
69
|
-
<a href="classes/LongMath/LongDecimal.html#
|
70
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
71
|
-
<a href="classes/LongMath/LongDecimal.html#
|
72
|
-
<a href="classes/LongMath/LongDecimal.html#
|
63
|
+
<a href="classes/LongMath/LongDecimal.html#M000124">coerce (LongMath::LongDecimal)</a><br />
|
64
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000049">coerce (LongMath::LongDecimalQuot)</a><br />
|
65
|
+
<a href="classes/LongMath/LongDecimal.html#M000087">dec (LongMath::LongDecimal)</a><br />
|
66
|
+
<a href="classes/LongMath/LongDecimal.html#M000089">dec! (LongMath::LongDecimal)</a><br />
|
67
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000029">denominator (LongMath::LongDecimalQuot)</a><br />
|
68
|
+
<a href="classes/LongMath/LongDecimal.html#M000078">denominator (LongMath::LongDecimal)</a><br />
|
69
|
+
<a href="classes/LongMath/LongDecimal.html#M000096">divide (LongMath::LongDecimal)</a><br />
|
70
|
+
<a href="classes/LongMath/LongDecimal.html#M000097">divide_s (LongMath::LongDecimal)</a><br />
|
71
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000042">divmod (LongMath::LongDecimalQuot)</a><br />
|
72
|
+
<a href="classes/LongMath/LongDecimal.html#M000101">divmod (LongMath::LongDecimal)</a><br />
|
73
|
+
<a href="classes/LongMath/LongDecimal.html#M000081">equalize_scale (LongMath::LongDecimal)</a><br />
|
73
74
|
<a href="classes/LongMath.html#M000015">exp (LongMath)</a><br />
|
74
75
|
<a href="classes/LongMath.html#M000017">exp_internal (LongMath)</a><br />
|
75
76
|
<a href="classes/LongMath.html#M000012">gcd_with_high_power (LongMath)</a><br />
|
76
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
77
|
-
<a href="classes/LongMath/LongDecimal.html#
|
78
|
-
<a href="classes/LongMath/LongDecimal.html#
|
79
|
-
<a href="classes/LongMath/LongDecimal.html#
|
80
|
-
<a href="classes/LongMath/
|
81
|
-
<a href="classes/LongMath/
|
82
|
-
<a href="classes/LongMath/LongDecimal.html#
|
83
|
-
<a href="classes/LongMath/LongDecimal.html#
|
84
|
-
<a href="classes/LongMath/LongDecimal.html#
|
85
|
-
<a href="classes/LongMath/LongDecimal.html#
|
86
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
77
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000058">hash (LongMath::LongDecimalQuot)</a><br />
|
78
|
+
<a href="classes/LongMath/LongDecimal.html#M000132">hash (LongMath::LongDecimal)</a><br />
|
79
|
+
<a href="classes/LongMath/LongDecimal.html#M000086">inc (LongMath::LongDecimal)</a><br />
|
80
|
+
<a href="classes/LongMath/LongDecimal.html#M000088">inc! (LongMath::LongDecimal)</a><br />
|
81
|
+
<a href="classes/LongMath/LongDecimal.html#M000133">inspect (LongMath::LongDecimal)</a><br />
|
82
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000059">inspect (LongMath::LongDecimalQuot)</a><br />
|
83
|
+
<a href="classes/LongMath/LongDecimal.html#M000080">int_digits10 (LongMath::LongDecimal)</a><br />
|
84
|
+
<a href="classes/LongMath/LongDecimal.html#M000079">int_digits2 (LongMath::LongDecimal)</a><br />
|
85
|
+
<a href="classes/LongMath/LongDecimal.html#M000118">inverse (LongMath::LongDecimal)</a><br />
|
86
|
+
<a href="classes/LongMath/LongDecimal.html#M000125">is_int? (LongMath::LongDecimal)</a><br />
|
87
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000054">is_int? (LongMath::LongDecimalQuot)</a><br />
|
87
88
|
<a href="classes/LongMath.html#M000018">log (LongMath)</a><br />
|
88
89
|
<a href="classes/LongMath.html#M000019">log10 (LongMath)</a><br />
|
89
90
|
<a href="classes/LongMath.html#M000020">log2 (LongMath)</a><br />
|
90
91
|
<a href="classes/LongMath.html#M000021">log_internal (LongMath)</a><br />
|
91
92
|
<a href="classes/LongMath.html#M000007">merge_from_words (LongMath)</a><br />
|
92
|
-
<a href="classes/LongMath/LongDecimal.html#
|
93
|
-
<a href="classes/LongMath/LongDecimal.html#
|
94
|
-
<a href="classes/LongMath/LongDecimal.html#
|
95
|
-
<a href="classes/LongMath/LongDecimal.html#
|
96
|
-
<a href="classes/LongMath/LongDecimal.html#
|
93
|
+
<a href="classes/LongMath/LongDecimal.html#M000065">minus_one! (LongMath::LongDecimal)</a><br />
|
94
|
+
<a href="classes/LongMath/LongDecimal.html#M000111">move_point_left (LongMath::LongDecimal)</a><br />
|
95
|
+
<a href="classes/LongMath/LongDecimal.html#M000113">move_point_left_int (LongMath::LongDecimal)</a><br />
|
96
|
+
<a href="classes/LongMath/LongDecimal.html#M000112">move_point_right (LongMath::LongDecimal)</a><br />
|
97
|
+
<a href="classes/LongMath/LongDecimal.html#M000114">move_point_right_int (LongMath::LongDecimal)</a><br />
|
97
98
|
<a href="classes/LongMath.html#M000013">multiplicity_of_factor (LongMath)</a><br />
|
98
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
99
|
-
<a href="classes/LongMath/LongDecimal.html#
|
100
|
-
<a href="classes/LongMath/
|
101
|
-
<a href="classes/LongMath/
|
102
|
-
<a href="classes/LongMath/LongDecimal.html#
|
103
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
104
|
-
<a href="classes/LongMath/LongDecimal.html#
|
105
|
-
<a href="classes/LongMath/LongDecimal.html#
|
106
|
-
<a href="classes/LongMath.html#
|
107
|
-
<a href="classes/LongMath
|
108
|
-
<a href="classes/LongMath/LongDecimal.html#
|
109
|
-
<a href="classes/LongMath/LongDecimal.html#
|
110
|
-
<a href="classes/LongMath/
|
111
|
-
<a href="classes/LongMath/
|
112
|
-
<a href="classes/LongMath/LongDecimal.html#
|
113
|
-
<a href="classes/LongMath/
|
114
|
-
<a href="classes/LongMath/
|
115
|
-
<a href="classes/LongMath/LongDecimal.html#
|
116
|
-
<a href="classes/LongMath/
|
117
|
-
<a href="classes/LongMath/
|
118
|
-
<a href="classes/LongMath/
|
119
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
120
|
-
<a href="classes/LongMath/LongDecimal.html#
|
121
|
-
<a href="classes/LongMath/LongDecimalQuot.html#M000055">
|
122
|
-
<a href="classes/LongMath/
|
123
|
-
<a href="classes/LongMath/
|
124
|
-
<a href="classes/LongMath/
|
125
|
-
<a href="classes/LongMath/LongDecimal.html#
|
99
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000027">new (LongMath::LongDecimalQuot)</a><br />
|
100
|
+
<a href="classes/LongMath/LongDecimal.html#M000067">new (LongMath::LongDecimal)</a><br />
|
101
|
+
<a href="classes/LongMath/LongDecimal.html#M000060">new! (LongMath::LongDecimal)</a><br />
|
102
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000026">new! (LongMath::LongDecimalQuot)</a><br />
|
103
|
+
<a href="classes/LongMath/LongDecimal.html#M000084">next (LongMath::LongDecimal)</a><br />
|
104
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000028">numerator (LongMath::LongDecimalQuot)</a><br />
|
105
|
+
<a href="classes/LongMath/LongDecimal.html#M000062">one! (LongMath::LongDecimal)</a><br />
|
106
|
+
<a href="classes/LongMath/LongDecimal.html#M000131">one? (LongMath::LongDecimal)</a><br />
|
107
|
+
<a href="classes/LongMath.html#M000022">power (LongMath)</a><br />
|
108
|
+
<a href="classes/LongMath.html#M000023">power_internal (LongMath)</a><br />
|
109
|
+
<a href="classes/LongMath/LongDecimal.html#M000066">power_of_ten! (LongMath::LongDecimal)</a><br />
|
110
|
+
<a href="classes/LongMath/LongDecimal.html#M000085">pred (LongMath::LongDecimal)</a><br />
|
111
|
+
<a href="classes/LongMath/LongDecimal.html#M000098">rdiv (LongMath::LongDecimal)</a><br />
|
112
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000045">reciprocal (LongMath::LongDecimalQuot)</a><br />
|
113
|
+
<a href="classes/LongMath/LongDecimal.html#M000117">reciprocal (LongMath::LongDecimal)</a><br />
|
114
|
+
<a href="classes/LongMath/LongDecimal.html#M000069">round_to_scale (LongMath::LongDecimal)</a><br />
|
115
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000048">round_to_scale (LongMath::LongDecimalQuot)</a><br />
|
116
|
+
<a href="classes/LongMath/LongDecimal.html#M000068">scale= (LongMath::LongDecimal)</a><br />
|
117
|
+
<a href="classes/LongMath/LongDecimal.html#M000123">scale_equal (LongMath::LongDecimal)</a><br />
|
118
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000053">scale_equal (LongMath::LongDecimalQuot)</a><br />
|
119
|
+
<a href="classes/LongMath/LongDecimal.html#M000122">scale_ufo (LongMath::LongDecimal)</a><br />
|
120
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000052">scale_ufo (LongMath::LongDecimalQuot)</a><br />
|
121
|
+
<a href="classes/LongMath/LongDecimal.html#M000126">sgn (LongMath::LongDecimal)</a><br />
|
122
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000055">sgn (LongMath::LongDecimalQuot)</a><br />
|
123
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000057">sign (LongMath::LongDecimalQuot)</a><br />
|
124
|
+
<a href="classes/LongMath/LongDecimal.html#M000128">sign (LongMath::LongDecimal)</a><br />
|
125
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000056">signum (LongMath::LongDecimalQuot)</a><br />
|
126
|
+
<a href="classes/LongMath/LongDecimal.html#M000127">signum (LongMath::LongDecimal)</a><br />
|
127
|
+
<a href="classes/LongMath/LongDecimal.html#M000110">size (LongMath::LongDecimal)</a><br />
|
126
128
|
<a href="classes/LongMath.html#M000006">split_to_words (LongMath)</a><br />
|
127
|
-
<a href="classes/LongMath/LongDecimal.html#
|
129
|
+
<a href="classes/LongMath/LongDecimal.html#M000116">sqrt (LongMath::LongDecimal)</a><br />
|
128
130
|
<a href="classes/LongMath.html#M000008">sqrtb (LongMath)</a><br />
|
129
131
|
<a href="classes/LongMath.html#M000009">sqrtb_with_remainder (LongMath)</a><br />
|
130
132
|
<a href="classes/LongMath.html#M000010">sqrtw (LongMath)</a><br />
|
131
133
|
<a href="classes/LongMath.html#M000011">sqrtw_with_remainder (LongMath)</a><br />
|
132
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
133
|
-
<a href="classes/LongMath/LongDecimal.html#
|
134
|
-
<a href="classes/LongMath/LongDecimal.html#
|
135
|
-
<a href="classes/LongMath/LongDecimal.html#
|
136
|
-
<a href="classes/LongMath/LongDecimal.html#
|
137
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
138
|
-
<a href="classes/LongMath/LongDecimal.html#
|
139
|
-
<a href="classes/LongMath/LongDecimal.html#
|
140
|
-
<a href="classes/LongMath/LongDecimalQuot.html#
|
141
|
-
<a href="classes/LongMath/
|
142
|
-
<a href="classes/LongMath/
|
143
|
-
<a href="classes/LongMath/
|
144
|
-
<a href="classes/LongMath/
|
145
|
-
<a href="classes/LongMath/
|
146
|
-
<a href="classes/LongMath/
|
147
|
-
<a href="classes/LongMath/
|
148
|
-
<a href="classes/LongMath/LongDecimal.html#
|
149
|
-
<a href="classes/LongMath/LongDecimal.html#
|
150
|
-
<a href="classes/LongMath/LongDecimal.html#
|
151
|
-
<a href="classes/LongMath/LongDecimal.html#
|
152
|
-
<a href="classes/LongMath/LongDecimal.html#
|
153
|
-
<a href="classes/LongMath/LongDecimal.html#
|
154
|
-
<a href="classes/LongMath/LongDecimal.html#
|
155
|
-
<a href="classes/LongMath/LongDecimal.html#
|
134
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000044">square (LongMath::LongDecimalQuot)</a><br />
|
135
|
+
<a href="classes/LongMath/LongDecimal.html#M000115">square (LongMath::LongDecimal)</a><br />
|
136
|
+
<a href="classes/LongMath/LongDecimal.html#M000083">succ (LongMath::LongDecimal)</a><br />
|
137
|
+
<a href="classes/LongMath/LongDecimal.html#M000064">ten! (LongMath::LongDecimal)</a><br />
|
138
|
+
<a href="classes/LongMath/LongDecimal.html#M000077">to_bd (LongMath::LongDecimal)</a><br />
|
139
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000032">to_f (LongMath::LongDecimalQuot)</a><br />
|
140
|
+
<a href="classes/LongMath/LongDecimal.html#M000074">to_f (LongMath::LongDecimal)</a><br />
|
141
|
+
<a href="classes/LongMath/LongDecimal.html#M000075">to_i (LongMath::LongDecimal)</a><br />
|
142
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000033">to_i (LongMath::LongDecimalQuot)</a><br />
|
143
|
+
<a href="classes/LongMath/Numeric.html#M000134">to_ld (LongMath::Numeric)</a><br />
|
144
|
+
<a href="classes/LongMath/LongDecimal.html#M000076">to_ld (LongMath::LongDecimal)</a><br />
|
145
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000034">to_ld (LongMath::LongDecimalQuot)</a><br />
|
146
|
+
<a href="classes/LongMath/LongDecimal.html#M000073">to_r (LongMath::LongDecimal)</a><br />
|
147
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000031">to_r (LongMath::LongDecimalQuot)</a><br />
|
148
|
+
<a href="classes/LongMath/LongDecimalQuot.html#M000030">to_s (LongMath::LongDecimalQuot)</a><br />
|
149
|
+
<a href="classes/LongMath/LongDecimal.html#M000070">to_s (LongMath::LongDecimal)</a><br />
|
150
|
+
<a href="classes/LongMath/LongDecimal.html#M000071">to_s_10 (LongMath::LongDecimal)</a><br />
|
151
|
+
<a href="classes/LongMath/LongDecimal.html#M000072">to_s_internal (LongMath::LongDecimal)</a><br />
|
152
|
+
<a href="classes/LongMath/LongDecimal.html#M000063">two! (LongMath::LongDecimal)</a><br />
|
153
|
+
<a href="classes/LongMath/LongDecimal.html#M000090">unit (LongMath::LongDecimal)</a><br />
|
154
|
+
<a href="classes/LongMath/LongDecimal.html#M000061">zero! (LongMath::LongDecimal)</a><br />
|
155
|
+
<a href="classes/LongMath/LongDecimal.html#M000130">zero? (LongMath::LongDecimal)</a><br />
|
156
|
+
<a href="classes/LongMath/LongDecimal.html#M000104">| (LongMath::LongDecimal)</a><br />
|
157
|
+
<a href="classes/LongMath/LongDecimal.html#M000106">~ (LongMath::LongDecimal)</a><br />
|
156
158
|
</div>
|
157
159
|
</div>
|
158
160
|
</body>
|
data/lib/longdecimal.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#
|
2
2
|
# longdecimal.rb -- Arbitrary precision decimals with fixed decimal point
|
3
3
|
#
|
4
|
-
# CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/lib/longdecimal.rb,v 1.
|
5
|
-
# CVS-Label: $Name:
|
4
|
+
# CVS-ID: $Header: /var/cvs/long-decimal/long-decimal/lib/longdecimal.rb,v 1.9 2006/03/18 06:03:58 bk1 Exp $
|
5
|
+
# CVS-Label: $Name: PRE_ALPHA_0_12 $
|
6
6
|
# Author: $Author: bk1 $ (Karl Brodowsky)
|
7
7
|
#
|
8
8
|
require "complex"
|
@@ -65,6 +65,8 @@ module LongMath
|
|
65
65
|
|
66
66
|
MAX_FLOATABLE = Float::MAX.to_i
|
67
67
|
MAX_EXP_ABLE = Math.log(MAX_FLOATABLE).to_i
|
68
|
+
LOG2 = Math.log(2.0)
|
69
|
+
LOG10 = Math.log(10.0)
|
68
70
|
|
69
71
|
#
|
70
72
|
# helper method for internal use: checks if word_len is a reasonable
|
@@ -269,7 +271,7 @@ module LongMath
|
|
269
271
|
end
|
270
272
|
j += 1
|
271
273
|
if (j > 10) then
|
272
|
-
puts("i=#{i} j=#{j} q=#{q} q0=#{q0} d0=#{d0} d=#{d} r=#{r} yi=#{yi} xi=#{xi}\n")
|
274
|
+
# puts("i=#{i} j=#{j} q=#{q} q0=#{q0} d0=#{d0} d=#{d} r=#{r} yi=#{yi} xi=#{xi}\n")
|
273
275
|
break
|
274
276
|
end
|
275
277
|
end
|
@@ -411,21 +413,25 @@ module LongMath
|
|
411
413
|
end
|
412
414
|
|
413
415
|
#
|
414
|
-
#
|
415
|
-
#
|
416
|
-
# fits into a float (y <= 709)
|
416
|
+
# private helper method for exponentiation
|
417
|
+
# calculate internal precision
|
417
418
|
#
|
418
|
-
def LongMath.
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
iprec = prec+
|
425
|
-
|
426
|
-
|
419
|
+
def LongMath.calc_iprec_for_exp(x, prec)
|
420
|
+
iprec_extra = 0
|
421
|
+
if (x > 1) then
|
422
|
+
xf = x.to_f
|
423
|
+
iprec_extra = (xf / LOG10).abs
|
424
|
+
end
|
425
|
+
iprec = ((prec+10)*1.20 + iprec_extra).round
|
426
|
+
if (iprec < prec) then
|
427
|
+
iprec = prec
|
428
|
+
end
|
429
|
+
# puts("calc_iprec_for_exp: x=#{x} prec=#{prec} iprec=#{iprec} iprec_extra=#{iprec_extra}\n")
|
430
|
+
iprec
|
427
431
|
end
|
428
432
|
|
433
|
+
# private :calc_iprec_for_exp
|
434
|
+
|
429
435
|
#
|
430
436
|
# internal functionality of exp. exposes some more parameters, that
|
431
437
|
# should usually be set to defaut values, in order to allow better testing.
|
@@ -434,7 +440,7 @@ module LongMath
|
|
434
440
|
# not work correctly
|
435
441
|
#
|
436
442
|
def LongMath.exp_internal(x, prec = nil, final_mode = LongDecimal::ROUND_HALF_DOWN, j = nil, k = nil, iprec = nil, mode = LongDecimal::ROUND_HALF_DOWN)
|
437
|
-
check_is_ld(x)
|
443
|
+
check_is_ld(x, "x")
|
438
444
|
if (prec == nil) then
|
439
445
|
prec = x.scale
|
440
446
|
end
|
@@ -448,19 +454,20 @@ module LongMath
|
|
448
454
|
|
449
455
|
# if the result would come out to zero anyway, cut the work
|
450
456
|
xi = x.to_i
|
451
|
-
if (xi < -LongMath::MAX_FLOATABLE) || -((xi.to_f - 1) /
|
457
|
+
if (xi < -LongMath::MAX_FLOATABLE) || -((xi.to_f - 1) / LOG10) > prec+1 then
|
452
458
|
return LongDecimal(25, prec+2).round_to_scale(prec, final_mode)
|
453
459
|
end
|
454
460
|
|
455
461
|
if j == nil || k == nil then
|
456
|
-
|
457
|
-
lb = Math.log(10.0)
|
458
|
-
s1 = (prec * lb / l2) ** (1.0/3.0)
|
462
|
+
s1 = (prec * LOG10 / LOG2) ** (1.0/3.0)
|
459
463
|
if (j == nil) then
|
460
464
|
j = s1.round
|
461
465
|
end
|
462
466
|
if (k == nil) then
|
463
|
-
k = (s1 + Math.log([1, prec].max) /
|
467
|
+
k = (s1 + Math.log([1, prec].max) / LOG2).round
|
468
|
+
end
|
469
|
+
if (x > 1) then
|
470
|
+
k += (Math.log(x.to_f) / LOG2).abs.round
|
464
471
|
end
|
465
472
|
end
|
466
473
|
if (j <= 0) then
|
@@ -472,19 +479,11 @@ module LongMath
|
|
472
479
|
check_is_int(j, "j")
|
473
480
|
check_is_int(k, "k")
|
474
481
|
|
475
|
-
iprec_extra = 0
|
476
|
-
if (x > 1) then
|
477
|
-
xf = x.to_f
|
478
|
-
k += (Math.log(xf) / Math.log(2)).abs.round
|
479
|
-
iprec_extra = (xf / Math.log(10)).abs
|
480
|
-
end
|
481
482
|
if (iprec == nil) then
|
482
|
-
iprec = (
|
483
|
-
end
|
484
|
-
if (iprec < prec) then
|
485
|
-
iprec = prec
|
483
|
+
iprec = calc_iprec_for_exp(x, prec)
|
486
484
|
end
|
487
485
|
check_is_prec(iprec, "iprec")
|
486
|
+
# puts("exp_internal: x=#{x} prec=#{prec} iprec=#{iprec}\n")
|
488
487
|
|
489
488
|
dprec = [ iprec, (prec + 1) << 1 ].min
|
490
489
|
|
@@ -555,6 +554,7 @@ module LongMath
|
|
555
554
|
lnxx = log_internal(xx, iprec, mode)
|
556
555
|
ln10 = log_internal(10.to_ld, iprec, mode)
|
557
556
|
y = id + (lnxx / ln10).to_ld
|
557
|
+
return y.round_to_scale(prec, mode)
|
558
558
|
end
|
559
559
|
|
560
560
|
#
|
@@ -673,7 +673,7 @@ module LongMath
|
|
673
673
|
i += 1
|
674
674
|
sum += d
|
675
675
|
|
676
|
-
# puts("s=#{sum} d=#{d} x=#{x} i=#{i}\n")
|
676
|
+
# puts("log_internal: s=#{sum} d=#{d} x=#{x} i=#{i} p=#{p} iprec=#{iprec} dprec=#{dprec}\n") if (i & 0x0f == 0x0f)
|
677
677
|
end
|
678
678
|
|
679
679
|
# puts("y=#{y} s=#{s} f=#{factor} sum=#{sum}\n")
|
@@ -683,6 +683,56 @@ module LongMath
|
|
683
683
|
|
684
684
|
end
|
685
685
|
|
686
|
+
#
|
687
|
+
# calc the power of x with exponent y to the given precision as
|
688
|
+
# LongDecimal. Only supports values of y such that exp(y) still
|
689
|
+
# fits into a float (y <= 709)
|
690
|
+
#
|
691
|
+
def LongMath.power(x, y, prec, mode = LongDecimal::ROUND_HALF_DOWN)
|
692
|
+
check_is_ld(x, "x")
|
693
|
+
check_is_ld(y, "y")
|
694
|
+
raise TypeError, "y=#{y.inspect} must not be greater #{MAX_EXP_ABLE}" unless y <= MAX_EXP_ABLE
|
695
|
+
raise TypeError, "x=#{x.inspect} must not be greater #{MAX_FLOATABLE}" unless x <= MAX_FLOATABLE
|
696
|
+
raise TypeError, "x=#{x.inspect} must not positive" unless x > 0
|
697
|
+
check_is_prec(prec, "prec")
|
698
|
+
check_is_mode(mode, "mode")
|
699
|
+
LongMath.power_internal(x, y, prec, mode)
|
700
|
+
end
|
701
|
+
|
702
|
+
#
|
703
|
+
# internal functionality of exp. exposes some more parameters, that
|
704
|
+
# should usually be set to defaut values, in order to allow better testing.
|
705
|
+
# do not actually call this method unless you are testing exp.
|
706
|
+
# create a bug report, if the default settings for the parameters do
|
707
|
+
# not work correctly
|
708
|
+
#
|
709
|
+
def LongMath.power_internal(x, y, prec = nil, final_mode = LongDecimal::ROUND_HALF_DOWN, iprec = nil, mode = LongDecimal::ROUND_HALF_DOWN)
|
710
|
+
check_is_ld(x, "x")
|
711
|
+
if (prec == nil) then
|
712
|
+
prec = x.scale
|
713
|
+
end
|
714
|
+
check_is_prec(prec, "prec")
|
715
|
+
|
716
|
+
if (final_mode == nil)
|
717
|
+
final_mode = LongDecimal::ROUND_HALF_DOWN
|
718
|
+
end
|
719
|
+
check_is_mode(final_mode, "final_mode")
|
720
|
+
check_is_mode(mode, "mode")
|
721
|
+
|
722
|
+
logx_y_f = Math.log(x.to_f) * (y.to_f)
|
723
|
+
|
724
|
+
# iprec = (prec * 1.2 + 20 + (y.abs.to_f) * 1.5 * x.int_digits2).round
|
725
|
+
if (iprec == nil) then
|
726
|
+
iprec = calc_iprec_for_exp(logx_y_f, prec) + 2
|
727
|
+
end
|
728
|
+
# puts("power_internal: x=#{x} y=#{y} logx_y=#{logx_y_f} iprec=#{iprec} prec=#{prec}\n")
|
729
|
+
logx = log(x, iprec, mode)
|
730
|
+
logx_y = logx*y
|
731
|
+
xy = exp_internal(logx_y, prec + 1, mode)
|
732
|
+
# puts("power_internal: x=#{x} logx=#{logx} y=#{y} logx_y=#{logx_y} xy=#{xy} iprec=#{iprec} prec=#{prec}\n")
|
733
|
+
xy.round_to_scale(prec, final_mode)
|
734
|
+
end
|
735
|
+
|
686
736
|
end # LongMath
|
687
737
|
|
688
738
|
#
|
@@ -691,7 +741,7 @@ end # LongMath
|
|
691
741
|
# digits and the other one the position of the decimal point.
|
692
742
|
#
|
693
743
|
class LongDecimal < Numeric
|
694
|
-
@RCS_ID='-$Id: longdecimal.rb,v 1.
|
744
|
+
@RCS_ID='-$Id: longdecimal.rb,v 1.9 2006/03/18 06:03:58 bk1 Exp $-'
|
695
745
|
|
696
746
|
include LongDecimalRoundingMode
|
697
747
|
|
@@ -1755,7 +1805,7 @@ end # LongDecimal
|
|
1755
1805
|
#
|
1756
1806
|
class LongDecimalQuot < Numeric
|
1757
1807
|
|
1758
|
-
@RCS_ID='-$Id: longdecimal.rb,v 1.
|
1808
|
+
@RCS_ID='-$Id: longdecimal.rb,v 1.9 2006/03/18 06:03:58 bk1 Exp $-'
|
1759
1809
|
|
1760
1810
|
include LongDecimalRoundingMode
|
1761
1811
|
|