long-decimal 0.00.19 → 0.00.20

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.
Files changed (152) hide show
  1. data/README +25 -22
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/doc/classes/LongDecimal.html +327 -286
  5. data/doc/classes/LongDecimal.src/M000041.html +10 -4
  6. data/doc/classes/LongDecimal.src/M000042.html +3 -2
  7. data/doc/classes/LongDecimal.src/M000043.html +10 -26
  8. data/doc/classes/LongDecimal.src/M000044.html +24 -16
  9. data/doc/classes/LongDecimal.src/M000045.html +19 -4
  10. data/doc/classes/LongDecimal.src/M000046.html +4 -15
  11. data/doc/classes/LongDecimal.src/M000047.html +13 -26
  12. data/doc/classes/LongDecimal.src/M000048.html +28 -4
  13. data/doc/classes/LongDecimal.src/M000049.html +4 -8
  14. data/doc/classes/LongDecimal.src/M000050.html +8 -6
  15. data/doc/classes/LongDecimal.src/M000051.html +6 -4
  16. data/doc/classes/LongDecimal.src/M000052.html +4 -15
  17. data/doc/classes/LongDecimal.src/M000053.html +8 -24
  18. data/doc/classes/LongDecimal.src/M000054.html +6 -14
  19. data/doc/classes/LongDecimal.src/M000055.html +4 -13
  20. data/doc/classes/LongDecimal.src/M000056.html +15 -4
  21. data/doc/classes/LongDecimal.src/M000057.html +27 -0
  22. data/doc/classes/LongDecimal.src/M000058.html +4 -4
  23. data/doc/classes/LongDecimal.src/M000060.html +4 -4
  24. data/doc/classes/LongDecimal.src/M000061.html +5 -4
  25. data/doc/classes/LongDecimal.src/M000062.html +5 -8
  26. data/doc/classes/LongDecimal.src/M000063.html +4 -9
  27. data/doc/classes/LongDecimal.src/M000064.html +6 -7
  28. data/doc/classes/LongDecimal.src/M000065.html +6 -6
  29. data/doc/classes/LongDecimal.src/M000066.html +9 -4
  30. data/doc/classes/LongDecimal.src/M000067.html +7 -13
  31. data/doc/classes/LongDecimal.src/M000068.html +4 -9
  32. data/doc/classes/LongDecimal.src/M000069.html +13 -7
  33. data/doc/classes/LongDecimal.src/M000070.html +7 -18
  34. data/doc/classes/LongDecimal.src/M000071.html +8 -7
  35. data/doc/classes/LongDecimal.src/M000072.html +20 -5
  36. data/doc/classes/LongDecimal.src/M000073.html +6 -7
  37. data/doc/classes/LongDecimal.src/M000074.html +5 -9
  38. data/doc/classes/LongDecimal.src/M000075.html +5 -5
  39. data/doc/classes/LongDecimal.src/M000076.html +9 -4
  40. data/doc/classes/LongDecimal.src/M000077.html +7 -5
  41. data/doc/classes/LongDecimal.src/M000078.html +4 -7
  42. data/doc/classes/LongDecimal.src/M000079.html +7 -4
  43. data/doc/classes/LongDecimal.src/M000080.html +7 -4
  44. data/doc/classes/LongDecimal.src/M000081.html +4 -9
  45. data/doc/classes/LongDecimal.src/M000082.html +3 -8
  46. data/doc/classes/LongDecimal.src/M000083.html +9 -5
  47. data/doc/classes/LongDecimal.src/M000084.html +7 -7
  48. data/doc/classes/LongDecimal.src/M000085.html +5 -4
  49. data/doc/classes/LongDecimal.src/M000086.html +9 -4
  50. data/doc/classes/LongDecimal.src/M000087.html +4 -4
  51. data/doc/classes/LongDecimal.src/M000088.html +4 -4
  52. data/doc/classes/LongDecimal.src/M000089.html +4 -59
  53. data/doc/classes/LongDecimal.src/M000090.html +4 -4
  54. data/doc/classes/LongDecimal.src/M000091.html +59 -4
  55. data/doc/classes/LongDecimal.src/M000092.html +18 -0
  56. data/doc/classes/LongDecimal.src/M000093.html +18 -0
  57. data/doc/classes/LongDecimal.src/M000096.html +5 -4
  58. data/doc/classes/LongDecimal.src/M000097.html +5 -4
  59. data/doc/classes/LongDecimal.src/M000098.html +4 -4
  60. data/doc/classes/LongDecimal.src/M000099.html +4 -4
  61. data/doc/classes/LongDecimal.src/M000100.html +18 -0
  62. data/doc/classes/LongDecimal.src/M000101.html +18 -0
  63. data/doc/classes/LongDecimalBase.html +53 -53
  64. data/doc/classes/LongDecimalBase.src/M000104.html +4 -4
  65. data/doc/classes/LongDecimalBase.src/M000105.html +4 -4
  66. data/doc/classes/LongDecimalBase.src/M000106.html +4 -4
  67. data/doc/classes/LongDecimalBase.src/M000107.html +4 -4
  68. data/doc/classes/LongDecimalBase.src/M000108.html +18 -0
  69. data/doc/classes/LongDecimalBase.src/M000109.html +4 -9
  70. data/doc/classes/LongDecimalBase.src/M000112.html +9 -4
  71. data/doc/classes/LongDecimalBase.src/M000113.html +19 -0
  72. data/doc/classes/LongDecimalBase.src/M000114.html +18 -0
  73. data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
  74. data/doc/classes/LongDecimalQuot.src/M000004.html +22 -5
  75. data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
  76. data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
  77. data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
  78. data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
  79. data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
  80. data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
  81. data/doc/classes/LongDecimalQuot.src/M000011.html +1 -1
  82. data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
  83. data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
  84. data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
  85. data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
  86. data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
  87. data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
  88. data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
  89. data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
  90. data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
  91. data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
  92. data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
  93. data/doc/classes/LongDecimalQuot.src/M000023.html +1 -1
  94. data/doc/classes/LongDecimalQuot.src/M000024.html +1 -1
  95. data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
  96. data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
  97. data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
  98. data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
  99. data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
  100. data/doc/classes/LongDecimalQuot.src/M000032.html +1 -1
  101. data/doc/classes/LongDecimalQuot.src/M000033.html +1 -1
  102. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +10 -10
  103. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000141.html +22 -0
  104. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000142.html +18 -0
  105. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000146.html +22 -0
  106. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000147.html +18 -0
  107. data/doc/classes/LongMath.html +191 -137
  108. data/doc/classes/LongMath.src/M000115.html +5 -4
  109. data/doc/classes/LongMath.src/M000116.html +4 -5
  110. data/doc/classes/LongMath.src/M000117.html +4 -4
  111. data/doc/classes/LongMath.src/M000118.html +5 -18
  112. data/doc/classes/LongMath.src/M000119.html +4 -18
  113. data/doc/classes/LongMath.src/M000120.html +18 -5
  114. data/doc/classes/LongMath.src/M000121.html +16 -27
  115. data/doc/classes/LongMath.src/M000122.html +4 -4
  116. data/doc/classes/LongMath.src/M000123.html +17 -44
  117. data/doc/classes/LongMath.src/M000124.html +5 -21
  118. data/doc/classes/LongMath.src/M000125.html +49 -29
  119. data/doc/classes/LongMath.src/M000126.html +20 -47
  120. data/doc/classes/LongMath.src/M000127.html +36 -8
  121. data/doc/classes/LongMath.src/M000128.html +6 -4
  122. data/doc/classes/LongMath.src/M000129.html +33 -4
  123. data/doc/classes/LongMath.src/M000130.html +40 -56
  124. data/doc/classes/LongMath.src/M000131.html +8 -43
  125. data/doc/classes/LongMath.src/M000132.html +4 -10
  126. data/doc/classes/LongMath.src/M000133.html +4 -7
  127. data/doc/classes/LongMath.src/M000134.html +58 -15
  128. data/doc/classes/LongMath.src/M000135.html +39 -16
  129. data/doc/classes/LongMath.src/M000136.html +6 -39
  130. data/doc/classes/LongMath.src/M000137.html +5 -168
  131. data/doc/classes/LongMath.src/M000138.html +34 -0
  132. data/doc/classes/LongMath.src/M000139.html +34 -0
  133. data/doc/classes/LongMath.src/M000140.html +57 -0
  134. data/doc/classes/LongMath.src/M000141.html +219 -0
  135. data/doc/classes/LongMath.src/M000142.html +33 -0
  136. data/doc/classes/LongMath.src/M000143.html +70 -0
  137. data/doc/classes/LongMath.src/M000144.html +58 -0
  138. data/doc/classes/LongMath/CacheKey.html +164 -0
  139. data/doc/classes/LongMath/CacheKey.src/M000140.html +36 -0
  140. data/doc/classes/LongMath/CacheKey.src/M000145.html +36 -0
  141. data/doc/classes/Numeric.html +5 -5
  142. data/doc/classes/Numeric.src/M000102.html +23 -0
  143. data/doc/classes/Rational.html +5 -5
  144. data/doc/classes/Rational.src/M000103.html +23 -0
  145. data/doc/created.rid +1 -1
  146. data/doc/files/lib/long-decimal_rb.html +2 -2
  147. data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
  148. data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
  149. data/doc/fr_method_index.html +106 -101
  150. data/lib/long-decimal.rb +203 -85
  151. data/test/testlongdecimal.rb +372 -69
  152. metadata +28 -2
@@ -37,8 +37,8 @@
37
37
  <span class="ruby-comment cmt"># we need to come up with a better rule here.</span>
38
38
  <span class="ruby-comment cmt"># if denominator is any product of powers of 2 and 5, we do not need to round</span>
39
39
  <span class="ruby-identifier">denom</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">denominator</span>
40
- <span class="ruby-identifier">mul_2</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">denom</span>, <span class="ruby-value">2</span>)
41
- <span class="ruby-identifier">mul_5</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">denom</span>, <span class="ruby-value">5</span>)
40
+ <span class="ruby-identifier">mul_2</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">denom</span>, <span class="ruby-value">2</span>)
41
+ <span class="ruby-identifier">mul_5</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">denom</span>, <span class="ruby-value">5</span>)
42
42
  <span class="ruby-identifier">iscale</span> = [<span class="ruby-identifier">mul_2</span>, <span class="ruby-identifier">mul_5</span>].<span class="ruby-identifier">max</span>
43
43
  <span class="ruby-identifier">scale</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">iscale</span>
44
44
  <span class="ruby-identifier">denom</span> <span class="ruby-operator">/=</span> <span class="ruby-value">2</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">mul_2</span>
@@ -106,8 +106,14 @@
106
106
  <span class="ruby-identifier">int_val</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">int_val</span>
107
107
  <span class="ruby-keyword kw">end</span>
108
108
  <span class="ruby-keyword kw">end</span>
109
- <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">scale</span>
110
- <span class="ruby-ivar">@int_val</span> = <span class="ruby-identifier">int_val</span>
109
+ <span class="ruby-comment cmt"># scale is the number of digits that go after the decimal point</span>
110
+ <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">scale</span>
111
+ <span class="ruby-comment cmt"># int_val holds all the digits. The value actually expressed by self is</span>
112
+ <span class="ruby-comment cmt"># int_val * 10**(-scale)</span>
113
+ <span class="ruby-ivar">@int_val</span> = <span class="ruby-identifier">int_val</span>
114
+ <span class="ruby-comment cmt"># used for storing the number of digits before the decimal point.</span>
115
+ <span class="ruby-comment cmt"># Is nil, until it is used the first time</span>
116
+ <span class="ruby-ivar">@digits10</span> = <span class="ruby-keyword kw">nil</span>
111
117
 
112
118
  <span class="ruby-keyword kw">end</span></pre>
113
119
  </body>
@@ -10,7 +10,7 @@
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 358</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 364</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scale=</span>(<span class="ruby-identifier">s</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;non integer arg \&quot;#{s.inspect}\&quot;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>
16
16
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;negative arg \&quot;#{s.inspect}\&quot;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
@@ -27,7 +27,8 @@
27
27
  <span class="ruby-comment cmt"># here we actually do rounding</span>
28
28
  <span class="ruby-ivar">@int_val</span> = (<span class="ruby-ivar">@int_val</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">f</span>).<span class="ruby-identifier">to_i</span>
29
29
  <span class="ruby-keyword kw">end</span>
30
- <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">s</span>
30
+ <span class="ruby-ivar">@scale</span> = <span class="ruby-identifier">s</span>
31
+ <span class="ruby-ivar">@digits10</span> = <span class="ruby-keyword kw">nil</span>
31
32
  <span class="ruby-keyword kw">end</span>
32
33
  <span class="ruby-keyword kw">end</span></pre>
33
34
  </body>
@@ -5,37 +5,21 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>round_to_scale (LongDecimal)</title>
8
+ <title>round_trailing_zeros (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/long-decimal.rb, line 388</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">&quot;new_scale #{new_scale.inspect} must be integer&quot;</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">&quot;new_scale #{new_scale.inspect} must be &gt;= 0&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_scale</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
18
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;mode #{mode.inspect} must be legal rounding mode&quot;</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">&gt;</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">&quot;mode ROUND_UNNECESSARY not applicable, remainder #{rem.to_s} is not zero&quot;</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 390</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">round_trailing_zeros</span>
15
+ <span class="ruby-identifier">n</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_10</span>(<span class="ruby-identifier">int_val</span>)
16
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">n</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-keyword kw">self</span>
18
+ <span class="ruby-keyword kw">end</span>
19
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">n</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scale</span>) <span class="ruby-keyword kw">then</span>
20
+ <span class="ruby-identifier">n</span> = <span class="ruby-identifier">scale</span>
38
21
  <span class="ruby-keyword kw">end</span>
22
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">scale</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">n</span>)
39
23
  <span class="ruby-keyword kw">end</span></pre>
40
24
  </body>
41
25
  </html>
@@ -5,28 +5,36 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_s (LongDecimal)</title>
8
+ <title>round_to_scale (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/long-decimal.rb, line 427</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>
21
- <span class="ruby-keyword kw">end</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 409</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">&quot;new_scale #{new_scale.inspect} must be integer&quot;</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">&quot;new_scale #{new_scale.inspect} must be &gt;= 0&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">new_scale</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
18
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;mode #{mode.inspect} must be legal rounding mode&quot;</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>
22
21
  <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">&amp;&amp;</span> <span class="ruby-value">2</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">base</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">base</span> <span class="ruby-operator">&lt;=</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">&quot;base must be integer between 2 and 36&quot;</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">&gt;</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">&quot;mode ROUND_UNNECESSARY not applicable, remainder #{rem.to_s} is not zero&quot;</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>
26
36
  <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">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>)
29
- <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>)
37
+ <span class="ruby-constant">LongDecimal</span>(<span class="ruby-identifier">new_int_val</span>, <span class="ruby-identifier">new_scale</span>)
30
38
  <span class="ruby-keyword kw">end</span>
31
39
  <span class="ruby-keyword kw">end</span></pre>
32
40
  </body>
@@ -5,14 +5,29 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_s_10 (LongDecimal)</title>
8
+ <title>to_s (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/long-decimal.rb, line 450</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 448</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>
21
+ <span class="ruby-keyword kw">end</span>
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">&amp;&amp;</span> <span class="ruby-value">2</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">base</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">base</span> <span class="ruby-operator">&lt;=</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">&quot;base must be integer between 2 and 36&quot;</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">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>)
29
+ <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>)
30
+ <span class="ruby-keyword kw">end</span>
16
31
  <span class="ruby-keyword kw">end</span></pre>
17
32
  </body>
18
33
  </html>
@@ -5,25 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_s_internal (LongDecimal)</title>
8
+ <title>to_s_10 (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/long-decimal.rb, line 457</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">&gt;</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">&gt;</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">&quot;0&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">missing</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span>
22
- <span class="ruby-keyword kw">end</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">&quot;.&quot;</span>
24
- <span class="ruby-keyword kw">end</span>
25
- <span class="ruby-identifier">str</span> = <span class="ruby-value str">&quot;-&quot;</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">&lt;</span> <span class="ruby-value">0</span>
26
- <span class="ruby-identifier">str</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 471</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>)
27
16
  <span class="ruby-keyword kw">end</span></pre>
28
17
  </body>
29
18
  </html>
@@ -5,38 +5,25 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_f (LongDecimal)</title>
8
+ <title>to_s_internal (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/long-decimal.rb, line 482</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">numerator</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&lt;=</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">&gt;</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">numerator</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">&lt;</span> <span class="ruby-identifier">divisor</span>
26
- <span class="ruby-comment cmt"># self is between -1 and 1</span>
27
-
28
- <span class="ruby-comment cmt"># factor = numerator.abs.div(LongMath::MAX_FLOATABLE)</span>
29
- <span class="ruby-comment cmt"># digits = factor.to_ld.int_digits10</span>
30
- <span class="ruby-comment cmt"># return LongDecimal(numerator.div(10**digits), scale -digits).to_f</span>
31
- <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>
32
- <span class="ruby-keyword kw">else</span>
33
- <span class="ruby-identifier">q</span> = <span class="ruby-identifier">numerator</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">divisor</span>
34
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">q</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1000000000000000000000</span>)
35
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">q</span>.<span class="ruby-identifier">to_f</span>
36
- <span class="ruby-keyword kw">else</span>
37
- <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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 478</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">&gt;</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">&gt;</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">&quot;0&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">missing</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">str</span>
38
22
  <span class="ruby-keyword kw">end</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">&quot;.&quot;</span>
39
24
  <span class="ruby-keyword kw">end</span>
25
+ <span class="ruby-identifier">str</span> = <span class="ruby-value str">&quot;-&quot;</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">&lt;</span> <span class="ruby-value">0</span>
26
+ <span class="ruby-identifier">str</span>
40
27
  <span class="ruby-keyword kw">end</span></pre>
41
28
  </body>
42
29
  </html>
@@ -5,14 +5,38 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_i (LongDecimal)</title>
8
+ <title>to_f (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/long-decimal.rb, line 516</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 503</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">numerator</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&lt;=</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">&gt;</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">numerator</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">&lt;</span> <span class="ruby-identifier">divisor</span>
26
+ <span class="ruby-comment cmt"># self is between -1 and 1</span>
27
+
28
+ <span class="ruby-comment cmt"># factor = numerator.abs.div(LongMath::MAX_FLOATABLE)</span>
29
+ <span class="ruby-comment cmt"># digits = factor.to_ld.int_digits10</span>
30
+ <span class="ruby-comment cmt"># return LongDecimal(numerator.div(10**digits), scale -digits).to_f</span>
31
+ <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>
32
+ <span class="ruby-keyword kw">else</span>
33
+ <span class="ruby-identifier">q</span> = <span class="ruby-identifier">numerator</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">divisor</span>
34
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">q</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1000000000000000000000</span>)
35
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">q</span>.<span class="ruby-identifier">to_f</span>
36
+ <span class="ruby-keyword kw">else</span>
37
+ <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>
38
+ <span class="ruby-keyword kw">end</span>
39
+ <span class="ruby-keyword kw">end</span>
16
40
  <span class="ruby-keyword kw">end</span></pre>
17
41
  </body>
18
42
  </html>
@@ -5,18 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_ld (LongDecimal)</title>
8
+ <title>to_i (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/long-decimal.rb, line 525</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-keyword kw">if</span> (<span class="ruby-identifier">prec</span>.<span class="ruby-identifier">nil?</span>)
16
- <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
17
- <span class="ruby-keyword kw">else</span>
18
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
19
- <span class="ruby-keyword kw">end</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 537</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>)
20
16
  <span class="ruby-keyword kw">end</span></pre>
21
17
  </body>
22
18
  </html>
@@ -5,16 +5,18 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>to_bd (LongDecimal)</title>
8
+ <title>to_ld (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/long-decimal.rb, line 536</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 546</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-keyword kw">if</span> (<span class="ruby-identifier">prec</span>.<span class="ruby-identifier">nil?</span>)
16
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
17
+ <span class="ruby-keyword kw">else</span>
18
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
19
+ <span class="ruby-keyword kw">end</span>
18
20
  <span class="ruby-keyword kw">end</span></pre>
19
21
  </body>
20
22
  </html>
@@ -5,14 +5,16 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>denominator (LongDecimal)</title>
8
+ <title>to_bd (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/long-decimal.rb, line 550</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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 557</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>)
16
18
  <span class="ruby-keyword kw">end</span></pre>
17
19
  </body>
18
20
  </html>
@@ -5,25 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>int_digits2 (LongDecimal)</title>
8
+ <title>denominator (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/long-decimal.rb, line 572</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">abs</span>.<span class="ruby-identifier">to_i</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>
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">&gt;&gt;</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">&gt;&gt;</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/long-decimal.rb, line 571</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>
27
16
  <span class="ruby-keyword kw">end</span></pre>
28
17
  </body>
29
18
  </html>
@@ -5,41 +5,25 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>int_digits10 (LongDecimal)</title>
8
+ <title>int_digits2 (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/long-decimal.rb, line 595</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">int_digits10</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 593</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">int_digits2</span>
15
15
  <span class="ruby-identifier">int_part</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">abs</span>.<span class="ruby-identifier">to_i</span>
16
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
17
  <span class="ruby-keyword kw">return</span> <span class="ruby-value">0</span>
18
18
  <span class="ruby-keyword kw">end</span>
19
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>
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">&gt;&gt;</span> <span class="ruby-identifier">n</span>
24
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>
25
- <span class="ruby-identifier">expon</span> = <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</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">&lt;</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>
23
+ <span class="ruby-identifier">int_part</span> = <span class="ruby-identifier">int_part</span> <span class="ruby-operator">&gt;&gt;</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>
32
25
  <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">&lt;</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">&lt;&lt;</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-keyword kw">while</span> <span class="ruby-identifier">int_part</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">power</span>
38
- <span class="ruby-identifier">id</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">expon</span>
39
- <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>
40
- <span class="ruby-keyword kw">end</span>
41
- <span class="ruby-keyword kw">end</span>
42
- <span class="ruby-identifier">id</span>
26
+ <span class="ruby-identifier">n</span>
43
27
  <span class="ruby-keyword kw">end</span></pre>
44
28
  </body>
45
29
  </html>