long-decimal 0.00.11 → 0.00.12
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 +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
@@ -5,14 +5,37 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>round_to_scale (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 978</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">new_scale</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">ROUND_UNNECESSARY</span>)
|
15
|
+
|
16
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"new_scale #{new_scale.inspect} must be integer"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_scale</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>
|
17
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"new_scale #{new_scale.inspect} must be >= 0"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_scale</span> <span class="ruby-operator">>=</span> <span class="ruby-value">0</span>
|
18
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"mode #{mode.inspect} must be legal rounding mode"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">RoundingModeClass</span>
|
19
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scale</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">new_scale</span> <span class="ruby-keyword kw">then</span>
|
20
|
+
<span class="ruby-keyword kw">self</span>
|
21
|
+
<span class="ruby-keyword kw">else</span>
|
22
|
+
<span class="ruby-identifier">diff</span> = <span class="ruby-identifier">new_scale</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">scale</span>
|
23
|
+
<span class="ruby-identifier">factor</span> = <span class="ruby-value">10</span> <span class="ruby-operator">**</span> (<span class="ruby-identifier">diff</span>.<span class="ruby-identifier">abs</span>)
|
24
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">diff</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
25
|
+
<span class="ruby-comment cmt"># we become more precise, no rounding issues</span>
|
26
|
+
<span class="ruby-identifier">new_int_val</span> = <span class="ruby-identifier">int_val</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">factor</span>
|
27
|
+
<span class="ruby-keyword kw">else</span>
|
28
|
+
<span class="ruby-identifier">quot</span>, <span class="ruby-identifier">rem</span> = <span class="ruby-identifier">int_val</span>.<span class="ruby-identifier">divmod</span>(<span class="ruby-identifier">factor</span>)
|
29
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">rem</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
30
|
+
<span class="ruby-identifier">new_int_val</span> = <span class="ruby-identifier">quot</span>
|
31
|
+
<span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">mode</span> <span class="ruby-operator">==</span> <span class="ruby-constant">ROUND_UNNECESSARY</span>) <span class="ruby-keyword kw">then</span>
|
32
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"mode ROUND_UNNECESSARY not applicable, remainder #{rem.to_s} is not zero"</span>
|
33
|
+
<span class="ruby-keyword kw">else</span>
|
34
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimalQuot</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">1</span>)).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">new_scale</span>, <span class="ruby-identifier">mode</span>)
|
35
|
+
<span class="ruby-keyword kw">end</span>
|
36
|
+
<span class="ruby-keyword kw">end</span>
|
37
|
+
<span class="ruby-constant">LongDecimal</span>(<span class="ruby-identifier">new_int_val</span>, <span class="ruby-identifier">new_scale</span>)
|
38
|
+
<span class="ruby-keyword kw">end</span>
|
16
39
|
<span class="ruby-keyword kw">end</span></pre>
|
17
40
|
</body>
|
18
41
|
</html>
|
@@ -5,25 +5,31 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_s (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
<span class="ruby-identifier">str</span> = (<span class="ruby-value str">"0"</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">missing</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1017</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">shown_scale</span> = <span class="ruby-ivar">@scale</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">ROUND_UNNECESSARY</span>, <span class="ruby-identifier">base</span> = <span class="ruby-value">10</span>)
|
15
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">base</span> <span class="ruby-operator">==</span> <span class="ruby-value">10</span>) <span class="ruby-keyword kw">then</span>
|
16
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">shown_scale</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@scale</span>)
|
17
|
+
<span class="ruby-identifier">to_s_10</span>
|
18
|
+
<span class="ruby-keyword kw">else</span>
|
19
|
+
<span class="ruby-identifier">s</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">shown_scale</span>, <span class="ruby-identifier">mode</span>)
|
20
|
+
<span class="ruby-identifier">s</span>.<span class="ruby-identifier">to_s_10</span>
|
22
21
|
<span class="ruby-keyword kw">end</span>
|
23
|
-
|
22
|
+
<span class="ruby-keyword kw">else</span>
|
23
|
+
<span class="ruby-comment cmt"># base is not 10</span>
|
24
|
+
<span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">base</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>) <span class="ruby-operator">&&</span> <span class="ruby-value">2</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">base</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">base</span> <span class="ruby-operator"><=</span> <span class="ruby-value">36</span> <span class="ruby-keyword kw">then</span>
|
25
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">"base must be integer between 2 and 36"</span>
|
26
|
+
<span class="ruby-keyword kw">end</span>
|
27
|
+
<span class="ruby-identifier">quot</span> = (<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">move_point_right</span>(<span class="ruby-identifier">scale</span>) <span class="ruby-operator">*</span> <span class="ruby-identifier">base</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">shown_scale</span>) <span class="ruby-operator">/</span> <span class="ruby-value">10</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">scale</span>
|
28
|
+
<span class="ruby-identifier">p</span>(<span class="ruby-identifier">quot</span>)
|
29
|
+
<span class="ruby-identifier">rounded</span> = <span class="ruby-identifier">quot</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">mode</span>)
|
30
|
+
<span class="ruby-identifier">p</span>(<span class="ruby-identifier">rounded</span>)
|
31
|
+
<span class="ruby-identifier">rounded</span>.<span class="ruby-identifier">to_s_internal</span>(<span class="ruby-identifier">base</span>, <span class="ruby-identifier">shown_scale</span>)
|
24
32
|
<span class="ruby-keyword kw">end</span>
|
25
|
-
<span class="ruby-identifier">str</span> = <span class="ruby-value str">"-"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sg</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
|
26
|
-
<span class="ruby-identifier">str</span>
|
27
33
|
<span class="ruby-keyword kw">end</span></pre>
|
28
34
|
</body>
|
29
35
|
</html>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_s_10 (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1042</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s_10</span>
|
15
|
+
<span class="ruby-identifier">to_s_internal</span>(<span class="ruby-value">10</span>, <span class="ruby-identifier">scale</span>)
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
17
17
|
</body>
|
18
18
|
</html>
|
@@ -5,34 +5,25 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_s_internal (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-
|
17
|
-
|
18
|
-
<span class="ruby-keyword kw">
|
19
|
-
<span class="ruby-
|
20
|
-
|
21
|
-
|
22
|
-
<span class="ruby-identifier">f</span> = <span class="ruby-identifier">int_val</span>.<span class="ruby-identifier">to_f</span>
|
23
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">divisor</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1049</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s_internal</span>(<span class="ruby-identifier">b</span>, <span class="ruby-identifier">sc</span>)
|
15
|
+
<span class="ruby-identifier">sg</span> = <span class="ruby-identifier">sgn</span>
|
16
|
+
<span class="ruby-identifier">i</span> = <span class="ruby-identifier">int_val</span>.<span class="ruby-identifier">abs</span>
|
17
|
+
<span class="ruby-identifier">str</span> = <span class="ruby-identifier">i</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">b</span>)
|
18
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sc</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span>
|
19
|
+
<span class="ruby-identifier">missing</span> = <span class="ruby-identifier">sc</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
20
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">missing</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">then</span>
|
21
|
+
<span class="ruby-identifier">str</span> = (<span class="ruby-value str">"0"</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">missing</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span>
|
24
22
|
<span class="ruby-keyword kw">end</span>
|
25
|
-
|
26
|
-
<span class="ruby-comment cmt"># self is between -1 and 1</span>
|
27
|
-
<span class="ruby-comment cmt"># factor = numerator.abs.div(LongMath::MAX_FLOATABLE)</span>
|
28
|
-
<span class="ruby-comment cmt"># digits = factor.to_ld.int_digits10</span>
|
29
|
-
<span class="ruby-comment cmt"># return LongDecimal(numerator.div(10**digits), scale -digits).to_f</span>
|
30
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_f</span>
|
31
|
-
<span class="ruby-keyword kw">else</span>
|
32
|
-
<span class="ruby-comment cmt"># s2 = [scale.div(2), 1].max</span>
|
33
|
-
<span class="ruby-comment cmt"># return LongDecimal(numerator.div(10**s2), scale - s2).to_f</span>
|
34
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_f</span>
|
23
|
+
<span class="ruby-identifier">str</span>[<span class="ruby-operator">-</span><span class="ruby-identifier">sc</span>, <span class="ruby-value">0</span>] = <span class="ruby-value str">"."</span>
|
35
24
|
<span class="ruby-keyword kw">end</span>
|
25
|
+
<span class="ruby-identifier">str</span> = <span class="ruby-value str">"-"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sg</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>
|
26
|
+
<span class="ruby-identifier">str</span>
|
36
27
|
<span class="ruby-keyword kw">end</span></pre>
|
37
28
|
</body>
|
38
29
|
</html>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_r (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1072</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_r</span>
|
15
|
+
<span class="ruby-constant">Rational</span>(<span class="ruby-identifier">numerator</span>, <span class="ruby-identifier">denominator</span>)
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
17
17
|
</body>
|
18
18
|
</html>
|
@@ -5,14 +5,34 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_f (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1083</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_f</span>
|
15
|
+
<span class="ruby-identifier">divisor</span> = <span class="ruby-identifier">denominator</span>
|
16
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">divisor</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">then</span>
|
17
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">numerator</span>.<span class="ruby-identifier">to_f</span>
|
18
|
+
<span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">int_val</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator"><=</span> <span class="ruby-constant">LongMath</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_FLOATABLE</span> <span class="ruby-keyword kw">then</span>
|
19
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">divisor</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">></span> <span class="ruby-constant">LongMath</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_FLOATABLE</span>) <span class="ruby-keyword kw">then</span>
|
20
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span><span class="ruby-value">.0</span>
|
21
|
+
<span class="ruby-keyword kw">else</span>
|
22
|
+
<span class="ruby-identifier">f</span> = <span class="ruby-identifier">int_val</span>.<span class="ruby-identifier">to_f</span>
|
23
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">divisor</span>
|
24
|
+
<span class="ruby-keyword kw">end</span>
|
25
|
+
<span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">numerator</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">divisor</span>
|
26
|
+
<span class="ruby-comment cmt"># self is between -1 and 1</span>
|
27
|
+
<span class="ruby-comment cmt"># factor = numerator.abs.div(LongMath::MAX_FLOATABLE)</span>
|
28
|
+
<span class="ruby-comment cmt"># digits = factor.to_ld.int_digits10</span>
|
29
|
+
<span class="ruby-comment cmt"># return LongDecimal(numerator.div(10**digits), scale -digits).to_f</span>
|
30
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_f</span>
|
31
|
+
<span class="ruby-keyword kw">else</span>
|
32
|
+
<span class="ruby-comment cmt"># s2 = [scale.div(2), 1].max</span>
|
33
|
+
<span class="ruby-comment cmt"># return LongDecimal(numerator.div(10**s2), scale - s2).to_f</span>
|
34
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_f</span>
|
35
|
+
<span class="ruby-keyword kw">end</span>
|
16
36
|
<span class="ruby-keyword kw">end</span></pre>
|
17
37
|
</body>
|
18
38
|
</html>
|
@@ -5,16 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_i (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-comment cmt"># string as an intermediate step.</span>
|
17
|
-
<span class="ruby-constant">BigDecimal</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>)
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1113</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_i</span>
|
15
|
+
<span class="ruby-identifier">numerator</span>.<span class="ruby-identifier">div</span>(<span class="ruby-identifier">denominator</span>)
|
18
16
|
<span class="ruby-keyword kw">end</span></pre>
|
19
17
|
</body>
|
20
18
|
</html>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_ld (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1120</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ld</span>
|
15
|
+
<span class="ruby-keyword kw">self</span>
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
17
17
|
</body>
|
18
18
|
</html>
|
@@ -5,25 +5,16 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>to_bd (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-
|
17
|
-
|
18
|
-
<span class="ruby-keyword kw">end</span>
|
19
|
-
|
20
|
-
<span class="ruby-identifier">n</span> = <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">*</span> <span class="ruby-value">8</span> <span class="ruby-operator">-</span> <span class="ruby-value">31</span>
|
21
|
-
<span class="ruby-identifier">int_part</span> = <span class="ruby-identifier">int_part</span> <span class="ruby-operator">>></span> <span class="ruby-identifier">n</span>
|
22
|
-
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">do</span>
|
23
|
-
<span class="ruby-identifier">int_part</span> = <span class="ruby-identifier">int_part</span> <span class="ruby-operator">>></span> <span class="ruby-value">1</span>
|
24
|
-
<span class="ruby-identifier">n</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
25
|
-
<span class="ruby-keyword kw">end</span>
|
26
|
-
<span class="ruby-identifier">n</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1127</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_bd</span>
|
15
|
+
<span class="ruby-comment cmt"># this operation is probably not used so heavily, so we can live with a</span>
|
16
|
+
<span class="ruby-comment cmt"># string as an intermediate step.</span>
|
17
|
+
<span class="ruby-constant">BigDecimal</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>)
|
27
18
|
<span class="ruby-keyword kw">end</span></pre>
|
28
19
|
</body>
|
29
20
|
</html>
|
@@ -5,42 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>denominator (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
16
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">then</span>
|
17
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span>
|
18
|
-
<span class="ruby-keyword kw">end</span>
|
19
|
-
|
20
|
-
<span class="ruby-identifier">id</span> = <span class="ruby-value">1</span>
|
21
|
-
<span class="ruby-identifier">powers</span> = []
|
22
|
-
<span class="ruby-identifier">power</span> = <span class="ruby-value">10</span>
|
23
|
-
<span class="ruby-identifier">idx</span> = <span class="ruby-value">0</span>
|
24
|
-
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">do</span>
|
25
|
-
<span class="ruby-identifier">expon</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">idx</span>
|
26
|
-
<span class="ruby-identifier">powers</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-identifier">power</span>
|
27
|
-
<span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">power</span>
|
28
|
-
<span class="ruby-identifier">id</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">expon</span>
|
29
|
-
<span class="ruby-identifier">int_part</span> = (<span class="ruby-identifier">int_part</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">power</span>).<span class="ruby-identifier">to_i</span>
|
30
|
-
<span class="ruby-identifier">idx</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
31
|
-
<span class="ruby-identifier">power</span> = <span class="ruby-identifier">power</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">power</span>
|
32
|
-
<span class="ruby-keyword kw">end</span>
|
33
|
-
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator"><</span> <span class="ruby-value">10</span> <span class="ruby-keyword kw">do</span>
|
34
|
-
<span class="ruby-identifier">idx</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
35
|
-
<span class="ruby-identifier">expon</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">idx</span>
|
36
|
-
<span class="ruby-identifier">power</span> = <span class="ruby-identifier">powers</span>[<span class="ruby-identifier">idx</span>]
|
37
|
-
<span class="ruby-comment cmt"># puts("i=#{int_part} p=#{power}\n")</span>
|
38
|
-
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">power</span>
|
39
|
-
<span class="ruby-identifier">id</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">expon</span>
|
40
|
-
<span class="ruby-identifier">int_part</span> = (<span class="ruby-identifier">int_part</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">power</span>).<span class="ruby-identifier">to_i</span>
|
41
|
-
<span class="ruby-keyword kw">end</span>
|
42
|
-
<span class="ruby-keyword kw">end</span>
|
43
|
-
<span class="ruby-identifier">id</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1141</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">denominator</span>
|
15
|
+
<span class="ruby-value">10</span><span class="ruby-operator">**</span><span class="ruby-identifier">scale</span>
|
44
16
|
<span class="ruby-keyword kw">end</span></pre>
|
45
17
|
</body>
|
46
18
|
</html>
|
@@ -5,25 +5,25 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>int_digits2 (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-keyword kw">if</span>
|
17
|
-
<span class="ruby-
|
18
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">other</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Float</span>) <span class="ruby-keyword kw">then</span>
|
19
|
-
<span class="ruby-identifier">o</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">s</span>.<span class="ruby-identifier">scale</span>, <span class="ruby-constant">ROUND_HALF_UP</span>)
|
20
|
-
<span class="ruby-keyword kw">else</span>
|
21
|
-
<span class="ruby-identifier">new_scale</span> = [<span class="ruby-identifier">s</span>.<span class="ruby-identifier">scale</span>, <span class="ruby-identifier">o</span>.<span class="ruby-identifier">scale</span>].<span class="ruby-identifier">max</span>
|
22
|
-
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">new_scale</span>)
|
23
|
-
<span class="ruby-identifier">o</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">new_scale</span>)
|
24
|
-
<span class="ruby-keyword kw">end</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1163</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">int_digits2</span>
|
15
|
+
<span class="ruby-identifier">int_part</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">abs</span>
|
16
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">then</span>
|
17
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span>
|
25
18
|
<span class="ruby-keyword kw">end</span>
|
26
|
-
|
19
|
+
|
20
|
+
<span class="ruby-identifier">n</span> = <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">*</span> <span class="ruby-value">8</span> <span class="ruby-operator">-</span> <span class="ruby-value">31</span>
|
21
|
+
<span class="ruby-identifier">int_part</span> = <span class="ruby-identifier">int_part</span> <span class="ruby-operator">>></span> <span class="ruby-identifier">n</span>
|
22
|
+
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">do</span>
|
23
|
+
<span class="ruby-identifier">int_part</span> = <span class="ruby-identifier">int_part</span> <span class="ruby-operator">>></span> <span class="ruby-value">1</span>
|
24
|
+
<span class="ruby-identifier">n</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
25
|
+
<span class="ruby-keyword kw">end</span>
|
26
|
+
<span class="ruby-identifier">n</span>
|
27
27
|
<span class="ruby-keyword kw">end</span></pre>
|
28
28
|
</body>
|
29
29
|
</html>
|
@@ -5,23 +5,42 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>int_digits10 (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-keyword kw">if</span>
|
17
|
-
<span class="ruby-
|
18
|
-
<span class="ruby-identifier">factor</span> = <span class="ruby-value">10</span><span class="ruby-operator">**</span><span class="ruby-identifier">exponent</span>
|
19
|
-
<span class="ruby-identifier">s</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">factor</span>
|
20
|
-
<span class="ruby-identifier">o</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">factor</span>
|
21
|
-
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-value">0</span>)
|
22
|
-
<span class="ruby-identifier">o</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-value">0</span>)
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1186</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">int_digits10</span>
|
15
|
+
<span class="ruby-identifier">int_part</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_i</span>.<span class="ruby-identifier">abs</span>
|
16
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">then</span>
|
17
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span>
|
23
18
|
<span class="ruby-keyword kw">end</span>
|
24
|
-
|
19
|
+
|
20
|
+
<span class="ruby-identifier">id</span> = <span class="ruby-value">1</span>
|
21
|
+
<span class="ruby-identifier">powers</span> = []
|
22
|
+
<span class="ruby-identifier">power</span> = <span class="ruby-value">10</span>
|
23
|
+
<span class="ruby-identifier">idx</span> = <span class="ruby-value">0</span>
|
24
|
+
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">int_part</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">do</span>
|
25
|
+
<span class="ruby-identifier">expon</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">idx</span>
|
26
|
+
<span class="ruby-identifier">powers</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-identifier">power</span>
|
27
|
+
<span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">power</span>
|
28
|
+
<span class="ruby-identifier">id</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">expon</span>
|
29
|
+
<span class="ruby-identifier">int_part</span> = (<span class="ruby-identifier">int_part</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">power</span>).<span class="ruby-identifier">to_i</span>
|
30
|
+
<span class="ruby-identifier">idx</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
31
|
+
<span class="ruby-identifier">power</span> = <span class="ruby-identifier">power</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">power</span>
|
32
|
+
<span class="ruby-keyword kw">end</span>
|
33
|
+
<span class="ruby-keyword kw">until</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator"><</span> <span class="ruby-value">10</span> <span class="ruby-keyword kw">do</span>
|
34
|
+
<span class="ruby-identifier">idx</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
35
|
+
<span class="ruby-identifier">expon</span> = <span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">idx</span>
|
36
|
+
<span class="ruby-identifier">power</span> = <span class="ruby-identifier">powers</span>[<span class="ruby-identifier">idx</span>]
|
37
|
+
<span class="ruby-comment cmt"># puts("i=#{int_part} p=#{power}\n")</span>
|
38
|
+
<span class="ruby-keyword kw">while</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">power</span>
|
39
|
+
<span class="ruby-identifier">id</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">expon</span>
|
40
|
+
<span class="ruby-identifier">int_part</span> = (<span class="ruby-identifier">int_part</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">power</span>).<span class="ruby-identifier">to_i</span>
|
41
|
+
<span class="ruby-keyword kw">end</span>
|
42
|
+
<span class="ruby-keyword kw">end</span>
|
43
|
+
<span class="ruby-identifier">id</span>
|
25
44
|
<span class="ruby-keyword kw">end</span></pre>
|
26
45
|
</body>
|
27
46
|
</html>
|
@@ -5,14 +5,25 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>equalize_scale (LongMath::LongDecimal)</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/longdecimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
15
|
-
<span class="ruby-
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/longdecimal.rb, line 1224</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">equalize_scale</span>(<span class="ruby-identifier">other</span>)
|
15
|
+
<span class="ruby-identifier">o</span>, <span class="ruby-identifier">s</span> = <span class="ruby-identifier">coerce</span>(<span class="ruby-identifier">other</span>)
|
16
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>) <span class="ruby-keyword kw">then</span>
|
17
|
+
<span class="ruby-comment cmt"># make sure Floats do not mess up our number of significant digits when adding</span>
|
18
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">other</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Float</span>) <span class="ruby-keyword kw">then</span>
|
19
|
+
<span class="ruby-identifier">o</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">s</span>.<span class="ruby-identifier">scale</span>, <span class="ruby-constant">ROUND_HALF_UP</span>)
|
20
|
+
<span class="ruby-keyword kw">else</span>
|
21
|
+
<span class="ruby-identifier">new_scale</span> = [<span class="ruby-identifier">s</span>.<span class="ruby-identifier">scale</span>, <span class="ruby-identifier">o</span>.<span class="ruby-identifier">scale</span>].<span class="ruby-identifier">max</span>
|
22
|
+
<span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">new_scale</span>)
|
23
|
+
<span class="ruby-identifier">o</span> = <span class="ruby-identifier">o</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">new_scale</span>)
|
24
|
+
<span class="ruby-keyword kw">end</span>
|
25
|
+
<span class="ruby-keyword kw">end</span>
|
26
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">s</span>, <span class="ruby-identifier">o</span>
|
16
27
|
<span class="ruby-keyword kw">end</span></pre>
|
17
28
|
</body>
|
18
29
|
</html>
|