long-decimal 0.00.16 → 0.00.17
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 +16 -15
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/doc/classes/LongDecimal.html +15 -8
- data/doc/classes/LongDecimal.src/M000041.html +3 -2
- data/doc/classes/LongDecimal.src/M000042.html +1 -1
- data/doc/classes/LongDecimal.src/M000043.html +1 -1
- data/doc/classes/LongDecimal.src/M000044.html +1 -3
- data/doc/classes/LongDecimal.src/M000045.html +1 -1
- data/doc/classes/LongDecimal.src/M000046.html +1 -1
- data/doc/classes/LongDecimal.src/M000047.html +1 -1
- data/doc/classes/LongDecimal.src/M000048.html +1 -1
- data/doc/classes/LongDecimal.src/M000049.html +7 -3
- data/doc/classes/LongDecimal.src/M000050.html +1 -1
- data/doc/classes/LongDecimal.src/M000051.html +1 -1
- data/doc/classes/LongDecimal.src/M000052.html +1 -1
- data/doc/classes/LongDecimal.src/M000053.html +1 -1
- data/doc/classes/LongDecimal.src/M000054.html +1 -1
- data/doc/classes/LongDecimal.src/M000055.html +1 -1
- data/doc/classes/LongDecimal.src/M000056.html +1 -1
- data/doc/classes/LongDecimal.src/M000058.html +1 -1
- data/doc/classes/LongDecimal.src/M000059.html +1 -1
- data/doc/classes/LongDecimal.src/M000060.html +1 -1
- data/doc/classes/LongDecimal.src/M000061.html +1 -1
- data/doc/classes/LongDecimal.src/M000062.html +1 -1
- data/doc/classes/LongDecimal.src/M000063.html +1 -1
- data/doc/classes/LongDecimal.src/M000064.html +1 -1
- data/doc/classes/LongDecimal.src/M000065.html +1 -1
- data/doc/classes/LongDecimal.src/M000066.html +1 -1
- data/doc/classes/LongDecimal.src/M000067.html +1 -1
- data/doc/classes/LongDecimal.src/M000068.html +1 -1
- data/doc/classes/LongDecimal.src/M000069.html +1 -1
- data/doc/classes/LongDecimal.src/M000070.html +1 -1
- data/doc/classes/LongDecimal.src/M000071.html +1 -1
- data/doc/classes/LongDecimal.src/M000072.html +1 -1
- data/doc/classes/LongDecimal.src/M000073.html +1 -1
- data/doc/classes/LongDecimal.src/M000074.html +1 -1
- data/doc/classes/LongDecimal.src/M000075.html +1 -1
- data/doc/classes/LongDecimal.src/M000076.html +1 -1
- data/doc/classes/LongDecimal.src/M000077.html +1 -1
- data/doc/classes/LongDecimal.src/M000078.html +1 -1
- data/doc/classes/LongDecimal.src/M000079.html +1 -1
- data/doc/classes/LongDecimal.src/M000080.html +1 -1
- data/doc/classes/LongDecimal.src/M000081.html +1 -1
- data/doc/classes/LongDecimal.src/M000082.html +1 -1
- data/doc/classes/LongDecimal.src/M000083.html +1 -1
- data/doc/classes/LongDecimal.src/M000084.html +1 -1
- data/doc/classes/LongDecimal.src/M000085.html +1 -1
- data/doc/classes/LongDecimal.src/M000086.html +1 -1
- data/doc/classes/LongDecimal.src/M000087.html +1 -1
- data/doc/classes/LongDecimal.src/M000088.html +1 -1
- data/doc/classes/LongDecimal.src/M000089.html +30 -4
- data/doc/classes/LongDecimal.src/M000090.html +1 -1
- data/doc/classes/LongDecimal.src/M000091.html +1 -1
- data/doc/classes/LongDecimal.src/M000094.html +1 -1
- data/doc/classes/LongDecimal.src/M000095.html +1 -1
- data/doc/classes/LongDecimal.src/M000096.html +1 -1
- data/doc/classes/LongDecimal.src/M000097.html +1 -1
- data/doc/classes/LongDecimal.src/M000098.html +1 -1
- data/doc/classes/LongDecimal.src/M000099.html +1 -1
- data/doc/classes/LongDecimalBase.html +58 -57
- data/doc/classes/LongDecimalBase.src/M000102.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000103.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000104.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000105.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000106.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000107.html +18 -0
- data/doc/classes/LongDecimalBase.src/M000110.html +9 -5
- data/doc/classes/LongDecimalBase.src/M000111.html +5 -4
- data/doc/classes/LongDecimalBase.src/M000112.html +18 -0
- data/doc/classes/LongDecimalQuot.html +18 -13
- data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000011.html +3 -3
- data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000023.html +35 -2
- data/doc/classes/LongDecimalQuot.src/M000024.html +20 -4
- data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000032.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000033.html +1 -1
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +5 -5
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000137.html +22 -0
- data/doc/classes/LongMath.html +135 -116
- data/doc/classes/LongMath.src/M000113.html +5 -4
- data/doc/classes/LongMath.src/M000114.html +4 -4
- data/doc/classes/LongMath.src/M000115.html +4 -5
- data/doc/classes/LongMath.src/M000116.html +5 -4
- data/doc/classes/LongMath.src/M000117.html +4 -18
- data/doc/classes/LongMath.src/M000118.html +14 -14
- data/doc/classes/LongMath.src/M000119.html +18 -5
- data/doc/classes/LongMath.src/M000120.html +5 -29
- data/doc/classes/LongMath.src/M000121.html +29 -5
- data/doc/classes/LongMath.src/M000122.html +5 -56
- data/doc/classes/LongMath.src/M000123.html +54 -19
- data/doc/classes/LongMath.src/M000124.html +20 -35
- data/doc/classes/LongMath.src/M000125.html +31 -27
- data/doc/classes/LongMath.src/M000126.html +32 -8
- data/doc/classes/LongMath.src/M000127.html +8 -13
- data/doc/classes/LongMath.src/M000128.html +13 -82
- data/doc/classes/LongMath.src/M000129.html +79 -4
- data/doc/classes/LongMath.src/M000130.html +4 -14
- data/doc/classes/LongMath.src/M000131.html +4 -14
- data/doc/classes/LongMath.src/M000132.html +13 -148
- data/doc/classes/LongMath.src/M000133.html +14 -8
- data/doc/classes/LongMath.src/M000134.html +127 -3
- data/doc/classes/LongMath.src/M000135.html +25 -0
- data/doc/classes/LongMath.src/M000136.html +42 -0
- data/doc/classes/Numeric.html +5 -2
- data/doc/classes/Numeric.src/M000100.html +8 -3
- data/doc/classes/Rational.html +158 -0
- data/doc/classes/Rational.src/M000101.html +23 -0
- data/doc/created.rid +1 -1
- data/doc/dot/f_0.dot +9 -0
- data/doc/dot/f_0.png +0 -0
- data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
- data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
- data/doc/fr_class_index.html +1 -0
- data/doc/fr_method_index.html +56 -54
- data/lib/long-decimal.rb +147 -29
- data/test/testlongdecimal.rb +58 -5
- data/version.rb +1 -1
- metadata +10 -3
- data/doc/files/lib/long-decimal_rb.html +0 -187
@@ -5,21 +5,27 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>log2 (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
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
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2224</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log2</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
|
15
15
|
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
16
|
-
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">y</span>, <span class="ruby-value str">"y"</span>)
|
17
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"y=#{y.inspect} must not be greater #{MAX_EXP_ABLE}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">y</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">MAX_EXP_ABLE</span>
|
18
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not be greater #{MAX_FLOATABLE}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">MAX_FLOATABLE</span>
|
19
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not positive"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
20
16
|
<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">"prec"</span>)
|
17
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
|
18
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">zero!</span>(<span class="ruby-identifier">prec</span>)
|
19
|
+
<span class="ruby-keyword kw">end</span>
|
21
20
|
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">"mode"</span>)
|
22
|
-
<span class="ruby-
|
21
|
+
<span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
|
22
|
+
<span class="ruby-identifier">id</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">int_digits2</span>
|
23
|
+
<span class="ruby-identifier">xx</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> (<span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">id</span>)).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span><span class="ruby-operator">+</span><span class="ruby-identifier">id</span>)
|
24
|
+
<span class="ruby-comment cmt"># puts("x=#{x} xx=#{xx} id=#{id} iprec=#{iprec}\n")</span>
|
25
|
+
<span class="ruby-identifier">lnxx</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-identifier">xx</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
26
|
+
<span class="ruby-identifier">ln2</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-value">2</span>.<span class="ruby-identifier">to_ld</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
27
|
+
<span class="ruby-identifier">y</span> = <span class="ruby-identifier">id</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">lnxx</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">ln2</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
|
28
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">y</span>
|
23
29
|
<span class="ruby-keyword kw">end</span></pre>
|
24
30
|
</body>
|
25
31
|
</html>
|
@@ -5,12 +5,134 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>log_internal (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
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 2248</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
|
15
|
+
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>)
|
16
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not be positive"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
17
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
|
18
|
+
<span class="ruby-identifier">prec</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span>
|
19
|
+
<span class="ruby-keyword kw">end</span>
|
20
|
+
<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">"prec"</span>)
|
21
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
|
22
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">zero!</span>(<span class="ruby-identifier">prec</span>)
|
23
|
+
<span class="ruby-keyword kw">end</span>
|
24
|
+
|
25
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">final_mode</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>)
|
26
|
+
<span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>
|
27
|
+
<span class="ruby-keyword kw">end</span>
|
28
|
+
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">final_mode</span>, <span class="ruby-value str">"final_mode"</span>)
|
29
|
+
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">"mode"</span>)
|
30
|
+
|
31
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
|
32
|
+
<span class="ruby-identifier">iprec</span> = ((<span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">10</span>)<span class="ruby-operator">*</span><span class="ruby-value">1.20</span>).<span class="ruby-identifier">round</span>
|
33
|
+
<span class="ruby-keyword kw">end</span>
|
34
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">prec</span>) <span class="ruby-keyword kw">then</span>
|
35
|
+
<span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span>
|
36
|
+
<span class="ruby-keyword kw">end</span>
|
37
|
+
<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-value str">"iprec"</span>)
|
38
|
+
|
39
|
+
<span class="ruby-comment cmt"># dprec = [ iprec - 1, (prec + 1) << 1 ].min</span>
|
40
|
+
<span class="ruby-identifier">dprec</span> = <span class="ruby-identifier">iprec</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
41
|
+
|
42
|
+
<span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
|
43
|
+
<span class="ruby-identifier">s</span> = <span class="ruby-value">1</span>
|
44
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">then</span>
|
45
|
+
<span class="ruby-comment cmt"># puts("x=#{x} iprec=#{iprec}\n")</span>
|
46
|
+
<span class="ruby-identifier">x</span> = (<span class="ruby-value">1</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">x</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
47
|
+
<span class="ruby-identifier">s</span> = <span class="ruby-value">-1</span>
|
48
|
+
<span class="ruby-comment cmt"># puts("s=#{s} x=#{x} iprec=#{iprec}\n")</span>
|
49
|
+
<span class="ruby-keyword kw">end</span>
|
50
|
+
<span class="ruby-identifier">exp_part</span> = <span class="ruby-value">0</span>
|
51
|
+
<span class="ruby-identifier">estimate</span> = <span class="ruby-value">0</span>
|
52
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator">></span> <span class="ruby-constant">MAX_FLOATABLE</span>) <span class="ruby-keyword kw">do</span>
|
53
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">exp_part</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
54
|
+
<span class="ruby-identifier">estimate</span> = <span class="ruby-constant">MAX_EXP_ABLE</span>.<span class="ruby-identifier">to_ld</span>
|
55
|
+
<span class="ruby-identifier">exp_part</span> = <span class="ruby-identifier">exp</span>(<span class="ruby-identifier">estimate</span>, <span class="ruby-identifier">iprec</span>)
|
56
|
+
<span class="ruby-keyword kw">end</span>
|
57
|
+
<span class="ruby-identifier">x</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">exp_part</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
58
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
59
|
+
<span class="ruby-identifier">y</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">estimate</span>
|
60
|
+
<span class="ruby-keyword kw">else</span>
|
61
|
+
<span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">estimate</span>
|
62
|
+
<span class="ruby-keyword kw">end</span>
|
63
|
+
<span class="ruby-keyword kw">end</span>
|
64
|
+
|
65
|
+
<span class="ruby-identifier">delta</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">1</span>, <span class="ruby-value">3</span>)
|
66
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">abs</span> <span class="ruby-operator">></span> <span class="ruby-identifier">delta</span> <span class="ruby-keyword kw">do</span>
|
67
|
+
<span class="ruby-comment cmt"># puts("too far from 1: x=#{x}\n")</span>
|
68
|
+
<span class="ruby-identifier">xf</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_f</span>
|
69
|
+
<span class="ruby-comment cmt"># puts("xf=#{xf}\n")</span>
|
70
|
+
<span class="ruby-identifier">mlx</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">xf</span>)
|
71
|
+
<span class="ruby-comment cmt"># puts("log(xf)=#{mlx}\n")</span>
|
72
|
+
<span class="ruby-identifier">estimate</span> = <span class="ruby-identifier">mlx</span>.<span class="ruby-identifier">to_ld</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-value">20</span>, <span class="ruby-identifier">mode</span>)
|
73
|
+
<span class="ruby-identifier">exp_part</span> = <span class="ruby-identifier">exp</span>(<span class="ruby-identifier">estimate</span>, <span class="ruby-identifier">iprec</span> <span class="ruby-operator"><<</span> <span class="ruby-value">1</span>)
|
74
|
+
<span class="ruby-comment cmt"># puts("y=#{y} s=#{s} est=#{estimate} part=#{exp_part} x=#{x}\n")</span>
|
75
|
+
<span class="ruby-identifier">x</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">exp_part</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
76
|
+
<span class="ruby-comment cmt"># puts("divided by exp_part=#{exp_part}: #{x}\n")</span>
|
77
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
78
|
+
<span class="ruby-identifier">y</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">estimate</span>
|
79
|
+
<span class="ruby-keyword kw">else</span>
|
80
|
+
<span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">estimate</span>
|
81
|
+
<span class="ruby-keyword kw">end</span>
|
82
|
+
<span class="ruby-comment cmt"># puts("y=#{y} s=#{s} est=#{estimate} part=#{exp_part} x=#{x}\n")</span>
|
83
|
+
<span class="ruby-keyword kw">end</span>
|
84
|
+
|
85
|
+
<span class="ruby-identifier">factor</span> = <span class="ruby-value">1</span>
|
86
|
+
<span class="ruby-comment cmt"># delta = LongDecimal(1, (iprec.to_f**(1/3)).round)</span>
|
87
|
+
<span class="ruby-comment cmt"># while (x - 1).abs > delta do</span>
|
88
|
+
<span class="ruby-comment cmt"># x = sqrt(x)</span>
|
89
|
+
<span class="ruby-comment cmt"># factor *= 2</span>
|
90
|
+
<span class="ruby-comment cmt"># end</span>
|
91
|
+
|
92
|
+
<span class="ruby-identifier">sum</span> = <span class="ruby-value">0</span>
|
93
|
+
<span class="ruby-identifier">z</span> = <span class="ruby-value">1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">x</span>
|
94
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-value">1</span>
|
95
|
+
<span class="ruby-identifier">p</span> = <span class="ruby-value">1</span>.<span class="ruby-identifier">to_ld</span>
|
96
|
+
<span class="ruby-identifier">d</span> = <span class="ruby-value">1</span>.<span class="ruby-identifier">to_ld</span>
|
97
|
+
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">abs</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">dprec</span>, <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_DOWN</span>).<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">do</span>
|
98
|
+
<span class="ruby-identifier">p</span> = (<span class="ruby-identifier">p</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">z</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
99
|
+
<span class="ruby-identifier">d</span> = (<span class="ruby-identifier">p</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">i</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
100
|
+
<span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
101
|
+
<span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">d</span>
|
102
|
+
|
103
|
+
<span class="ruby-comment cmt"># puts("log_internal: s=#{sum} d=#{d} x=#{x} i=#{i} p=#{p} iprec=#{iprec} dprec=#{dprec}\n") if (i & 0x0f == 0x0f)</span>
|
104
|
+
<span class="ruby-keyword kw">end</span>
|
105
|
+
|
106
|
+
<span class="ruby-comment cmt"># puts("y=#{y} s=#{s} f=#{factor} sum=#{sum}\n")</span>
|
107
|
+
<span class="ruby-identifier">y</span> <span class="ruby-operator">-=</span> ((<span class="ruby-identifier">s</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">factor</span>) <span class="ruby-operator">*</span> <span class="ruby-identifier">sum</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
108
|
+
<span class="ruby-comment cmt"># puts("y=#{y} s=#{s} f=#{factor} sum=#{sum}\n")</span>
|
109
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
|
110
|
+
|
111
|
+
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># log_internal</span>
|
112
|
+
|
113
|
+
<span class="ruby-comment cmt">#</span>
|
114
|
+
<span class="ruby-comment cmt"># calc the power of x with exponent y to the given precision as</span>
|
115
|
+
<span class="ruby-comment cmt"># LongDecimal. Only supports values of y such that exp(y) still</span>
|
116
|
+
<span class="ruby-comment cmt"># fits into a float (y <= 709)</span>
|
117
|
+
<span class="ruby-comment cmt">#</span>
|
118
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
|
119
|
+
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
120
|
+
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">y</span>, <span class="ruby-value str">"y"</span>)
|
121
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"y=#{y.inspect} must not be greater #{MAX_EXP_ABLE}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">y</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">MAX_EXP_ABLE</span>
|
122
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not be greater #{MAX_FLOATABLE}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">MAX_FLOATABLE</span>
|
123
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not positive"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
124
|
+
<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">"prec"</span>)
|
125
|
+
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">"mode"</span>)
|
126
|
+
<span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
|
127
|
+
<span class="ruby-keyword kw">end</span>
|
128
|
+
|
129
|
+
<span class="ruby-comment cmt">#</span>
|
130
|
+
<span class="ruby-comment cmt"># internal functionality of exp. exposes some more parameters, that</span>
|
131
|
+
<span class="ruby-comment cmt"># should usually be set to defaut values, in order to allow better testing.</span>
|
132
|
+
<span class="ruby-comment cmt"># do not actually call this method unless you are testing exp.</span>
|
133
|
+
<span class="ruby-comment cmt"># create a bug report, if the default settings for the parameters do</span>
|
134
|
+
<span class="ruby-comment cmt"># not work correctly</span>
|
135
|
+
<span class="ruby-comment cmt">#</span>
|
14
136
|
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
|
15
137
|
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
16
138
|
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
|
@@ -37,6 +159,8 @@
|
|
37
159
|
<span class="ruby-comment cmt"># puts("power_internal: x=#{x} logx=#{logx} y=#{y} logx_y=#{logx_y} xy=#{xy} iprec=#{iprec} prec=#{prec}\n")</span>
|
38
160
|
<span class="ruby-identifier">xy</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
|
39
161
|
|
40
|
-
<span class="ruby-keyword kw">end</span
|
162
|
+
<span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># power_internal</span>
|
163
|
+
|
164
|
+
<span class="ruby-keyword kw">end</span></pre>
|
41
165
|
</body>
|
42
166
|
</html>
|
@@ -0,0 +1,25 @@
|
|
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>power (LongMath)</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/long-decimal.rb, line 2352</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
|
15
|
+
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
16
|
+
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">y</span>, <span class="ruby-value str">"y"</span>)
|
17
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"y=#{y.inspect} must not be greater #{MAX_EXP_ABLE}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">y</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">MAX_EXP_ABLE</span>
|
18
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not be greater #{MAX_FLOATABLE}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">MAX_FLOATABLE</span>
|
19
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must not positive"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
20
|
+
<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">"prec"</span>)
|
21
|
+
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">"mode"</span>)
|
22
|
+
<span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
|
23
|
+
<span class="ruby-keyword kw">end</span></pre>
|
24
|
+
</body>
|
25
|
+
</html>
|
@@ -0,0 +1,42 @@
|
|
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>power_internal (LongMath)</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/long-decimal.rb, line 2370</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
|
15
|
+
<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
16
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
|
17
|
+
<span class="ruby-identifier">prec</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span>
|
18
|
+
<span class="ruby-keyword kw">end</span>
|
19
|
+
<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">"prec"</span>)
|
20
|
+
|
21
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">final_mode</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>)
|
22
|
+
<span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>
|
23
|
+
<span class="ruby-keyword kw">end</span>
|
24
|
+
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">final_mode</span>, <span class="ruby-value str">"final_mode"</span>)
|
25
|
+
<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">"mode"</span>)
|
26
|
+
|
27
|
+
<span class="ruby-identifier">logx_y_f</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_f</span>) <span class="ruby-operator">*</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">to_f</span>)
|
28
|
+
|
29
|
+
<span class="ruby-comment cmt"># iprec = (prec * 1.2 + 20 + (y.abs.to_f) * 1.5 * x.int_digits2).round</span>
|
30
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
|
31
|
+
<span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">calc_iprec_for_exp</span>(<span class="ruby-identifier">logx_y_f</span>, <span class="ruby-identifier">prec</span>) <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
|
32
|
+
<span class="ruby-keyword kw">end</span>
|
33
|
+
<span class="ruby-comment cmt"># puts("power_internal: x=#{x} y=#{y} logx_y=#{logx_y_f} iprec=#{iprec} prec=#{prec}\n")</span>
|
34
|
+
<span class="ruby-identifier">logx</span> = <span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
|
35
|
+
<span class="ruby-identifier">logx_y</span> = <span class="ruby-identifier">logx</span><span class="ruby-operator">*</span><span class="ruby-identifier">y</span>
|
36
|
+
<span class="ruby-identifier">xy</span> = <span class="ruby-identifier">exp_internal</span>(<span class="ruby-identifier">logx_y</span>, <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>, <span class="ruby-identifier">mode</span>)
|
37
|
+
<span class="ruby-comment cmt"># puts("power_internal: x=#{x} logx=#{logx} y=#{y} logx_y=#{logx_y} xy=#{xy} iprec=#{iprec} prec=#{prec}\n")</span>
|
38
|
+
<span class="ruby-identifier">xy</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
|
39
|
+
|
40
|
+
<span class="ruby-keyword kw">end</span></pre>
|
41
|
+
</body>
|
42
|
+
</html>
|
data/doc/classes/Numeric.html
CHANGED
@@ -85,6 +85,7 @@
|
|
85
85
|
<area shape="RECT" coords="6,293,120,341" href="LongDecimalQuot.html" alt="LongDecimalQuot">
|
86
86
|
<area shape="RECT" coords="144,293,238,341" href="LongDecimal.html" alt="LongDecimal">
|
87
87
|
<area shape="RECT" coords="43,101,115,149" href="Numeric.html" alt="Numeric">
|
88
|
+
<area shape="RECT" coords="267,5,339,53" href="Rational.html" alt="Rational">
|
88
89
|
<area shape="RECT" coords="246,187,339,233" href="LongMath.html" alt="LongMath">
|
89
90
|
<area shape="RECT" coords="128,68,304,160" href="LongDecimalRoundingMode.html" alt="LongDecimalRoundingMode">
|
90
91
|
</map>
|
@@ -127,13 +128,15 @@
|
|
127
128
|
<div class="method-heading">
|
128
129
|
<a href="Numeric.src/M000100.html" target="Code" class="method-signature"
|
129
130
|
onclick="popupCode('Numeric.src/M000100.html');return false;">
|
130
|
-
<span class="method-name">to_ld</span><span class="method-args">()</span>
|
131
|
+
<span class="method-name">to_ld</span><span class="method-args">(prec = nil, mode = LongDecimal::ROUND_HALF_UP)</span>
|
131
132
|
</a>
|
132
133
|
</div>
|
133
134
|
|
134
135
|
<div class="method-description">
|
135
136
|
<p>
|
136
|
-
convert self to <a href="LongDecimal.html">LongDecimal</a>
|
137
|
+
convert self to <a href="LongDecimal.html">LongDecimal</a> optional first
|
138
|
+
argument gives the precision for the desired result optional second
|
139
|
+
argument gives the rouding mode
|
137
140
|
</p>
|
138
141
|
</div>
|
139
142
|
</div>
|
@@ -10,9 +10,14 @@
|
|
10
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
|
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>)
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1685</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_UP</span>)
|
15
|
+
<span class="ruby-identifier">l</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-keyword kw">self</span>)
|
16
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span>.<span class="ruby-identifier">nil?</span>)
|
17
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">l</span>
|
18
|
+
<span class="ruby-keyword kw">else</span>
|
19
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
|
20
|
+
<span class="ruby-keyword kw">end</span>
|
16
21
|
<span class="ruby-keyword kw">end</span></pre>
|
17
22
|
</body>
|
18
23
|
</html>
|
@@ -0,0 +1,158 @@
|
|
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 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
+
<head>
|
8
|
+
<title>Class: Rational</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
+
<link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
|
12
|
+
<script type="text/javascript">
|
13
|
+
// <![CDATA[
|
14
|
+
|
15
|
+
function popupCode( url ) {
|
16
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
+
}
|
18
|
+
|
19
|
+
function toggleCode( id ) {
|
20
|
+
if ( document.getElementById )
|
21
|
+
elem = document.getElementById( id );
|
22
|
+
else if ( document.all )
|
23
|
+
elem = eval( "document.all." + id );
|
24
|
+
else
|
25
|
+
return false;
|
26
|
+
|
27
|
+
elemStyle = elem.style;
|
28
|
+
|
29
|
+
if ( elemStyle.display != "block" ) {
|
30
|
+
elemStyle.display = "block"
|
31
|
+
} else {
|
32
|
+
elemStyle.display = "none"
|
33
|
+
}
|
34
|
+
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
|
38
|
+
// Make codeblocks hidden by default
|
39
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
+
|
41
|
+
// ]]>
|
42
|
+
</script>
|
43
|
+
|
44
|
+
</head>
|
45
|
+
<body>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
<div id="classHeader">
|
50
|
+
<table class="header-table">
|
51
|
+
<tr class="top-aligned-row">
|
52
|
+
<td><strong>Class</strong></td>
|
53
|
+
<td class="class-name-in-header">Rational</td>
|
54
|
+
</tr>
|
55
|
+
<tr class="top-aligned-row">
|
56
|
+
<td><strong>In:</strong></td>
|
57
|
+
<td>
|
58
|
+
<a href="../files/lib/long-decimal_rb.html">
|
59
|
+
lib/long-decimal.rb
|
60
|
+
</a>
|
61
|
+
<br />
|
62
|
+
</td>
|
63
|
+
</tr>
|
64
|
+
|
65
|
+
<tr class="top-aligned-row">
|
66
|
+
<td><strong>Parent:</strong></td>
|
67
|
+
<td>
|
68
|
+
Object
|
69
|
+
</td>
|
70
|
+
</tr>
|
71
|
+
</table>
|
72
|
+
</div>
|
73
|
+
<!-- banner header -->
|
74
|
+
|
75
|
+
<div id="bodyContent">
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
<div id="contextContent">
|
80
|
+
<div id="diagram">
|
81
|
+
<map id="map" name="map">
|
82
|
+
<area shape="RECT" coords="68,197,186,245" href="LongDecimalBase.html" alt="LongDecimalBase">
|
83
|
+
<area shape="RECT" coords="163,5,243,53" href="Comparable.html" alt="Comparable">
|
84
|
+
<area shape="RECT" coords="139,101,267,149" href="LongDecimalRoundingMode/RoundingModeClass.html" alt="RoundingModeClass">
|
85
|
+
<area shape="RECT" coords="6,293,120,341" href="LongDecimalQuot.html" alt="LongDecimalQuot">
|
86
|
+
<area shape="RECT" coords="144,293,238,341" href="LongDecimal.html" alt="LongDecimal">
|
87
|
+
<area shape="RECT" coords="43,101,115,149" href="Numeric.html" alt="Numeric">
|
88
|
+
<area shape="RECT" coords="267,5,339,53" href="Rational.html" alt="Rational">
|
89
|
+
<area shape="RECT" coords="246,187,339,233" href="LongMath.html" alt="LongMath">
|
90
|
+
<area shape="RECT" coords="128,68,304,160" href="LongDecimalRoundingMode.html" alt="LongDecimalRoundingMode">
|
91
|
+
</map>
|
92
|
+
<img src="../dot/f_0.png" usemap="#map" border=0 alt="TopLevel">
|
93
|
+
</div>
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
</div>
|
98
|
+
|
99
|
+
<div id="method-list">
|
100
|
+
<h3 class="section-bar">Methods</h3>
|
101
|
+
|
102
|
+
<div class="name-list">
|
103
|
+
<a href="#M000101">to_ld</a>
|
104
|
+
</div>
|
105
|
+
</div>
|
106
|
+
|
107
|
+
</div>
|
108
|
+
|
109
|
+
|
110
|
+
<!-- if includes -->
|
111
|
+
|
112
|
+
<div id="section">
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
<!-- if method_list -->
|
122
|
+
<div id="methods">
|
123
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
124
|
+
|
125
|
+
<div id="method-M000101" class="method-detail">
|
126
|
+
<a name="M000101"></a>
|
127
|
+
|
128
|
+
<div class="method-heading">
|
129
|
+
<a href="Rational.src/M000101.html" target="Code" class="method-signature"
|
130
|
+
onclick="popupCode('Rational.src/M000101.html');return false;">
|
131
|
+
<span class="method-name">to_ld</span><span class="method-args">(prec = nil, mode = LongDecimal::ROUND_HALF_UP)</span>
|
132
|
+
</a>
|
133
|
+
</div>
|
134
|
+
|
135
|
+
<div class="method-description">
|
136
|
+
<p>
|
137
|
+
convert self to <a href="LongDecimal.html">LongDecimal</a>. Special
|
138
|
+
handling of <a href="Rational.html">Rational</a> to avoid loosing
|
139
|
+
information in the first step that would be needed for the second step
|
140
|
+
optional first argument gives the precision for the desired result optional
|
141
|
+
second argument gives the rouding mode
|
142
|
+
</p>
|
143
|
+
</div>
|
144
|
+
</div>
|
145
|
+
|
146
|
+
|
147
|
+
</div>
|
148
|
+
|
149
|
+
|
150
|
+
</div>
|
151
|
+
|
152
|
+
|
153
|
+
<div id="validator-badges">
|
154
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
155
|
+
</div>
|
156
|
+
|
157
|
+
</body>
|
158
|
+
</html>
|