long-decimal 0.00.16 → 0.00.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. data/README +16 -15
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/doc/classes/LongDecimal.html +15 -8
  5. data/doc/classes/LongDecimal.src/M000041.html +3 -2
  6. data/doc/classes/LongDecimal.src/M000042.html +1 -1
  7. data/doc/classes/LongDecimal.src/M000043.html +1 -1
  8. data/doc/classes/LongDecimal.src/M000044.html +1 -3
  9. data/doc/classes/LongDecimal.src/M000045.html +1 -1
  10. data/doc/classes/LongDecimal.src/M000046.html +1 -1
  11. data/doc/classes/LongDecimal.src/M000047.html +1 -1
  12. data/doc/classes/LongDecimal.src/M000048.html +1 -1
  13. data/doc/classes/LongDecimal.src/M000049.html +7 -3
  14. data/doc/classes/LongDecimal.src/M000050.html +1 -1
  15. data/doc/classes/LongDecimal.src/M000051.html +1 -1
  16. data/doc/classes/LongDecimal.src/M000052.html +1 -1
  17. data/doc/classes/LongDecimal.src/M000053.html +1 -1
  18. data/doc/classes/LongDecimal.src/M000054.html +1 -1
  19. data/doc/classes/LongDecimal.src/M000055.html +1 -1
  20. data/doc/classes/LongDecimal.src/M000056.html +1 -1
  21. data/doc/classes/LongDecimal.src/M000058.html +1 -1
  22. data/doc/classes/LongDecimal.src/M000059.html +1 -1
  23. data/doc/classes/LongDecimal.src/M000060.html +1 -1
  24. data/doc/classes/LongDecimal.src/M000061.html +1 -1
  25. data/doc/classes/LongDecimal.src/M000062.html +1 -1
  26. data/doc/classes/LongDecimal.src/M000063.html +1 -1
  27. data/doc/classes/LongDecimal.src/M000064.html +1 -1
  28. data/doc/classes/LongDecimal.src/M000065.html +1 -1
  29. data/doc/classes/LongDecimal.src/M000066.html +1 -1
  30. data/doc/classes/LongDecimal.src/M000067.html +1 -1
  31. data/doc/classes/LongDecimal.src/M000068.html +1 -1
  32. data/doc/classes/LongDecimal.src/M000069.html +1 -1
  33. data/doc/classes/LongDecimal.src/M000070.html +1 -1
  34. data/doc/classes/LongDecimal.src/M000071.html +1 -1
  35. data/doc/classes/LongDecimal.src/M000072.html +1 -1
  36. data/doc/classes/LongDecimal.src/M000073.html +1 -1
  37. data/doc/classes/LongDecimal.src/M000074.html +1 -1
  38. data/doc/classes/LongDecimal.src/M000075.html +1 -1
  39. data/doc/classes/LongDecimal.src/M000076.html +1 -1
  40. data/doc/classes/LongDecimal.src/M000077.html +1 -1
  41. data/doc/classes/LongDecimal.src/M000078.html +1 -1
  42. data/doc/classes/LongDecimal.src/M000079.html +1 -1
  43. data/doc/classes/LongDecimal.src/M000080.html +1 -1
  44. data/doc/classes/LongDecimal.src/M000081.html +1 -1
  45. data/doc/classes/LongDecimal.src/M000082.html +1 -1
  46. data/doc/classes/LongDecimal.src/M000083.html +1 -1
  47. data/doc/classes/LongDecimal.src/M000084.html +1 -1
  48. data/doc/classes/LongDecimal.src/M000085.html +1 -1
  49. data/doc/classes/LongDecimal.src/M000086.html +1 -1
  50. data/doc/classes/LongDecimal.src/M000087.html +1 -1
  51. data/doc/classes/LongDecimal.src/M000088.html +1 -1
  52. data/doc/classes/LongDecimal.src/M000089.html +30 -4
  53. data/doc/classes/LongDecimal.src/M000090.html +1 -1
  54. data/doc/classes/LongDecimal.src/M000091.html +1 -1
  55. data/doc/classes/LongDecimal.src/M000094.html +1 -1
  56. data/doc/classes/LongDecimal.src/M000095.html +1 -1
  57. data/doc/classes/LongDecimal.src/M000096.html +1 -1
  58. data/doc/classes/LongDecimal.src/M000097.html +1 -1
  59. data/doc/classes/LongDecimal.src/M000098.html +1 -1
  60. data/doc/classes/LongDecimal.src/M000099.html +1 -1
  61. data/doc/classes/LongDecimalBase.html +58 -57
  62. data/doc/classes/LongDecimalBase.src/M000102.html +4 -4
  63. data/doc/classes/LongDecimalBase.src/M000103.html +4 -4
  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 +18 -0
  68. data/doc/classes/LongDecimalBase.src/M000110.html +9 -5
  69. data/doc/classes/LongDecimalBase.src/M000111.html +5 -4
  70. data/doc/classes/LongDecimalBase.src/M000112.html +18 -0
  71. data/doc/classes/LongDecimalQuot.html +18 -13
  72. data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
  73. data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
  74. data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
  75. data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
  76. data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
  77. data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
  78. data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
  79. data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
  80. data/doc/classes/LongDecimalQuot.src/M000011.html +3 -3
  81. data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
  82. data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
  83. data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
  84. data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
  85. data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
  86. data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
  87. data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
  88. data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
  89. data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
  90. data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
  91. data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
  92. data/doc/classes/LongDecimalQuot.src/M000023.html +35 -2
  93. data/doc/classes/LongDecimalQuot.src/M000024.html +20 -4
  94. data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
  95. data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
  96. data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
  97. data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
  98. data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
  99. data/doc/classes/LongDecimalQuot.src/M000032.html +1 -1
  100. data/doc/classes/LongDecimalQuot.src/M000033.html +1 -1
  101. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +5 -5
  102. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000137.html +22 -0
  103. data/doc/classes/LongMath.html +135 -116
  104. data/doc/classes/LongMath.src/M000113.html +5 -4
  105. data/doc/classes/LongMath.src/M000114.html +4 -4
  106. data/doc/classes/LongMath.src/M000115.html +4 -5
  107. data/doc/classes/LongMath.src/M000116.html +5 -4
  108. data/doc/classes/LongMath.src/M000117.html +4 -18
  109. data/doc/classes/LongMath.src/M000118.html +14 -14
  110. data/doc/classes/LongMath.src/M000119.html +18 -5
  111. data/doc/classes/LongMath.src/M000120.html +5 -29
  112. data/doc/classes/LongMath.src/M000121.html +29 -5
  113. data/doc/classes/LongMath.src/M000122.html +5 -56
  114. data/doc/classes/LongMath.src/M000123.html +54 -19
  115. data/doc/classes/LongMath.src/M000124.html +20 -35
  116. data/doc/classes/LongMath.src/M000125.html +31 -27
  117. data/doc/classes/LongMath.src/M000126.html +32 -8
  118. data/doc/classes/LongMath.src/M000127.html +8 -13
  119. data/doc/classes/LongMath.src/M000128.html +13 -82
  120. data/doc/classes/LongMath.src/M000129.html +79 -4
  121. data/doc/classes/LongMath.src/M000130.html +4 -14
  122. data/doc/classes/LongMath.src/M000131.html +4 -14
  123. data/doc/classes/LongMath.src/M000132.html +13 -148
  124. data/doc/classes/LongMath.src/M000133.html +14 -8
  125. data/doc/classes/LongMath.src/M000134.html +127 -3
  126. data/doc/classes/LongMath.src/M000135.html +25 -0
  127. data/doc/classes/LongMath.src/M000136.html +42 -0
  128. data/doc/classes/Numeric.html +5 -2
  129. data/doc/classes/Numeric.src/M000100.html +8 -3
  130. data/doc/classes/Rational.html +158 -0
  131. data/doc/classes/Rational.src/M000101.html +23 -0
  132. data/doc/created.rid +1 -1
  133. data/doc/dot/f_0.dot +9 -0
  134. data/doc/dot/f_0.png +0 -0
  135. data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
  136. data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
  137. data/doc/fr_class_index.html +1 -0
  138. data/doc/fr_method_index.html +56 -54
  139. data/lib/long-decimal.rb +147 -29
  140. data/test/testlongdecimal.rb +58 -5
  141. data/version.rb +1 -1
  142. metadata +10 -3
  143. data/doc/files/lib/long-decimal_rb.html +0 -187
@@ -5,14 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_int (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 1635</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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1736</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,14 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_ld (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 1642</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 1744</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>
16
16
  <span class="ruby-keyword kw">end</span></pre>
17
17
  </body>
18
18
  </html>
@@ -5,15 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_prec (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 1650</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 1751</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>
17
16
  <span class="ruby-keyword kw">end</span></pre>
18
17
  </body>
19
18
  </html>
@@ -5,14 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>check_is_mode (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 1659</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 1759</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>
16
17
  <span class="ruby-keyword kw">end</span></pre>
17
18
  </body>
18
19
  </html>
@@ -5,28 +5,14 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>split_to_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 1668</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 1768</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,28 +5,28 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>merge_from_words (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 1690</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1777</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
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>
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
25
  <span class="ruby-keyword kw">end</span>
26
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>
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
28
  <span class="ruby-keyword kw">end</span>
29
- <span class="ruby-identifier">y</span>
29
+ <span class="ruby-identifier">words</span>
30
30
  <span class="ruby-keyword kw">end</span></pre>
31
31
  </body>
32
32
  </html>
@@ -5,15 +5,28 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtb (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 1714</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 1799</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>
17
30
  <span class="ruby-keyword kw">end</span></pre>
18
31
  </body>
19
32
  </html>
@@ -5,39 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtb_with_remainder (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 1725</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>]]
23
- <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>
39
- <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>]
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1822</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>]
41
17
  <span class="ruby-keyword kw">end</span></pre>
42
18
  </body>
43
19
  </html>
@@ -5,15 +5,39 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtw (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 1764</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>]
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1833</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>]]
23
+ <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>
39
+ <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>]
17
41
  <span class="ruby-keyword kw">end</span></pre>
18
42
  </body>
19
43
  </html>
@@ -5,66 +5,15 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>sqrtw_with_remainder (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 1777</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>)
20
-
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>
28
-
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>
40
-
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>
63
- <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>
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> ]
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1872</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>]
68
17
  <span class="ruby-keyword kw">end</span></pre>
69
18
  </body>
70
19
  </html>
@@ -5,31 +5,66 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>gcd_with_high_power (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 1838</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1885</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
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>
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
+
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>
28
+
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>
40
+
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>
63
+ <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>
24
66
  <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>
67
+ <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span> ]
33
68
  <span class="ruby-keyword kw">end</span></pre>
34
69
  </body>
35
70
  </html>
@@ -5,46 +5,31 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>multiplicity_of_factor (LongMath)</title>
8
+ <title>gcd_with_high_power (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 1867</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>)
15
-
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>
20
-
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>
28
-
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>)
30
-
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-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
- <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>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1946</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>
47
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>
48
33
  <span class="ruby-keyword kw">end</span></pre>
49
34
  </body>
50
35
  </html>