long-decimal 0.00.22 → 0.01.00

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 (159) hide show
  1. data/README +157 -32
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/doc/classes/LongDecimal.src/M000036.html +1 -1
  5. data/doc/classes/LongDecimal.src/M000037.html +1 -1
  6. data/doc/classes/LongDecimal.src/M000038.html +1 -1
  7. data/doc/classes/LongDecimal.src/M000039.html +1 -1
  8. data/doc/classes/LongDecimal.src/M000040.html +1 -1
  9. data/doc/classes/LongDecimal.src/M000041.html +1 -1
  10. data/doc/classes/LongDecimal.src/M000042.html +1 -1
  11. data/doc/classes/LongDecimal.src/M000043.html +1 -1
  12. data/doc/classes/LongDecimal.src/M000044.html +1 -1
  13. data/doc/classes/LongDecimal.src/M000045.html +1 -1
  14. data/doc/classes/LongDecimal.src/M000046.html +1 -1
  15. data/doc/classes/LongDecimal.src/M000047.html +1 -1
  16. data/doc/classes/LongDecimal.src/M000048.html +1 -1
  17. data/doc/classes/LongDecimal.src/M000049.html +1 -1
  18. data/doc/classes/LongDecimal.src/M000050.html +1 -1
  19. data/doc/classes/LongDecimal.src/M000051.html +1 -1
  20. data/doc/classes/LongDecimal.src/M000052.html +1 -1
  21. data/doc/classes/LongDecimal.src/M000053.html +1 -1
  22. data/doc/classes/LongDecimal.src/M000054.html +1 -1
  23. data/doc/classes/LongDecimal.src/M000055.html +1 -1
  24. data/doc/classes/LongDecimal.src/M000056.html +1 -1
  25. data/doc/classes/LongDecimal.src/M000057.html +1 -1
  26. data/doc/classes/LongDecimal.src/M000058.html +1 -1
  27. data/doc/classes/LongDecimal.src/M000059.html +1 -1
  28. data/doc/classes/LongDecimal.src/M000060.html +1 -1
  29. data/doc/classes/LongDecimal.src/M000062.html +1 -1
  30. data/doc/classes/LongDecimal.src/M000063.html +1 -1
  31. data/doc/classes/LongDecimal.src/M000064.html +1 -1
  32. data/doc/classes/LongDecimal.src/M000065.html +1 -1
  33. data/doc/classes/LongDecimal.src/M000066.html +1 -1
  34. data/doc/classes/LongDecimal.src/M000067.html +1 -1
  35. data/doc/classes/LongDecimal.src/M000068.html +1 -1
  36. data/doc/classes/LongDecimal.src/M000069.html +1 -1
  37. data/doc/classes/LongDecimal.src/M000070.html +1 -1
  38. data/doc/classes/LongDecimal.src/M000071.html +6 -2
  39. data/doc/classes/LongDecimal.src/M000072.html +1 -1
  40. data/doc/classes/LongDecimal.src/M000073.html +1 -1
  41. data/doc/classes/LongDecimal.src/M000074.html +1 -1
  42. data/doc/classes/LongDecimal.src/M000075.html +1 -1
  43. data/doc/classes/LongDecimal.src/M000076.html +1 -1
  44. data/doc/classes/LongDecimal.src/M000077.html +1 -1
  45. data/doc/classes/LongDecimal.src/M000078.html +1 -1
  46. data/doc/classes/LongDecimal.src/M000079.html +1 -1
  47. data/doc/classes/LongDecimal.src/M000080.html +1 -1
  48. data/doc/classes/LongDecimal.src/M000081.html +1 -1
  49. data/doc/classes/LongDecimal.src/M000082.html +1 -1
  50. data/doc/classes/LongDecimal.src/M000083.html +1 -1
  51. data/doc/classes/LongDecimal.src/M000084.html +1 -1
  52. data/doc/classes/LongDecimal.src/M000085.html +1 -1
  53. data/doc/classes/LongDecimal.src/M000086.html +1 -1
  54. data/doc/classes/LongDecimal.src/M000087.html +1 -1
  55. data/doc/classes/LongDecimal.src/M000088.html +1 -1
  56. data/doc/classes/LongDecimal.src/M000089.html +1 -1
  57. data/doc/classes/LongDecimal.src/M000090.html +1 -1
  58. data/doc/classes/LongDecimal.src/M000091.html +1 -1
  59. data/doc/classes/LongDecimal.src/M000092.html +1 -1
  60. data/doc/classes/LongDecimal.src/M000093.html +1 -1
  61. data/doc/classes/LongDecimal.src/M000094.html +1 -1
  62. data/doc/classes/LongDecimal.src/M000095.html +1 -1
  63. data/doc/classes/LongDecimal.src/M000098.html +1 -1
  64. data/doc/classes/LongDecimal.src/M000099.html +1 -1
  65. data/doc/classes/LongDecimal.src/M000100.html +1 -1
  66. data/doc/classes/LongDecimal.src/M000101.html +1 -1
  67. data/doc/classes/LongDecimal.src/M000102.html +18 -0
  68. data/doc/classes/LongDecimal.src/M000103.html +18 -0
  69. data/doc/classes/LongDecimalBase.src/M000107.html +1 -1
  70. data/doc/classes/LongDecimalBase.src/M000108.html +1 -1
  71. data/doc/classes/LongDecimalBase.src/M000109.html +1 -1
  72. data/doc/classes/LongDecimalBase.src/M000110.html +1 -1
  73. data/doc/classes/LongDecimalBase.src/M000111.html +1 -1
  74. data/doc/classes/LongDecimalBase.src/M000112.html +1 -1
  75. data/doc/classes/LongDecimalBase.src/M000115.html +1 -1
  76. data/doc/classes/LongDecimalBase.src/M000116.html +19 -0
  77. data/doc/classes/LongDecimalBase.src/M000117.html +18 -0
  78. data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
  79. data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
  80. data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
  81. data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
  82. data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
  83. data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
  84. data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
  85. data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
  86. data/doc/classes/LongDecimalQuot.src/M000011.html +1 -1
  87. data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
  88. data/doc/classes/LongDecimalQuot.src/M000013.html +13 -2
  89. data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
  90. data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
  91. data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
  92. data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
  93. data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
  94. data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
  95. data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
  96. data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
  97. data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
  98. data/doc/classes/LongDecimalQuot.src/M000023.html +1 -1
  99. data/doc/classes/LongDecimalQuot.src/M000024.html +1 -1
  100. data/doc/classes/LongDecimalQuot.src/M000025.html +18 -1
  101. data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
  102. data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
  103. data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
  104. data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
  105. data/doc/classes/LongDecimalQuot.src/M000030.html +18 -0
  106. data/doc/classes/LongDecimalQuot.src/M000031.html +18 -0
  107. data/doc/classes/LongDecimalQuot.src/M000034.html +18 -0
  108. data/doc/classes/LongDecimalQuot.src/M000035.html +18 -0
  109. data/doc/classes/LongDecimalRoundingMode.html +17 -2
  110. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +17 -2
  111. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000150.html +22 -0
  112. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000151.html +18 -0
  113. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000152.html +18 -0
  114. data/doc/classes/LongMath.src/M000118.html +1 -1
  115. data/doc/classes/LongMath.src/M000119.html +1 -1
  116. data/doc/classes/LongMath.src/M000120.html +1 -1
  117. data/doc/classes/LongMath.src/M000121.html +1 -1
  118. data/doc/classes/LongMath.src/M000122.html +1 -1
  119. data/doc/classes/LongMath.src/M000123.html +1 -1
  120. data/doc/classes/LongMath.src/M000124.html +1 -1
  121. data/doc/classes/LongMath.src/M000125.html +1 -1
  122. data/doc/classes/LongMath.src/M000126.html +1 -1
  123. data/doc/classes/LongMath.src/M000127.html +1 -1
  124. data/doc/classes/LongMath.src/M000128.html +1 -1
  125. data/doc/classes/LongMath.src/M000129.html +1 -1
  126. data/doc/classes/LongMath.src/M000130.html +1 -1
  127. data/doc/classes/LongMath.src/M000131.html +1 -1
  128. data/doc/classes/LongMath.src/M000132.html +1 -1
  129. data/doc/classes/LongMath.src/M000133.html +1 -1
  130. data/doc/classes/LongMath.src/M000134.html +1 -1
  131. data/doc/classes/LongMath.src/M000135.html +1 -1
  132. data/doc/classes/LongMath.src/M000136.html +1 -1
  133. data/doc/classes/LongMath.src/M000137.html +11 -3
  134. data/doc/classes/LongMath.src/M000138.html +2 -1
  135. data/doc/classes/LongMath.src/M000139.html +1 -1
  136. data/doc/classes/LongMath.src/M000140.html +1 -1
  137. data/doc/classes/LongMath.src/M000141.html +1 -1
  138. data/doc/classes/LongMath.src/M000142.html +2 -2
  139. data/doc/classes/LongMath.src/M000143.html +2 -2
  140. data/doc/classes/LongMath.src/M000144.html +3 -2
  141. data/doc/classes/LongMath.src/M000145.html +20 -10
  142. data/doc/classes/LongMath.src/M000146.html +3 -2
  143. data/doc/classes/LongMath.src/M000147.html +80 -0
  144. data/doc/classes/LongMath.src/M000148.html +63 -0
  145. data/doc/classes/LongMath/CacheKey.src/M000149.html +36 -0
  146. data/doc/classes/Numeric.src/M000104.html +23 -0
  147. data/doc/classes/Numeric.src/M000105.html +18 -0
  148. data/doc/classes/Rational.src/M000106.html +23 -0
  149. data/doc/created.rid +1 -1
  150. data/doc/files/lib/long-decimal_rb.html +189 -0
  151. data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
  152. data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
  153. data/doc/fr_method_index.html +20 -19
  154. data/lib/long-decimal.rb +105 -30
  155. data/test/testlongdecimal.rb +448 -3
  156. data/test/testlongdeclib.rb +127 -28
  157. data/test/testrandom.rb +35 -22
  158. data/version.rb +4 -4
  159. metadata +20 -2
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>hash (LongDecimalQuot)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1743</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hash</span>
15
+ <span class="ruby-identifier">rat</span>.<span class="ruby-identifier">hash</span> <span class="ruby-operator">^</span> <span class="ruby-identifier">scale</span>.<span class="ruby-identifier">hash</span>
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>inspect (LongDecimalQuot)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1751</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inspect</span>
15
+ <span class="ruby-identifier">sprintf</span>(<span class="ruby-value str">&quot;LongDecimalQuot(Rational(%s, %s), %s)&quot;</span>, <span class="ruby-identifier">numerator</span>.<span class="ruby-identifier">inspect</span>, <span class="ruby-identifier">denominator</span>.<span class="ruby-identifier">inspect</span>, <span class="ruby-identifier">scale</span>.<span class="ruby-identifier">inspect</span>)
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -152,15 +152,30 @@ rounding modes as constants
152
152
  <td>=</td>
153
153
  <td class="context-item-value">RoundingModeClass.new(:ROUND_HALF_DOWN, 5)</td>
154
154
  </tr>
155
+ <tr class="top-aligned-row context-row">
156
+ <td class="context-item-name">ROUND_HALF_CEILING</td>
157
+ <td>=</td>
158
+ <td class="context-item-value">RoundingModeClass.new(:ROUND_HALF_CEILING, 6)</td>
159
+ </tr>
160
+ <tr class="top-aligned-row context-row">
161
+ <td class="context-item-name">ROUND_HALF_FLOOR</td>
162
+ <td>=</td>
163
+ <td class="context-item-value">RoundingModeClass.new(:ROUND_HALF_FLOOR, 7)</td>
164
+ </tr>
155
165
  <tr class="top-aligned-row context-row">
156
166
  <td class="context-item-name">ROUND_HALF_EVEN</td>
157
167
  <td>=</td>
158
- <td class="context-item-value">RoundingModeClass.new(:ROUND_HALF_EVEN, 6)</td>
168
+ <td class="context-item-value">RoundingModeClass.new(:ROUND_HALF_EVEN, 8)</td>
159
169
  </tr>
160
170
  <tr class="top-aligned-row context-row">
161
171
  <td class="context-item-name">ROUND_UNNECESSARY</td>
162
172
  <td>=</td>
163
- <td class="context-item-value">RoundingModeClass.new(:ROUND_UNNECESSARY, 7)</td>
173
+ <td class="context-item-value">RoundingModeClass.new(:ROUND_UNNECESSARY, 9)</td>
174
+ </tr>
175
+ <tr class="top-aligned-row context-row">
176
+ <td class="context-item-name">INVERSE_MODE</td>
177
+ <td>=</td>
178
+ <td class="context-item-value">{ ROUND_UP =&gt; ROUND_DOWN, ROUND_DOWN =&gt; ROUND_UP, ROUND_CEILING =&gt; ROUND_FLOOR, ROUND_FLOOR =&gt; ROUND_CEILING, ROUND_HALF_UP =&gt; ROUND_HALF_DOWN, ROUND_HALF_DOWN =&gt; ROUND_HALF_UP, ROUND_HALF_CEILING =&gt; ROUND_HALF_FLOOR, ROUND_HALF_FLOOR =&gt; ROUND_HALF_CEILING, ROUND_HALF_EVEN =&gt; ROUND_HALF_EVEN, ROUND_UNNECESSARY =&gt; ROUND_UNNECESSARY</td>
164
179
  </tr>
165
180
  </table>
166
181
  </div>
@@ -102,7 +102,8 @@ by <a href="../LongDecimal.html">LongDecimal</a>
102
102
 
103
103
  <div class="name-list">
104
104
  <a href="#M000150">&lt;=&gt;</a>&nbsp;&nbsp;
105
- <a href="#M000151">hash</a>&nbsp;&nbsp;
105
+ <a href="#M000152">hash</a>&nbsp;&nbsp;
106
+ <a href="#M000151">inverse</a>&nbsp;&nbsp;
106
107
  </div>
107
108
  </div>
108
109
 
@@ -148,13 +149,27 @@ introduce some ordering for rounding modes
148
149
  </div>
149
150
  </div>
150
151
 
152
+ <div id="method-M000152" class="method-detail">
153
+ <a name="M000152"></a>
154
+
155
+ <div class="method-heading">
156
+ <a href="RoundingModeClass.src/M000152.html" target="Code" class="method-signature"
157
+ onclick="popupCode('RoundingModeClass.src/M000152.html');return false;">
158
+ <span class="method-name">hash</span><span class="method-args">()</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ </div>
164
+ </div>
165
+
151
166
  <div id="method-M000151" class="method-detail">
152
167
  <a name="M000151"></a>
153
168
 
154
169
  <div class="method-heading">
155
170
  <a href="RoundingModeClass.src/M000151.html" target="Code" class="method-signature"
156
171
  onclick="popupCode('RoundingModeClass.src/M000151.html');return false;">
157
- <span class="method-name">hash</span><span class="method-args">()</span>
172
+ <span class="method-name">inverse</span><span class="method-args">()</span>
158
173
  </a>
159
174
  </div>
160
175
 
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>&lt;=&gt; (LongDecimalRoundingMode::RoundingModeClass)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 32</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;=&gt;</span>(<span class="ruby-identifier">o</span>)
15
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">respond_to?</span><span class="ruby-identifier">:num</span>
16
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">num</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">o</span>.<span class="ruby-identifier">num</span>
17
+ <span class="ruby-keyword kw">else</span>
18
+ <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">num</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">o</span>
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-keyword kw">end</span></pre>
21
+ </body>
22
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>inverse (LongDecimalRoundingMode::RoundingModeClass)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 40</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inverse</span>
15
+ <span class="ruby-constant">LongDecimalRoundingMode</span><span class="ruby-operator">::</span><span class="ruby-constant">INVERSE_MODE</span>[<span class="ruby-keyword kw">self</span>]
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>hash (LongDecimalRoundingMode::RoundingModeClass)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 44</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hash</span>
15
+ <span class="ruby-identifier">num</span>
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -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 1893</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1944</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">&quot;word_len&quot;</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;#{name} must be a positive number &lt;= 1024&quot;</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">word_len</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">word_len</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">word_len</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">1024</span>
16
16
  <span class="ruby-identifier">word_len</span>
@@ -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 1901</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1952</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">&quot;x&quot;</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;#{name}=#{x.inspect} must be Integer&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 1908</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1959</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">&quot;x&quot;</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must be LongDecimal&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 1916</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1967</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">&quot;prec&quot;</span>)
15
15
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
16
16
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;#{name}=#{prec.inspect} must be &gt;= 0&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">prec</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
@@ -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 1925</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1976</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">&quot;mode&quot;</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;#{name}=#{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>
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 1934</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1985</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">word_len</span> = <span class="ruby-value">32</span>)
15
15
  <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
16
16
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
@@ -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 1956</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2007</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">merge_from_words</span>(<span class="ruby-identifier">words</span>, <span class="ruby-identifier">word_len</span> = <span class="ruby-value">32</span>)
15
15
  <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
16
16
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">&quot;words must be array of length &gt; 0&quot;</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">words</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Array</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
@@ -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 1979</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2030</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtb</span>(<span class="ruby-identifier">x</span>)
15
15
  <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">x</span>)
16
16
  <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
@@ -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 1990</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2041</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">x</span>)
15
15
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
16
 
@@ -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 2028</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2079</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtw</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n</span> = <span class="ruby-value">16</span>)
15
15
  <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n</span>)
16
16
  <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
@@ -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 2041</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2092</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n</span> = <span class="ruby-value">16</span>)
15
15
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
16
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">n</span>, <span class="ruby-value str">&quot;n&quot;</span>)
@@ -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 2103</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2154</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">gcd_with_high_power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">b</span>)
15
15
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
16
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">ZeroDivisionError</span>, <span class="ruby-node">&quot;gcd_with_high_power of zero with \&quot;#{b.inspect}\&quot; would be infinity&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">zero?</span>
@@ -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 2132</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2183</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prime_number</span>)
15
15
 
16
16
  <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Rational</span>) <span class="ruby-operator">||</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimalQuot</span>) <span class="ruby-keyword kw">then</span>
@@ -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 2171</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2222</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">multiplicity_of_10</span>(<span class="ruby-identifier">n</span>)
15
15
  <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">n</span>, <span class="ruby-value">2</span>)
16
16
  <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">n</span>, <span class="ruby-value">5</span>)
@@ -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 2182</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2233</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">int_digits10</span>(<span class="ruby-identifier">n</span>)
15
15
 
16
16
  <span class="ruby-identifier">n</span> = <span class="ruby-identifier">n</span>.<span class="ruby-identifier">abs</span>
@@ -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 2233</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2284</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">pi</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">cache_result</span> = <span class="ruby-keyword kw">true</span>)
15
15
 
16
16
  <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
@@ -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 2292</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2343</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
15
  <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must not be greater #{MAX_EXP_ABLE}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_EXP_ABLE</span>
16
16
  <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
@@ -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 2306</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2357</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp2</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
15
  <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power</span>(<span class="ruby-value">2</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 2317</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2368</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp10</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
15
  <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power</span>(<span class="ruby-value">10</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 2353</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2408</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">j</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">k</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">cache_result</span> = <span class="ruby-keyword kw">true</span>)
15
15
 
16
16
  <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
@@ -30,9 +30,14 @@
30
30
 
31
31
  <span class="ruby-comment cmt"># if the result would come out to zero anyway, cut the work</span>
32
32
  <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_i</span>
33
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;</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-operator">||</span> <span class="ruby-operator">-</span>((<span class="ruby-identifier">xi</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">LOG10</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span>
33
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;</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-operator">||</span> <span class="ruby-operator">-</span>((<span class="ruby-identifier">xi</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">LOG10</span>) <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">10</span> <span class="ruby-keyword kw">then</span>
34
34
  <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">25</span>, <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
35
35
  <span class="ruby-keyword kw">end</span>
36
+ <span class="ruby-identifier">x_was_neg</span> = <span class="ruby-keyword kw">false</span>
37
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
38
+ <span class="ruby-identifier">x</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">x</span>
39
+ <span class="ruby-identifier">x_was_neg</span> = <span class="ruby-keyword kw">true</span>
40
+ <span class="ruby-keyword kw">end</span>
36
41
 
37
42
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">j</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">then</span>
38
43
  <span class="ruby-identifier">s1</span> = (<span class="ruby-identifier">prec</span> <span class="ruby-operator">*</span> <span class="ruby-constant">LOG10</span> <span class="ruby-operator">/</span> <span class="ruby-constant">LOG2</span>) <span class="ruby-operator">**</span> (<span class="ruby-value">1.0</span><span class="ruby-operator">/</span><span class="ruby-value">3.0</span>)
@@ -56,7 +61,7 @@
56
61
  <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">k</span>, <span class="ruby-value str">&quot;k&quot;</span>)
57
62
 
58
63
  <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
59
- <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">calc_iprec_for_exp</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>)
64
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">calc_iprec_for_exp</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">x_was_neg</span>)
60
65
  <span class="ruby-keyword kw">end</span>
61
66
  <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-value str">&quot;iprec&quot;</span>)
62
67
 
@@ -70,6 +75,9 @@
70
75
  <span class="ruby-comment cmt"># keep result around for exp(1)</span>
71
76
  <span class="ruby-identifier">set_cached</span>(<span class="ruby-identifier">cache_key</span>, <span class="ruby-identifier">y_k</span>) <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">cache_result</span>)
72
77
  <span class="ruby-keyword kw">end</span>
78
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x_was_neg</span>)
79
+ <span class="ruby-identifier">y_k</span> = <span class="ruby-identifier">y_k</span>.<span class="ruby-identifier">reciprocal</span>
80
+ <span class="ruby-keyword kw">end</span>
73
81
  <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y_k</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
74
82
  <span class="ruby-identifier">y</span>
75
83
 
@@ -10,10 +10,11 @@
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 2421</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2484</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp_raw</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">j</span>, <span class="ruby-identifier">k</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
15
15
  <span class="ruby-comment cmt"># dprec = [ (iprec*0.9).round , (prec + 1) &lt;&lt; 1 ].min</span>
16
16
  <span class="ruby-identifier">dprec</span> = [ (<span class="ruby-identifier">iprec</span><span class="ruby-operator">*</span><span class="ruby-value">0</span><span class="ruby-value">.9</span>).<span class="ruby-identifier">round</span>, <span class="ruby-identifier">prec</span> ].<span class="ruby-identifier">max</span>
17
+ <span class="ruby-comment cmt"># puts(&quot;prec=#{prec} dprec=#{dprec} iprec=#{iprec}&quot;)</span>
17
18
 
18
19
  <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>)
19
20
  <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
@@ -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 2467</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2531</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrt</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
15
  <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrt_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-keyword kw">false</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 2474</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2538</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrt_with_remainder</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>)
15
15
  <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrt_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-constant">ROUND_DOWN</span>, <span class="ruby-keyword kw">true</span>)
16
16
  <span class="ruby-keyword kw">end</span></pre>
@@ -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 2535</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2599</span>
14
14
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
15
  <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
16
16
  <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)