long-decimal 0.00.10 → 0.00.11

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 (141) hide show
  1. data/VERSION +1 -1
  2. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +12 -5
  3. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000136.html +22 -0
  4. data/doc/classes/LongMath/LongDecimal.html +1624 -0
  5. data/doc/classes/LongMath/LongDecimal.src/M000061.html +18 -0
  6. data/doc/classes/LongMath/LongDecimal.src/M000062.html +18 -0
  7. data/doc/classes/LongMath/LongDecimal.src/M000063.html +18 -0
  8. data/doc/classes/LongMath/LongDecimal.src/M000064.html +20 -0
  9. data/doc/classes/LongMath/LongDecimal.src/M000065.html +109 -0
  10. data/doc/classes/LongMath/LongDecimal.src/M000066.html +34 -0
  11. data/doc/classes/LongMath/LongDecimal.src/M000067.html +41 -0
  12. data/doc/classes/LongMath/LongDecimal.src/M000068.html +35 -0
  13. data/doc/classes/LongMath/LongDecimal.src/M000069.html +18 -0
  14. data/doc/classes/LongMath/LongDecimal.src/M000070.html +29 -0
  15. data/doc/classes/LongMath/LongDecimal.src/M000071.html +18 -0
  16. data/doc/classes/LongMath/LongDecimal.src/M000072.html +38 -0
  17. data/doc/classes/LongMath/LongDecimal.src/M000073.html +18 -0
  18. data/doc/classes/LongMath/LongDecimal.src/M000074.html +18 -0
  19. data/doc/classes/LongMath/LongDecimal.src/M000075.html +20 -0
  20. data/doc/classes/LongMath/LongDecimal.src/M000076.html +18 -0
  21. data/doc/classes/LongMath/LongDecimal.src/M000077.html +29 -0
  22. data/doc/classes/LongMath/LongDecimal.src/M000078.html +46 -0
  23. data/doc/classes/LongMath/LongDecimal.src/M000079.html +29 -0
  24. data/doc/classes/LongMath/LongDecimal.src/M000080.html +27 -0
  25. data/doc/classes/LongMath/LongDecimal.src/M000081.html +18 -0
  26. data/doc/classes/LongMath/LongDecimal.src/M000083.html +18 -0
  27. data/doc/classes/LongMath/LongDecimal.src/M000084.html +18 -0
  28. data/doc/classes/LongMath/LongDecimal.src/M000085.html +18 -0
  29. data/doc/classes/LongMath/LongDecimal.src/M000086.html +18 -0
  30. data/doc/classes/LongMath/LongDecimal.src/M000087.html +18 -0
  31. data/doc/classes/LongMath/LongDecimal.src/M000089.html +18 -0
  32. data/doc/classes/LongMath/LongDecimal.src/M000090.html +22 -0
  33. data/doc/classes/LongMath/LongDecimal.src/M000091.html +23 -0
  34. data/doc/classes/LongMath/LongDecimal.src/M000092.html +23 -0
  35. data/doc/classes/LongMath/LongDecimal.src/M000093.html +23 -0
  36. data/doc/classes/LongMath/LongDecimal.src/M000094.html +18 -0
  37. data/doc/classes/LongMath/LongDecimal.src/M000095.html +29 -0
  38. data/doc/classes/LongMath/LongDecimal.src/M000096.html +23 -0
  39. data/doc/classes/LongMath/LongDecimal.src/M000097.html +23 -0
  40. data/doc/classes/LongMath/LongDecimal.src/M000098.html +34 -0
  41. data/doc/classes/LongMath/LongDecimal.src/M000099.html +22 -0
  42. data/doc/classes/LongMath/LongDecimal.src/M000100.html +19 -0
  43. data/doc/classes/LongMath/LongDecimal.src/M000101.html +23 -0
  44. data/doc/classes/LongMath/LongDecimal.src/M000102.html +23 -0
  45. data/doc/classes/LongMath/LongDecimal.src/M000103.html +23 -0
  46. data/doc/classes/LongMath/LongDecimal.src/M000104.html +18 -0
  47. data/doc/classes/LongMath/LongDecimal.src/M000105.html +21 -0
  48. data/doc/classes/LongMath/LongDecimal.src/M000106.html +21 -0
  49. data/doc/classes/LongMath/LongDecimal.src/M000107.html +18 -0
  50. data/doc/classes/LongMath/LongDecimal.src/M000108.html +18 -0
  51. data/doc/classes/LongMath/LongDecimal.src/M000109.html +23 -0
  52. data/doc/classes/LongMath/LongDecimal.src/M000110.html +23 -0
  53. data/doc/classes/LongMath/LongDecimal.src/M000111.html +19 -0
  54. data/doc/classes/LongMath/LongDecimal.src/M000112.html +23 -0
  55. data/doc/classes/LongMath/LongDecimal.src/M000113.html +18 -0
  56. data/doc/classes/LongMath/LongDecimal.src/M000114.html +30 -0
  57. data/doc/classes/LongMath/LongDecimal.src/M000115.html +18 -0
  58. data/doc/classes/LongMath/LongDecimal.src/M000116.html +23 -0
  59. data/doc/classes/LongMath/LongDecimal.src/M000117.html +18 -0
  60. data/doc/classes/LongMath/LongDecimal.src/M000118.html +30 -0
  61. data/doc/classes/LongMath/LongDecimal.src/M000119.html +23 -0
  62. data/doc/classes/LongMath/LongDecimal.src/M000120.html +19 -0
  63. data/doc/classes/LongMath/LongDecimal.src/M000121.html +18 -0
  64. data/doc/classes/LongMath/LongDecimal.src/M000122.html +47 -0
  65. data/doc/classes/LongMath/LongDecimal.src/M000123.html +18 -0
  66. data/doc/classes/LongMath/LongDecimal.src/M000124.html +18 -0
  67. data/doc/classes/LongMath/LongDecimal.src/M000125.html +47 -0
  68. data/doc/classes/LongMath/LongDecimal.src/M000126.html +18 -0
  69. data/doc/classes/LongMath/LongDecimal.src/M000127.html +19 -0
  70. data/doc/classes/LongMath/LongDecimal.src/M000130.html +18 -0
  71. data/doc/classes/LongMath/LongDecimal.src/M000131.html +18 -0
  72. data/doc/classes/LongMath/LongDecimal.src/M000132.html +18 -0
  73. data/doc/classes/LongMath/LongDecimal.src/M000133.html +18 -0
  74. data/doc/classes/LongMath/LongDecimal.src/M000134.html +18 -0
  75. data/doc/classes/LongMath/LongDecimalQuot.html +797 -0
  76. data/doc/classes/LongMath/LongDecimalQuot.src/M000024.html +18 -0
  77. data/doc/classes/LongMath/LongDecimalQuot.src/M000025.html +28 -0
  78. data/doc/classes/LongMath/LongDecimalQuot.src/M000026.html +18 -0
  79. data/doc/classes/LongMath/LongDecimalQuot.src/M000027.html +18 -0
  80. data/doc/classes/LongMath/LongDecimalQuot.src/M000028.html +19 -0
  81. data/doc/classes/LongMath/LongDecimalQuot.src/M000029.html +18 -0
  82. data/doc/classes/LongMath/LongDecimalQuot.src/M000030.html +18 -0
  83. data/doc/classes/LongMath/LongDecimalQuot.src/M000031.html +18 -0
  84. data/doc/classes/LongMath/LongDecimalQuot.src/M000032.html +18 -0
  85. data/doc/classes/LongMath/LongDecimalQuot.src/M000033.html +18 -0
  86. data/doc/classes/LongMath/LongDecimalQuot.src/M000034.html +22 -0
  87. data/doc/classes/LongMath/LongDecimalQuot.src/M000035.html +23 -0
  88. data/doc/classes/LongMath/LongDecimalQuot.src/M000036.html +23 -0
  89. data/doc/classes/LongMath/LongDecimalQuot.src/M000037.html +23 -0
  90. data/doc/classes/LongMath/LongDecimalQuot.src/M000038.html +23 -0
  91. data/doc/classes/LongMath/LongDecimalQuot.src/M000039.html +35 -0
  92. data/doc/classes/LongMath/LongDecimalQuot.src/M000040.html +22 -0
  93. data/doc/classes/LongMath/LongDecimalQuot.src/M000041.html +19 -0
  94. data/doc/classes/LongMath/LongDecimalQuot.src/M000042.html +18 -0
  95. data/doc/classes/LongMath/LongDecimalQuot.src/M000043.html +18 -0
  96. data/doc/classes/LongMath/LongDecimalQuot.src/M000044.html +18 -0
  97. data/doc/classes/LongMath/LongDecimalQuot.src/M000045.html +18 -0
  98. data/doc/classes/LongMath/LongDecimalQuot.src/M000046.html +77 -0
  99. data/doc/classes/LongMath/LongDecimalQuot.src/M000047.html +36 -0
  100. data/doc/classes/LongMath/LongDecimalQuot.src/M000048.html +18 -0
  101. data/doc/classes/LongMath/LongDecimalQuot.src/M000049.html +23 -0
  102. data/doc/classes/LongMath/LongDecimalQuot.src/M000050.html +19 -0
  103. data/doc/classes/LongMath/LongDecimalQuot.src/M000051.html +18 -0
  104. data/doc/classes/LongMath/LongDecimalQuot.src/M000052.html +18 -0
  105. data/doc/classes/LongMath/LongDecimalQuot.src/M000053.html +18 -0
  106. data/doc/classes/LongMath/LongDecimalQuot.src/M000054.html +18 -0
  107. data/doc/classes/LongMath/LongDecimalQuot.src/M000055.html +18 -0
  108. data/doc/classes/LongMath/LongDecimalQuot.src/M000058.html +18 -0
  109. data/doc/classes/LongMath/LongDecimalQuot.src/M000059.html +18 -0
  110. data/doc/classes/LongMath/LongDecimalQuot.src/M000060.html +18 -0
  111. data/doc/classes/LongMath/Numeric.html +150 -0
  112. data/doc/classes/LongMath/Numeric.src/M000135.html +18 -0
  113. data/doc/classes/LongMath.html +70 -37
  114. data/doc/classes/LongMath.src/M000001.html +19 -0
  115. data/doc/classes/LongMath.src/M000002.html +18 -0
  116. data/doc/classes/LongMath.src/M000003.html +18 -0
  117. data/doc/classes/LongMath.src/M000004.html +19 -0
  118. data/doc/classes/LongMath.src/M000005.html +18 -0
  119. data/doc/classes/LongMath.src/M000006.html +32 -0
  120. data/doc/classes/LongMath.src/M000007.html +32 -0
  121. data/doc/classes/LongMath.src/M000008.html +19 -0
  122. data/doc/classes/LongMath.src/M000009.html +43 -0
  123. data/doc/classes/LongMath.src/M000010.html +19 -0
  124. data/doc/classes/LongMath.src/M000011.html +73 -0
  125. data/doc/classes/LongMath.src/M000012.html +35 -0
  126. data/doc/classes/LongMath.src/M000013.html +50 -0
  127. data/doc/classes/LongMath.src/M000014.html +47 -0
  128. data/doc/classes/LongMath.src/M000015.html +22 -0
  129. data/doc/classes/LongMath.src/M000016.html +25 -0
  130. data/doc/classes/LongMath.src/M000017.html +107 -0
  131. data/doc/classes/LongMath.src/M000018.html +21 -0
  132. data/doc/classes/LongMath.src/M000019.html +30 -0
  133. data/doc/classes/LongMath.src/M000020.html +30 -0
  134. data/doc/classes/LongMath.src/M000021.html +115 -0
  135. data/doc/classes/LongMath.src/M000022.html +22 -0
  136. data/doc/classes/LongMath.src/M000023.html +18 -0
  137. data/doc/created.rid +1 -1
  138. data/doc/files/lib/longdecimal_rb.html +2 -2
  139. data/doc/fr_method_index.html +108 -111
  140. data/lib/longdecimal.rb +333 -93
  141. metadata +139 -2
@@ -0,0 +1,35 @@
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>gcd_with_high_power (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/longdecimal.rb, line 288</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">gcd_with_high_power</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">b</span>)
15
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ZeroDivisionError</span>, <span class="ruby-node">&quot;gcd_with_high_power of zero with \&quot;#{b.inspect}\&quot; would be infinity&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">zero?</span>
17
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">b</span>, <span class="ruby-value str">&quot;b&quot;</span>)
18
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ZeroDivisionError</span>, <span class="ruby-node">&quot;gcd_with_high_power with b &lt; 2 is not defined. b=\&quot;#{b.inspect}\&quot;&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">2</span>
19
+ <span class="ruby-identifier">s</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>
20
+ <span class="ruby-identifier">exponent</span> = <span class="ruby-value">1</span>
21
+ <span class="ruby-identifier">b</span> = <span class="ruby-identifier">b</span>.<span class="ruby-identifier">abs</span>
22
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">b</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">MAX_FLOATABLE</span>)
23
+ <span class="ruby-identifier">exponent</span> = (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">s</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">b</span>)).<span class="ruby-identifier">ceil</span>
24
+ <span class="ruby-keyword kw">end</span>
25
+ <span class="ruby-identifier">power</span> = <span class="ruby-identifier">b</span><span class="ruby-operator">**</span><span class="ruby-identifier">exponent</span>
26
+ <span class="ruby-identifier">result</span> = <span class="ruby-value">1</span>
27
+ <span class="ruby-keyword kw">begin</span>
28
+ <span class="ruby-identifier">f</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gcd</span>(<span class="ruby-identifier">power</span>)
29
+ <span class="ruby-identifier">s</span> <span class="ruby-operator">/=</span> <span class="ruby-identifier">f</span>
30
+ <span class="ruby-identifier">result</span> <span class="ruby-operator">*=</span> <span class="ruby-identifier">f</span>
31
+ <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
32
+ <span class="ruby-identifier">result</span>
33
+ <span class="ruby-keyword kw">end</span></pre>
34
+ </body>
35
+ </html>
@@ -0,0 +1,50 @@
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>multiplicity_of_factor (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/longdecimal.rb, line 317</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>
47
+ <span class="ruby-keyword kw">end</span>
48
+ <span class="ruby-keyword kw">end</span></pre>
49
+ </body>
50
+ </html>
@@ -0,0 +1,47 @@
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>calc_pi (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/longdecimal.rb, line 364</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">calc_pi</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>
16
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-value">5</span><span class="ruby-operator">*</span>(<span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>)
17
+ <span class="ruby-identifier">sprec</span> = (<span class="ruby-identifier">iprec</span> <span class="ruby-operator">&gt;&gt;</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
18
+ <span class="ruby-identifier">dprec</span> = (<span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>
19
+
20
+ <span class="ruby-identifier">a</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">1</span>)
21
+ <span class="ruby-identifier">b</span> = (<span class="ruby-value">1</span> <span class="ruby-operator">/</span> <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">2</span>).<span class="ruby-identifier">sqrt</span>(<span class="ruby-identifier">iprec</span>,<span class="ruby-identifier">mode</span>)).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
22
+ <span class="ruby-identifier">c</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">5</span>,<span class="ruby-value">1</span>)
23
+ <span class="ruby-identifier">k</span> = <span class="ruby-value">1</span>
24
+ <span class="ruby-identifier">pow_k</span> = <span class="ruby-value">2</span>
25
+
26
+ <span class="ruby-identifier">pi</span> = <span class="ruby-value">0</span>
27
+ <span class="ruby-identifier">last_pi</span> = <span class="ruby-value">0</span>
28
+ <span class="ruby-identifier">last_diff</span> = <span class="ruby-value">1</span>
29
+
30
+ <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
31
+ <span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span> = ((<span class="ruby-identifier">a</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">b</span>) <span class="ruby-operator">/</span> <span class="ruby-value">2</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">sprec</span>, <span class="ruby-identifier">mode</span>), (<span class="ruby-identifier">a</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">b</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>).<span class="ruby-identifier">sqrt</span>(<span class="ruby-identifier">sprec</span>, <span class="ruby-identifier">mode</span>)
32
+ <span class="ruby-identifier">c</span> = (<span class="ruby-identifier">c</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">pow_k</span> <span class="ruby-operator">*</span> (<span class="ruby-identifier">a</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">b</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">b</span>)).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
33
+ <span class="ruby-identifier">pi</span> = (<span class="ruby-value">2</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">c</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">sprec</span>, <span class="ruby-identifier">mode</span>)
34
+ <span class="ruby-identifier">diff</span> = (<span class="ruby-identifier">pi</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">last_pi</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">dprec</span>, <span class="ruby-identifier">mode</span>).<span class="ruby-identifier">abs</span>
35
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">diff</span>.<span class="ruby-identifier">zero?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">last_diff</span>.<span class="ruby-identifier">zero?</span>) <span class="ruby-keyword kw">then</span>
36
+ <span class="ruby-keyword kw">break</span>
37
+ <span class="ruby-keyword kw">end</span>
38
+ <span class="ruby-identifier">last_pi</span> = <span class="ruby-identifier">pi</span>
39
+ <span class="ruby-identifier">last_diff</span> = <span class="ruby-identifier">diff</span>
40
+ <span class="ruby-identifier">k</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
41
+ <span class="ruby-identifier">pow_k</span> = <span class="ruby-identifier">pow_k</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>
42
+ <span class="ruby-comment cmt"># puts(&quot;k=#{k} pi=#{pi.to_s}\nd=#{diff}\n\n&quot;)</span>
43
+ <span class="ruby-keyword kw">end</span>
44
+ <span class="ruby-identifier">pi</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
45
+ <span class="ruby-keyword kw">end</span></pre>
46
+ </body>
47
+ </html>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>exp (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/longdecimal.rb, line 405</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">check_is_ld</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">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must not be greater #{MAX_EXP_ABLE}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_EXP_ABLE</span>
17
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
18
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
19
+ <span class="ruby-identifier">exp_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
20
+ <span class="ruby-keyword kw">end</span></pre>
21
+ </body>
22
+ </html>
@@ -0,0 +1,25 @@
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>power (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/longdecimal.rb, line 418</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">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">y</span>, <span class="ruby-value str">&quot;y&quot;</span>)
17
+ <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_EXP_ABLE}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">y</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-constant">MAX_EXP_ABLE</span>
18
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
19
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
20
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>
21
+ <span class="ruby-identifier">logx</span> = <span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
22
+ <span class="ruby-identifier">exp_internal</span>(<span class="ruby-identifier">logx</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">y</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
23
+ <span class="ruby-keyword kw">end</span></pre>
24
+ </body>
25
+ </html>
@@ -0,0 +1,107 @@
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>exp_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/longdecimal.rb, line 436</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">exp_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">j</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">k</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>)
16
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
17
+ <span class="ruby-identifier">prec</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span>
18
+ <span class="ruby-keyword kw">end</span>
19
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
20
+
21
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">final_mode</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>)
22
+ <span class="ruby-identifier">final_mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>
23
+ <span class="ruby-keyword kw">end</span>
24
+ <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>)
25
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
26
+
27
+ <span class="ruby-comment cmt"># if the result would come out to zero anyway, cut the work</span>
28
+ <span class="ruby-identifier">xi</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_i</span>
29
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xi</span> <span class="ruby-operator">&lt;</span> <span class="ruby-operator">-</span><span class="ruby-constant">LongMath</span><span class="ruby-operator">::</span><span class="ruby-constant">MAX_FLOATABLE</span>) <span class="ruby-operator">||</span> <span class="ruby-operator">-</span>((<span class="ruby-identifier">xi</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-value">10</span>)) <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">1</span> <span class="ruby-keyword kw">then</span>
30
+ <span class="ruby-keyword kw">return</span> <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">25</span>, <span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">2</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
31
+ <span class="ruby-keyword kw">end</span>
32
+
33
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">j</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">k</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">then</span>
34
+ <span class="ruby-identifier">l2</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-value">2.0</span>)
35
+ <span class="ruby-identifier">lb</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-value">10.0</span>)
36
+ <span class="ruby-identifier">s1</span> = (<span class="ruby-identifier">prec</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">lb</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">l2</span>) <span class="ruby-operator">**</span> (<span class="ruby-value">1.0</span><span class="ruby-operator">/</span><span class="ruby-value">3.0</span>)
37
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">j</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
38
+ <span class="ruby-identifier">j</span> = <span class="ruby-identifier">s1</span>.<span class="ruby-identifier">round</span>
39
+ <span class="ruby-keyword kw">end</span>
40
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">k</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
41
+ <span class="ruby-identifier">k</span> = (<span class="ruby-identifier">s1</span> <span class="ruby-operator">+</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>([<span class="ruby-value">1</span>, <span class="ruby-identifier">prec</span>].<span class="ruby-identifier">max</span>) <span class="ruby-operator">/</span> <span class="ruby-identifier">l2</span>).<span class="ruby-identifier">round</span>
42
+ <span class="ruby-keyword kw">end</span>
43
+ <span class="ruby-keyword kw">end</span>
44
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">j</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
45
+ <span class="ruby-identifier">j</span> = <span class="ruby-value">1</span>
46
+ <span class="ruby-keyword kw">end</span>
47
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">k</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
48
+ <span class="ruby-identifier">k</span> = <span class="ruby-value">0</span>
49
+ <span class="ruby-keyword kw">end</span>
50
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">j</span>, <span class="ruby-value str">&quot;j&quot;</span>)
51
+ <span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">k</span>, <span class="ruby-value str">&quot;k&quot;</span>)
52
+
53
+ <span class="ruby-identifier">iprec_extra</span> = <span class="ruby-value">0</span>
54
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">then</span>
55
+ <span class="ruby-identifier">xf</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_f</span>
56
+ <span class="ruby-identifier">k</span> <span class="ruby-operator">+=</span> (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">xf</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-value">2</span>)).<span class="ruby-identifier">abs</span>.<span class="ruby-identifier">round</span>
57
+ <span class="ruby-identifier">iprec_extra</span> = (<span class="ruby-identifier">xf</span> <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-value">10</span>)).<span class="ruby-identifier">abs</span>
58
+ <span class="ruby-keyword kw">end</span>
59
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">iprec</span> <span class="ruby-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
60
+ <span class="ruby-identifier">iprec</span> = ((<span class="ruby-identifier">prec</span><span class="ruby-operator">+</span><span class="ruby-value">10</span>)<span class="ruby-operator">*</span><span class="ruby-value">1.20</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">iprec_extra</span>).<span class="ruby-identifier">round</span>
61
+ <span class="ruby-keyword kw">end</span>
62
+ <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>
63
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span>
64
+ <span class="ruby-keyword kw">end</span>
65
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-value str">&quot;iprec&quot;</span>)
66
+
67
+ <span class="ruby-identifier">dprec</span> = [ <span class="ruby-identifier">iprec</span>, (<span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span> ].<span class="ruby-identifier">min</span>
68
+
69
+ <span class="ruby-identifier">x_k</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">k</span>)).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
70
+ <span class="ruby-identifier">x_j</span> = (<span class="ruby-identifier">x_k</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">j</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
71
+ <span class="ruby-identifier">s</span> = [ <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">0</span>) ] <span class="ruby-operator">*</span> <span class="ruby-identifier">j</span>
72
+ <span class="ruby-identifier">t</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">1</span>)
73
+ <span class="ruby-identifier">last_t</span> = <span class="ruby-value">1</span>
74
+ <span class="ruby-identifier">f</span> = <span class="ruby-value">0</span>
75
+ <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
76
+ <span class="ruby-identifier">j</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
77
+ <span class="ruby-identifier">s</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">+=</span> <span class="ruby-identifier">t</span>
78
+ <span class="ruby-identifier">f</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
79
+ <span class="ruby-identifier">t</span> = (<span class="ruby-identifier">t</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">f</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
80
+ <span class="ruby-keyword kw">end</span>
81
+ <span class="ruby-identifier">t</span> = (<span class="ruby-identifier">t</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">x_j</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
82
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">t</span>.<span class="ruby-identifier">zero?</span>)
83
+ <span class="ruby-identifier">tr</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">dprec</span>, <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_DOWN</span>).<span class="ruby-identifier">abs</span>
84
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">t</span>.<span class="ruby-identifier">zero?</span>)
85
+ <span class="ruby-identifier">tu</span> = <span class="ruby-identifier">t</span>.<span class="ruby-identifier">unit</span>
86
+ <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">tr</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">tu</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">last_t</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">tu</span>)
87
+ <span class="ruby-identifier">last_t</span> = <span class="ruby-identifier">tr</span>
88
+ <span class="ruby-keyword kw">end</span>
89
+ <span class="ruby-identifier">x_i</span> = <span class="ruby-value">1</span>
90
+ <span class="ruby-identifier">y_k</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">0</span>)
91
+ <span class="ruby-identifier">j</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
92
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">i</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
93
+ <span class="ruby-identifier">x_i</span> = (<span class="ruby-identifier">x_i</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">x_k</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
94
+ <span class="ruby-keyword kw">end</span>
95
+ <span class="ruby-comment cmt"># puts(&quot;y_k=#{y_k}\ni=#{i} j=#{j} k=#{k} x=#{x}\nx_k=#{x_k}\nx_j=#{x_j}\nx_i=#{x_i}\ns[i]=#{s[i]}\n\n&quot;)</span>
96
+ <span class="ruby-identifier">y_k</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">s</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">*</span> <span class="ruby-identifier">x_i</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
97
+ <span class="ruby-keyword kw">end</span>
98
+ <span class="ruby-comment cmt"># puts(&quot;y_k = #{y_k}\n&quot;)</span>
99
+ <span class="ruby-identifier">k</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
100
+ <span class="ruby-identifier">y_k</span> = <span class="ruby-identifier">y_k</span>.<span class="ruby-identifier">square</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
101
+ <span class="ruby-comment cmt"># puts(&quot;i=#{i} y_k = #{y_k}\n&quot;)</span>
102
+ <span class="ruby-keyword kw">end</span>
103
+ <span class="ruby-identifier">y</span> = <span class="ruby-identifier">y_k</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
104
+ <span class="ruby-identifier">y</span>
105
+ <span class="ruby-keyword kw">end</span></pre>
106
+ </body>
107
+ </html>
@@ -0,0 +1,21 @@
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 (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/longdecimal.rb, line 533</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-constant">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
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">log_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
19
+ <span class="ruby-keyword kw">end</span></pre>
20
+ </body>
21
+ </html>
@@ -0,0 +1,30 @@
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>log10 (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/longdecimal.rb, line 544</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">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
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-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
18
+ <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>)
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
21
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
22
+ <span class="ruby-identifier">id</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">int_digits10</span>
23
+ <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>)
24
+ <span class="ruby-comment cmt"># puts(&quot;x=#{x} xx=#{xx} id=#{id} iprec=#{iprec}\n&quot;)</span>
25
+ <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>)
26
+ <span class="ruby-identifier">ln10</span> = <span class="ruby-identifier">log_internal</span>(<span class="ruby-value">10</span>.<span class="ruby-identifier">to_ld</span>, <span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
27
+ <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">to_ld</span>
28
+ <span class="ruby-keyword kw">end</span></pre>
29
+ </body>
30
+ </html>
@@ -0,0 +1,30 @@
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/longdecimal.rb, line 564</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">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>)
15
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
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-keyword kw">if</span> (<span class="ruby-identifier">x</span>.<span class="ruby-identifier">one?</span>) <span class="ruby-keyword kw">then</span>
18
+ <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>)
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
21
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
22
+ <span class="ruby-identifier">id</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">int_digits2</span>
23
+ <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>)
24
+ <span class="ruby-comment cmt"># puts(&quot;x=#{x} xx=#{xx} id=#{id} iprec=#{iprec}\n&quot;)</span>
25
+ <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>)
26
+ <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>)
27
+ <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">to_ld</span>
28
+ <span class="ruby-keyword kw">end</span></pre>
29
+ </body>
30
+ </html>