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
@@ -5,14 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_ld (LongMath)</title>
8
+ <title>check_word_len (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1858</span>
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
- <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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1880</span>
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
+ <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
+ <span class="ruby-identifier">word_len</span>
16
17
  <span class="ruby-keyword kw">end</span></pre>
17
18
  </body>
18
19
  </html>
@@ -5,15 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_prec (LongMath)</title>
8
+ <title>check_is_int (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1866</span>
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
- <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1888</span>
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
+ <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>
17
16
  <span class="ruby-keyword kw">end</span></pre>
18
17
  </body>
19
18
  </html>
@@ -5,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_mode (LongMath)</title>
8
+ <title>check_is_ld (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1875</span>
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
- <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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1895</span>
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
+ <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>
17
17
  </body>
18
18
  </html>
@@ -5,28 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>split_to_words (LongMath)</title>
8
+ <title>check_is_prec (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1884</span>
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
- <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
16
- <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
17
- <span class="ruby-identifier">m</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>
18
- <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
19
- <span class="ruby-identifier">bit_pattern</span> = (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">word_len</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
20
- <span class="ruby-identifier">words</span> = []
21
- <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">m</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">do</span>
22
- <span class="ruby-identifier">w</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">&amp;</span> <span class="ruby-identifier">bit_pattern</span>
23
- <span class="ruby-identifier">m</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-identifier">word_len</span>
24
- <span class="ruby-identifier">words</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">w</span>)
25
- <span class="ruby-keyword kw">end</span>
26
- <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>) <span class="ruby-keyword kw">then</span>
27
- <span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
28
- <span class="ruby-keyword kw">end</span>
29
- <span class="ruby-identifier">words</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1903</span>
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
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
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>
30
17
  <span class="ruby-keyword kw">end</span></pre>
31
18
  </body>
32
19
  </html>
@@ -5,28 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>merge_from_words (LongMath)</title>
8
+ <title>check_is_mode (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1906</span>
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
- <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
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>
17
- <span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
18
- <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
19
- <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>) <span class="ruby-keyword kw">then</span>
20
- <span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
21
- <span class="ruby-keyword kw">end</span>
22
- <span class="ruby-identifier">words</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
23
- <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">word_len</span>
24
- <span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">w</span>
25
- <span class="ruby-keyword kw">end</span>
26
- <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>) <span class="ruby-keyword kw">then</span>
27
- <span class="ruby-identifier">y</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">y</span>
28
- <span class="ruby-keyword kw">end</span>
29
- <span class="ruby-identifier">y</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1912</span>
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
+ <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>
30
16
  <span class="ruby-keyword kw">end</span></pre>
31
17
  </body>
32
18
  </html>
@@ -5,15 +5,28 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtb (LongMath)</title>
8
+ <title>split_to_words (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1929</span>
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
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">x</span>)
16
- <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1921</span>
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
+ <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
16
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
17
+ <span class="ruby-identifier">m</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>
18
+ <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
19
+ <span class="ruby-identifier">bit_pattern</span> = (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">word_len</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
20
+ <span class="ruby-identifier">words</span> = []
21
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">m</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">do</span>
22
+ <span class="ruby-identifier">w</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">&amp;</span> <span class="ruby-identifier">bit_pattern</span>
23
+ <span class="ruby-identifier">m</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-identifier">word_len</span>
24
+ <span class="ruby-identifier">words</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">w</span>)
25
+ <span class="ruby-keyword kw">end</span>
26
+ <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>) <span class="ruby-keyword kw">then</span>
27
+ <span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
28
+ <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-identifier">words</span>
17
30
  <span class="ruby-keyword kw">end</span></pre>
18
31
  </body>
19
32
  </html>
@@ -5,39 +5,28 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtb_with_remainder (LongMath)</title>
8
+ <title>merge_from_words (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1940</span>
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
- <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
-
17
- <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
18
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
19
- <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>, <span class="ruby-value">0</span>]
20
- <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>)
21
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
22
- <span class="ruby-keyword kw">return</span> [ <span class="ruby-constant">Complex</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]), <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]]
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1943</span>
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
+ <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
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>
17
+ <span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
18
+ <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
19
+ <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>) <span class="ruby-keyword kw">then</span>
20
+ <span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
23
21
  <span class="ruby-keyword kw">end</span>
24
-
25
- <span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value">2</span>)
26
- <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
27
- <span class="ruby-identifier">yi</span> = <span class="ruby-value">1</span>
28
-
29
- <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
30
- <span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
31
- <span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
32
- <span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">d0</span>
33
- <span class="ruby-identifier">b</span> = <span class="ruby-value">0</span>
34
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
35
- <span class="ruby-identifier">b</span> = <span class="ruby-value">1</span>
36
- <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
37
- <span class="ruby-keyword kw">end</span>
38
- <span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">b</span>
22
+ <span class="ruby-identifier">words</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
23
+ <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">word_len</span>
24
+ <span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">w</span>
25
+ <span class="ruby-keyword kw">end</span>
26
+ <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>) <span class="ruby-keyword kw">then</span>
27
+ <span class="ruby-identifier">y</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">y</span>
39
28
  <span class="ruby-keyword kw">end</span>
40
- <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span>]
29
+ <span class="ruby-identifier">y</span>
41
30
  <span class="ruby-keyword kw">end</span></pre>
42
31
  </body>
43
32
  </html>
@@ -5,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtw (LongMath)</title>
8
+ <title>sqrtb (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1979</span>
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
- <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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1966</span>
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
+ <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>]
17
17
  <span class="ruby-keyword kw">end</span></pre>
18
18
  </body>
@@ -5,66 +5,39 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtw_with_remainder (LongMath)</title>
8
+ <title>sqrtb_with_remainder (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1992</span>
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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1977</span>
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
- <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">n</span>, <span class="ruby-value str">&quot;n&quot;</span>)
17
- <span class="ruby-identifier">n2</span> = <span class="ruby-identifier">n</span><span class="ruby-operator">&lt;&lt;</span><span class="ruby-value">1</span>
18
- <span class="ruby-identifier">n1</span> = <span class="ruby-identifier">n</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
19
- <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">n2</span>, <span class="ruby-value str">&quot;2*n&quot;</span>)
20
16
 
21
17
  <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
22
18
  <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
23
19
  <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>, <span class="ruby-value">0</span>]
24
20
  <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>)
25
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
21
+ <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
26
22
  <span class="ruby-keyword kw">return</span> [ <span class="ruby-constant">Complex</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]), <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]]
27
23
  <span class="ruby-keyword kw">end</span>
28
24
 
29
- <span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n2</span>)
30
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">then</span>
31
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>])
32
- <span class="ruby-keyword kw">end</span>
33
-
34
- <span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-value">1</span>]
35
- <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xi</span>)
36
- <span class="ruby-identifier">yi</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
37
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">2</span>) <span class="ruby-keyword kw">then</span>
38
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">a</span>
39
- <span class="ruby-keyword kw">end</span>
25
+ <span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value">2</span>)
26
+ <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
27
+ <span class="ruby-identifier">yi</span> = <span class="ruby-value">1</span>
40
28
 
41
- <span class="ruby-identifier">xi</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">yi</span><span class="ruby-operator">*</span><span class="ruby-identifier">yi</span>
42
- <span class="ruby-value">2</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
43
- <span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
44
- <span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n1</span>)
45
- <span class="ruby-identifier">q</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">d0</span>).<span class="ruby-identifier">to_i</span>
46
- <span class="ruby-identifier">q0</span> = <span class="ruby-identifier">q</span>
47
- <span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
48
- <span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">false</span>
49
- <span class="ruby-keyword kw">while</span> (<span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span>
50
- <span class="ruby-identifier">d</span> = <span class="ruby-identifier">d0</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
51
- <span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">q</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">d</span>)
52
- <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-value">0</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">was_negative</span>))
53
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
54
- <span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">true</span>
55
- <span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
56
- <span class="ruby-keyword kw">else</span>
57
- <span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
58
- <span class="ruby-keyword kw">end</span>
59
- <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
60
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">j</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>) <span class="ruby-keyword kw">then</span>
61
- <span class="ruby-keyword kw">break</span>
62
- <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
30
+ <span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
31
+ <span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
32
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">d0</span>
33
+ <span class="ruby-identifier">b</span> = <span class="ruby-value">0</span>
34
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
35
+ <span class="ruby-identifier">b</span> = <span class="ruby-value">1</span>
36
+ <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
63
37
  <span class="ruby-keyword kw">end</span>
64
- <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
65
- <span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
38
+ <span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">b</span>
66
39
  <span class="ruby-keyword kw">end</span>
67
- <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span> ]
40
+ <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span>]
68
41
  <span class="ruby-keyword kw">end</span></pre>
69
42
  </body>
70
43
  </html>
@@ -5,31 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>gcd_with_high_power (LongMath)</title>
8
+ <title>sqrtw (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2053</span>
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
- <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
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>
17
- <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;b&quot;</span>)
18
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">ZeroDivisionError</span>, <span class="ruby-node">&quot;gcd_with_high_power with b &lt; 2 is not defined. b=\&quot;#{b.inspect}\&quot;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">2</span>
19
- <span class="ruby-identifier">s</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>
20
- <span class="ruby-identifier">exponent</span> = <span class="ruby-value">1</span>
21
- <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">abs</span>
22
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">b</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">MAX_FLOATABLE</span>)
23
- <span class="ruby-identifier">exponent</span> = (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">s</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">b</span>)).<span class="ruby-identifier">ceil</span>
24
- <span class="ruby-keyword kw">end</span>
25
- <span class="ruby-identifier">power</span> = <span class="ruby-identifier">b</span><span class="ruby-operator">**</span><span class="ruby-identifier">exponent</span>
26
- <span class="ruby-identifier">result</span> = <span class="ruby-value">1</span>
27
- <span class="ruby-keyword kw">begin</span>
28
- <span class="ruby-identifier">f</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gcd</span>(<span class="ruby-identifier">power</span>)
29
- <span class="ruby-identifier">s</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">f</span>
30
- <span class="ruby-identifier">result</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">f</span>
31
- <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
32
- <span class="ruby-identifier">result</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2016</span>
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
+ <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
+ <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
33
17
  <span class="ruby-keyword kw">end</span></pre>
34
18
  </body>
35
19
  </html>
@@ -5,46 +5,66 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>multiplicity_of_factor (LongMath)</title>
8
+ <title>sqrtw_with_remainder (LongMath)</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
11
  </head>
12
12
  <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2082</span>
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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2029</span>
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
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">n</span>, <span class="ruby-value str">&quot;n&quot;</span>)
17
+ <span class="ruby-identifier">n2</span> = <span class="ruby-identifier">n</span><span class="ruby-operator">&lt;&lt;</span><span class="ruby-value">1</span>
18
+ <span class="ruby-identifier">n1</span> = <span class="ruby-identifier">n</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
19
+ <span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">n2</span>, <span class="ruby-value str">&quot;2*n&quot;</span>)
15
20
 
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>
17
- <span class="ruby-identifier">m1</span> = <span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">numerator</span>, <span class="ruby-identifier">prime_number</span>)
18
- <span class="ruby-identifier">m2</span> = <span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">denominator</span>, <span class="ruby-identifier">prime_number</span>)
19
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">m1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">m2</span>
21
+ <span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-value">0</span>)
22
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
23
+ <span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>, <span class="ruby-value">0</span>]
24
+ <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>)
25
+ <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
26
+ <span class="ruby-keyword kw">return</span> [ <span class="ruby-constant">Complex</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]), <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]]
27
+ <span class="ruby-keyword kw">end</span>
20
28
 
21
- <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>)
22
- <span class="ruby-identifier">m1</span> = <span class="ruby-identifier">multiplicity_of_factor</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">numerator</span>, <span class="ruby-identifier">prime_number</span>)
23
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prime_number</span> <span class="ruby-operator">==</span> <span class="ruby-value">2</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">prime_number</span> <span class="ruby-operator">==</span> <span class="ruby-value">5</span>) <span class="ruby-keyword kw">then</span>
24
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">m1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span>
25
- <span class="ruby-keyword kw">else</span>
26
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">m1</span>
27
- <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n2</span>)
30
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">then</span>
31
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>])
32
+ <span class="ruby-keyword kw">end</span>
28
33
 
29
- <span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>)
34
+ <span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-value">1</span>]
35
+ <span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xi</span>)
36
+ <span class="ruby-identifier">yi</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
37
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">2</span>) <span class="ruby-keyword kw">then</span>
38
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">a</span>
39
+ <span class="ruby-keyword kw">end</span>
30
40
 
31
- <span class="ruby-identifier">power</span> = <span class="ruby-identifier">gcd_with_high_power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prime_number</span>)
32
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">power</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">MAX_FLOATABLE</span>) <span class="ruby-keyword kw">then</span>
33
- <span class="ruby-identifier">result</span> = (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">power</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">prime_number</span>)).<span class="ruby-identifier">round</span>
34
- <span class="ruby-keyword kw">else</span>
35
- <span class="ruby-identifier">e</span> = (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-constant">MAX_FLOATABLE</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">prime_number</span>)).<span class="ruby-identifier">floor</span>
36
- <span class="ruby-identifier">result</span> = <span class="ruby-value">0</span>
37
- <span class="ruby-identifier">partial</span> = <span class="ruby-identifier">prime_number</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">e</span>
38
- <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">power</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">partial</span>) <span class="ruby-keyword kw">do</span>
39
- <span class="ruby-identifier">power</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">partial</span>
40
- <span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">e</span>
41
+ <span class="ruby-identifier">xi</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">yi</span><span class="ruby-operator">*</span><span class="ruby-identifier">yi</span>
42
+ <span class="ruby-value">2</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
43
+ <span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
44
+ <span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n1</span>)
45
+ <span class="ruby-identifier">q</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">d0</span>).<span class="ruby-identifier">to_i</span>
46
+ <span class="ruby-identifier">q0</span> = <span class="ruby-identifier">q</span>
47
+ <span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
48
+ <span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">false</span>
49
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span>
50
+ <span class="ruby-identifier">d</span> = <span class="ruby-identifier">d0</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
51
+ <span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">q</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">d</span>)
52
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-value">0</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">was_negative</span>))
53
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
54
+ <span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">true</span>
55
+ <span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
56
+ <span class="ruby-keyword kw">else</span>
57
+ <span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
58
+ <span class="ruby-keyword kw">end</span>
59
+ <span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
60
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">j</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>) <span class="ruby-keyword kw">then</span>
61
+ <span class="ruby-keyword kw">break</span>
41
62
  <span class="ruby-keyword kw">end</span>
42
- <span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">power</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">prime_number</span>)).<span class="ruby-identifier">round</span>
43
63
  <span class="ruby-keyword kw">end</span>
44
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">result</span>
45
- <span class="ruby-keyword kw">else</span>
46
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;type of x is not supported #{x.class} #{x.inpect}&quot;</span>
64
+ <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
65
+ <span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">n</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
47
66
  <span class="ruby-keyword kw">end</span>
67
+ <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span> ]
48
68
  <span class="ruby-keyword kw">end</span></pre>
49
69
  </body>
50
70
  </html>