long-decimal 0.01.01 → 0.01.02

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 (193) hide show
  1. data/README +17 -94
  2. data/VERSION +1 -1
  3. data/doc/classes/Integer.html +239 -0
  4. data/doc/classes/Integer.src/M000036.html +18 -0
  5. data/doc/classes/Integer.src/M000039.html +145 -0
  6. data/doc/classes/LongDecimal.html +453 -399
  7. data/doc/classes/LongDecimal.src/M000040.html +4 -4
  8. data/doc/classes/LongDecimal.src/M000041.html +4 -4
  9. data/doc/classes/LongDecimal.src/M000042.html +4 -6
  10. data/doc/classes/LongDecimal.src/M000043.html +4 -106
  11. data/doc/classes/LongDecimal.src/M000044.html +4 -21
  12. data/doc/classes/LongDecimal.src/M000045.html +4 -11
  13. data/doc/classes/LongDecimal.src/M000046.html +6 -27
  14. data/doc/classes/LongDecimal.src/M000047.html +103 -16
  15. data/doc/classes/LongDecimal.src/M000048.html +21 -4
  16. data/doc/classes/LongDecimal.src/M000049.html +10 -14
  17. data/doc/classes/LongDecimal.src/M000050.html +22 -36
  18. data/doc/classes/LongDecimal.src/M000051.html +34 -4
  19. data/doc/classes/LongDecimal.src/M000052.html +17 -6
  20. data/doc/classes/LongDecimal.src/M000053.html +4 -6
  21. data/doc/classes/LongDecimal.src/M000054.html +15 -4
  22. data/doc/classes/LongDecimal.src/M000055.html +44 -12
  23. data/doc/classes/LongDecimal.src/M000056.html +4 -7
  24. data/doc/classes/LongDecimal.src/M000057.html +8 -4
  25. data/doc/classes/LongDecimal.src/M000058.html +6 -15
  26. data/doc/classes/LongDecimal.src/M000059.html +4 -13
  27. data/doc/classes/LongDecimal.src/M000060.html +15 -4
  28. data/doc/classes/LongDecimal.src/M000061.html +7 -5
  29. data/doc/classes/LongDecimal.src/M000062.html +4 -4
  30. data/doc/classes/LongDecimal.src/M000063.html +15 -5
  31. data/doc/classes/LongDecimal.src/M000064.html +13 -5
  32. data/doc/classes/LongDecimal.src/M000065.html +4 -4
  33. data/doc/classes/LongDecimal.src/M000067.html +4 -8
  34. data/doc/classes/LongDecimal.src/M000068.html +5 -9
  35. data/doc/classes/LongDecimal.src/M000069.html +5 -9
  36. data/doc/classes/LongDecimal.src/M000070.html +4 -9
  37. data/doc/classes/LongDecimal.src/M000071.html +4 -4
  38. data/doc/classes/LongDecimal.src/M000072.html +6 -17
  39. data/doc/classes/LongDecimal.src/M000073.html +7 -7
  40. data/doc/classes/LongDecimal.src/M000074.html +7 -7
  41. data/doc/classes/LongDecimal.src/M000075.html +7 -19
  42. data/doc/classes/LongDecimal.src/M000076.html +4 -8
  43. data/doc/classes/LongDecimal.src/M000077.html +19 -5
  44. data/doc/classes/LongDecimal.src/M000078.html +7 -7
  45. data/doc/classes/LongDecimal.src/M000079.html +7 -7
  46. data/doc/classes/LongDecimal.src/M000080.html +19 -7
  47. data/doc/classes/LongDecimal.src/M000081.html +8 -4
  48. data/doc/classes/LongDecimal.src/M000082.html +5 -7
  49. data/doc/classes/LongDecimal.src/M000083.html +8 -6
  50. data/doc/classes/LongDecimal.src/M000084.html +9 -4
  51. data/doc/classes/LongDecimal.src/M000085.html +9 -4
  52. data/doc/classes/LongDecimal.src/M000086.html +4 -9
  53. data/doc/classes/LongDecimal.src/M000087.html +6 -8
  54. data/doc/classes/LongDecimal.src/M000088.html +7 -5
  55. data/doc/classes/LongDecimal.src/M000089.html +4 -9
  56. data/doc/classes/LongDecimal.src/M000090.html +4 -4
  57. data/doc/classes/LongDecimal.src/M000091.html +9 -4
  58. data/doc/classes/LongDecimal.src/M000092.html +9 -4
  59. data/doc/classes/LongDecimal.src/M000093.html +5 -4
  60. data/doc/classes/LongDecimal.src/M000094.html +7 -57
  61. data/doc/classes/LongDecimal.src/M000095.html +4 -4
  62. data/doc/classes/LongDecimal.src/M000096.html +4 -4
  63. data/doc/classes/LongDecimal.src/M000097.html +4 -5
  64. data/doc/classes/LongDecimal.src/M000098.html +4 -5
  65. data/doc/classes/LongDecimal.src/M000099.html +59 -5
  66. data/doc/classes/LongDecimal.src/M000100.html +4 -5
  67. data/doc/classes/LongDecimal.src/M000101.html +4 -4
  68. data/doc/classes/LongDecimal.src/M000104.html +19 -0
  69. data/doc/classes/LongDecimal.src/M000105.html +19 -0
  70. data/doc/classes/LongDecimal.src/M000106.html +18 -0
  71. data/doc/classes/LongDecimal.src/M000107.html +18 -0
  72. data/doc/classes/LongDecimal.src/M000108.html +18 -0
  73. data/doc/classes/LongDecimal.src/M000109.html +18 -0
  74. data/doc/classes/LongDecimalBase.html +69 -66
  75. data/doc/classes/LongDecimalBase.src/M000113.html +4 -9
  76. data/doc/classes/LongDecimalBase.src/M000114.html +4 -5
  77. data/doc/classes/LongDecimalBase.src/M000115.html +4 -9
  78. data/doc/classes/LongDecimalBase.src/M000116.html +4 -9
  79. data/doc/classes/LongDecimalBase.src/M000117.html +4 -5
  80. data/doc/classes/LongDecimalBase.src/M000118.html +23 -0
  81. data/doc/classes/LongDecimalBase.src/M000121.html +23 -0
  82. data/doc/classes/LongDecimalBase.src/M000122.html +19 -0
  83. data/doc/classes/LongDecimalBase.src/M000123.html +18 -0
  84. data/doc/classes/LongDecimalQuot.html +33 -27
  85. data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
  86. data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
  87. data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
  88. data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
  89. data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
  90. data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
  91. data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
  92. data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
  93. data/doc/classes/LongDecimalQuot.src/M000011.html +1 -1
  94. data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
  95. data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
  96. data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
  97. data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
  98. data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
  99. data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
  100. data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
  101. data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
  102. data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
  103. data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
  104. data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
  105. data/doc/classes/LongDecimalQuot.src/M000023.html +1 -1
  106. data/doc/classes/LongDecimalQuot.src/M000024.html +1 -1
  107. data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
  108. data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
  109. data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
  110. data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
  111. data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
  112. data/doc/classes/LongDecimalQuot.src/M000030.html +1 -1
  113. data/doc/classes/LongDecimalQuot.src/M000031.html +1 -1
  114. data/doc/classes/LongDecimalQuot.src/M000034.html +1 -1
  115. data/doc/classes/LongDecimalQuot.src/M000035.html +1 -1
  116. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +25 -24
  117. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000156.html +22 -0
  118. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000157.html +18 -0
  119. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000158.html +18 -0
  120. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000159.html +18 -0
  121. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000161.html +25 -0
  122. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000162.html +18 -0
  123. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000163.html +18 -0
  124. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000164.html +18 -0
  125. data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.html +178 -0
  126. data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000165.html +25 -0
  127. data/doc/classes/LongDecimalRoundingMode/ZeroRoundingModeClass.src/M000166.html +18 -0
  128. data/doc/classes/LongDecimalRoundingMode.html +41 -4
  129. data/doc/classes/LongMath/CacheKey.html +10 -10
  130. data/doc/classes/LongMath/CacheKey.src/M000155.html +36 -0
  131. data/doc/classes/LongMath/CacheKey.src/M000160.html +36 -0
  132. data/doc/classes/LongMath.html +246 -235
  133. data/doc/classes/LongMath.src/M000124.html +5 -18
  134. data/doc/classes/LongMath.src/M000125.html +4 -18
  135. data/doc/classes/LongMath.src/M000126.html +4 -5
  136. data/doc/classes/LongMath.src/M000127.html +5 -29
  137. data/doc/classes/LongMath.src/M000128.html +4 -5
  138. data/doc/classes/LongMath.src/M000129.html +14 -53
  139. data/doc/classes/LongMath.src/M000130.html +17 -20
  140. data/doc/classes/LongMath.src/M000131.html +5 -36
  141. data/doc/classes/LongMath.src/M000132.html +29 -6
  142. data/doc/classes/LongMath.src/M000133.html +5 -33
  143. data/doc/classes/LongMath.src/M000134.html +47 -41
  144. data/doc/classes/LongMath.src/M000135.html +21 -7
  145. data/doc/classes/LongMath.src/M000136.html +36 -4
  146. data/doc/classes/LongMath.src/M000137.html +6 -4
  147. data/doc/classes/LongMath.src/M000138.html +31 -70
  148. data/doc/classes/LongMath.src/M000139.html +45 -38
  149. data/doc/classes/LongMath.src/M000140.html +7 -4
  150. data/doc/classes/LongMath.src/M000141.html +4 -4
  151. data/doc/classes/LongMath.src/M000142.html +4 -6
  152. data/doc/classes/LongMath.src/M000143.html +67 -14
  153. data/doc/classes/LongMath.src/M000144.html +39 -14
  154. data/doc/classes/LongMath.src/M000145.html +4 -44
  155. data/doc/classes/LongMath.src/M000146.html +5 -339
  156. data/doc/classes/LongMath.src/M000147.html +6 -25
  157. data/doc/classes/LongMath.src/M000148.html +14 -75
  158. data/doc/classes/LongMath.src/M000149.html +33 -0
  159. data/doc/classes/LongMath.src/M000150.html +58 -0
  160. data/doc/classes/LongMath.src/M000151.html +406 -0
  161. data/doc/classes/LongMath.src/M000152.html +63 -0
  162. data/doc/classes/LongMath.src/M000153.html +117 -0
  163. data/doc/classes/LongMath.src/M000154.html +150 -0
  164. data/doc/classes/LongMath.src/M000155.html +63 -0
  165. data/doc/classes/LongMath.src/M000156.html +18 -0
  166. data/doc/classes/LongMath.src/M000157.html +19 -0
  167. data/doc/classes/LongMath.src/M000158.html +18 -0
  168. data/doc/classes/LongMath.src/M000159.html +19 -0
  169. data/doc/classes/Numeric.html +23 -21
  170. data/doc/classes/Numeric.src/M000106.html +18 -0
  171. data/doc/classes/Numeric.src/M000110.html +23 -0
  172. data/doc/classes/Numeric.src/M000111.html +18 -0
  173. data/doc/classes/Rational.html +18 -16
  174. data/doc/classes/Rational.src/M000107.html +23 -0
  175. data/doc/classes/Rational.src/M000112.html +23 -0
  176. data/doc/created.rid +1 -1
  177. data/doc/dot/f_0.dot +23 -1
  178. data/doc/dot/f_0.png +0 -0
  179. data/doc/dot/m_0_0.png +0 -0
  180. data/doc/dot/m_0_1.dot +13 -0
  181. data/doc/dot/m_0_1.png +0 -0
  182. data/doc/files/lib/long-decimal_rb.html +15 -13
  183. data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
  184. data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
  185. data/doc/fr_class_index.html +2 -0
  186. data/doc/fr_method_index.html +131 -124
  187. data/lib/long-decimal.rb +373 -49
  188. data/test/testlongdecimal.rb +689 -7
  189. data/test/testlongdeclib.rb +51 -11
  190. data/test/testrandlib.rb +23 -7
  191. data/test/testrandom.rb +4 -4
  192. data/test/testrandpower.rb +11 -9
  193. metadata +48 -3
@@ -5,91 +5,30 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>power (LongMath)</title>
8
+ <title>log10 (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 2873</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_mode</span>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2924</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log10</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_mode</span>) <span class="ruby-comment cmt"># down?</span>
15
15
 
16
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x} must be numeric&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">Numeric</span>
17
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;y=#{y} must be numeric&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Numeric</span>
18
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must not be greater #{MAX_FLOATABLE}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_FLOATABLE</span>
19
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;y=#{y.inspect} must not be greater #{MAX_FLOATABLE}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">abs</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_FLOATABLE</span>
20
- <span class="ruby-comment cmt"># raise TypeError, &quot;y=#{y.inspect} must not be greater #{MAX_EXP_ABLE}&quot; unless y &lt;= MAX_EXP_ABLE</span>
21
- <span class="ruby-comment cmt"># raise TypeError, &quot;x=#{x.inspect} must not negative&quot; unless x &gt;= 0 || (y.kind_of? Integer) || (y.kind_of? LongDecimalBase) &amp;&amp; y.is_int?</span>
22
- <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must not negative&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
23
16
  <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
24
17
  <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
25
-
26
- <span class="ruby-comment cmt"># handle the special cases where base or exponent are 0 or 1 explicitely</span>
27
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">then</span>
28
- <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">one!</span>(<span class="ruby-identifier">prec</span>)
29
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-keyword kw">then</span>
30
- <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">zero!</span>(<span class="ruby-identifier">prec</span>)
31
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">one?</span> <span class="ruby-keyword kw">then</span>
32
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
33
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span> <span class="ruby-keyword kw">then</span>
34
- <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">one!</span>(<span class="ruby-identifier">prec</span>)
35
- <span class="ruby-keyword kw">end</span>
36
-
37
- <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">iprec_x</span>, <span class="ruby-identifier">iprec_y</span> = <span class="ruby-identifier">calc_iprec_for_power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>)
38
- <span class="ruby-comment cmt"># puts(&quot;x=#{x} y=#{y} iprec=#{iprec} iprec_x=#{iprec_x} iprec_y=#{iprec_y} prec=#{prec}&quot;)</span>
39
-
40
- <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimalBase</span>) <span class="ruby-operator">||</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>)
41
- <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec_x</span>, <span class="ruby-identifier">mode</span>)
42
- <span class="ruby-keyword kw">end</span>
43
- <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimalBase</span>) <span class="ruby-operator">||</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>)
44
- <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec_y</span>, <span class="ruby-identifier">mode</span>)
45
- <span class="ruby-keyword kw">end</span>
46
-
47
- <span class="ruby-comment cmt"># try shortcut if exponent is an integer</span>
48
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimalBase</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">is_int?</span>
49
- <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span>.<span class="ruby-identifier">to_i</span>
50
- <span class="ruby-keyword kw">end</span>
51
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>)
52
- <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>
53
- <span class="ruby-comment cmt"># x = x.to_ld(prec)</span>
54
- <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec_x</span>)
55
- <span class="ruby-keyword kw">end</span>
56
- <span class="ruby-comment cmt"># z = x ** y</span>
57
- <span class="ruby-identifier">z</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">ipower</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-value">2</span><span class="ruby-operator">*</span><span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
58
- <span class="ruby-comment cmt"># puts(&quot;x=#{x} y=#{y} z=#{z} y int&quot;)</span>
59
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">z</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
60
- <span class="ruby-keyword kw">end</span>
61
-
62
- <span class="ruby-comment cmt"># it can be assumed that the exponent is not an integer, so it should</span>
63
- <span class="ruby-comment cmt"># be converted into LongDecimal</span>
64
- <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>)
65
- <span class="ruby-comment cmt"># y = y.to_ld(prec, mode)</span>
66
- <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec_y</span>, <span class="ruby-identifier">mode</span>)
18
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">6</span>
19
+ <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>)
20
+ <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
67
21
  <span class="ruby-keyword kw">end</span>
68
-
69
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span>
70
- <span class="ruby-comment cmt"># since we do not allow x &lt; 0 and we have handled x = 0 already,</span>
71
- <span class="ruby-comment cmt"># we can be sure that x is no integer, so it has been converted</span>
72
- <span class="ruby-comment cmt"># if necessary to LongDecimalBase</span>
73
- <span class="ruby-identifier">y</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">y</span>
74
- <span class="ruby-identifier">x</span> = (<span class="ruby-value">1</span><span class="ruby-operator">/</span><span class="ruby-identifier">x</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec_x</span><span class="ruby-operator">*</span><span class="ruby-value">2</span>, <span class="ruby-identifier">mode</span>)
75
- <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">iprec_x</span>, <span class="ruby-identifier">iprec_y</span> = <span class="ruby-identifier">calc_iprec_for_power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>)
22
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
23
+ <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">zero!</span>(<span class="ruby-identifier">prec</span>)
76
24
  <span class="ruby-keyword kw">end</span>
77
25
 
78
- <span class="ruby-comment cmt"># exponent is split in two parts, an integer part and a</span>
79
- <span class="ruby-comment cmt"># LongDecimal with absolute value &lt;= 0.5</span>
80
- <span class="ruby-identifier">y0</span> = <span class="ruby-identifier">y</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-value">0</span>, <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_imode</span>).<span class="ruby-identifier">to_i</span>
81
- <span class="ruby-comment cmt"># z0 = x**y0</span>
82
- <span class="ruby-identifier">z0</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">ipower</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y0</span>, <span class="ruby-value">2</span><span class="ruby-operator">*</span><span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
83
- <span class="ruby-identifier">y1</span> = <span class="ruby-identifier">y</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">y0</span>
84
- <span class="ruby-identifier">prec_extra</span> = <span class="ruby-value">0</span>
85
- <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">y0</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>)
86
- <span class="ruby-identifier">prec_extra</span> = (<span class="ruby-identifier">y0</span><span class="ruby-operator">*</span><span class="ruby-constant">Math</span>.<span class="ruby-identifier">log10</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_f</span>).<span class="ruby-identifier">abs</span>).<span class="ruby-identifier">ceil</span>
87
- <span class="ruby-keyword kw">end</span>
88
- <span class="ruby-comment cmt"># z1 = LongMath.power_internal(x, y1, prec+prec_extra , mode)</span>
89
- <span class="ruby-identifier">z1</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y1</span>, <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-identifier">prec_extra</span> <span class="ruby-operator">+</span> <span class="ruby-value">4</span>, <span class="ruby-identifier">mode</span>)
90
- <span class="ruby-identifier">z</span> = <span class="ruby-identifier">z0</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">z1</span>
91
- <span class="ruby-comment cmt"># puts(&quot;x=#{x} y=#{y} z=#{z} y not int&quot;)</span>
92
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">z</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
26
+ <span class="ruby-identifier">id</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">int_digits10</span>
27
+ <span class="ruby-identifier">xx</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">move_point_left</span>(<span class="ruby-identifier">id</span>)
28
+ <span class="ruby-identifier">lnxx</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-identifier">xx</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
29
+ <span class="ruby-identifier">ln10</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-value">10</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
30
+ <span class="ruby-identifier">y</span> = <span class="ruby-identifier">id</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">lnxx</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">ln10</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
31
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">y</span>
93
32
  <span class="ruby-keyword kw">end</span></pre>
94
33
  </body>
95
34
  </html>
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>log2 (LongMath)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2948</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log2</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_mode</span>)
15
+
16
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
17
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
18
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">6</span>
19
+ <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>)
20
+ <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
21
+ <span class="ruby-keyword kw">end</span>
22
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
23
+ <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">zero!</span>(<span class="ruby-identifier">prec</span>)
24
+ <span class="ruby-keyword kw">end</span>
25
+ <span class="ruby-identifier">id</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">int_digits2</span>
26
+ <span class="ruby-identifier">xx</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">id</span>)).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span><span class="ruby-operator">+</span><span class="ruby-identifier">id</span>)
27
+ <span class="ruby-identifier">lnxx</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-identifier">xx</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
28
+ <span class="ruby-identifier">ln2</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-value">2</span>.<span class="ruby-identifier">to_ld</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
29
+ <span class="ruby-identifier">y</span> = <span class="ruby-identifier">id</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">lnxx</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">ln2</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
30
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">y</span>
31
+ <span class="ruby-keyword kw">end</span></pre>
32
+ </body>
33
+ </html>
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>log_internal (LongMath)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2974</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_mode</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_imode</span>, <span class="ruby-identifier">cache_result</span> = <span class="ruby-keyword kw">true</span>)
15
+
16
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must not be positive&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
17
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span>.<span class="ruby-identifier">nil?</span>) <span class="ruby-keyword kw">then</span>
18
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimalBase</span>)
19
+ <span class="ruby-identifier">prec</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span>
20
+ <span class="ruby-keyword kw">else</span>
21
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">&quot;precision must be supplied either as precision of x=#{x} or explicitely&quot;</span>
22
+ <span class="ruby-keyword kw">end</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
25
+
26
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">final_mode</span>.<span class="ruby-identifier">nil?</span>)
27
+ <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">standard_mode</span>
28
+ <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">final_mode</span>, <span class="ruby-value str">&quot;final_mode&quot;</span>)
30
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
31
+
32
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span>.<span class="ruby-identifier">nil?</span>) <span class="ruby-keyword kw">then</span>
33
+ <span class="ruby-comment cmt"># iprec = ((prec+10)*1.20).round</span>
34
+ <span class="ruby-identifier">iprec</span> = ((<span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">12</span>)<span class="ruby-operator">*</span><span class="ruby-value">1.20</span>).<span class="ruby-identifier">round</span>
35
+ <span class="ruby-keyword kw">end</span>
36
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">prec</span>) <span class="ruby-keyword kw">then</span>
37
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span>
38
+ <span class="ruby-keyword kw">end</span>
39
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-value str">&quot;iprec&quot;</span>)
40
+ <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>)
41
+ <span class="ruby-identifier">x</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
42
+ <span class="ruby-keyword kw">end</span>
43
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
44
+ <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>.<span class="ruby-identifier">zero!</span>(<span class="ruby-identifier">prec</span>)
45
+ <span class="ruby-keyword kw">end</span>
46
+
47
+ <span class="ruby-identifier">cache_key</span> = <span class="ruby-identifier">get_cache_key</span>(<span class="ruby-value str">&quot;log&quot;</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">mode</span>, [<span class="ruby-value">2</span>, <span class="ruby-value">3</span>, <span class="ruby-value">5</span>, <span class="ruby-value">10</span>])
48
+ <span class="ruby-identifier">y</span> = <span class="ruby-identifier">get_cached</span>(<span class="ruby-identifier">cache_key</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">iprec</span>)
49
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">nil?</span>)
50
+ <span class="ruby-identifier">y</span> = <span class="ruby-identifier">log_raw</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
51
+ <span class="ruby-identifier">set_cached</span>(<span class="ruby-identifier">cache_key</span>, <span class="ruby-identifier">y</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cache_result</span>
52
+ <span class="ruby-keyword kw">end</span>
53
+
54
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">y</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
55
+
56
+ <span class="ruby-keyword kw">end</span></pre>
57
+ </body>
58
+ </html>