long-decimal 0.00.16 → 0.00.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. data/README +16 -15
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/doc/classes/LongDecimal.html +15 -8
  5. data/doc/classes/LongDecimal.src/M000041.html +3 -2
  6. data/doc/classes/LongDecimal.src/M000042.html +1 -1
  7. data/doc/classes/LongDecimal.src/M000043.html +1 -1
  8. data/doc/classes/LongDecimal.src/M000044.html +1 -3
  9. data/doc/classes/LongDecimal.src/M000045.html +1 -1
  10. data/doc/classes/LongDecimal.src/M000046.html +1 -1
  11. data/doc/classes/LongDecimal.src/M000047.html +1 -1
  12. data/doc/classes/LongDecimal.src/M000048.html +1 -1
  13. data/doc/classes/LongDecimal.src/M000049.html +7 -3
  14. data/doc/classes/LongDecimal.src/M000050.html +1 -1
  15. data/doc/classes/LongDecimal.src/M000051.html +1 -1
  16. data/doc/classes/LongDecimal.src/M000052.html +1 -1
  17. data/doc/classes/LongDecimal.src/M000053.html +1 -1
  18. data/doc/classes/LongDecimal.src/M000054.html +1 -1
  19. data/doc/classes/LongDecimal.src/M000055.html +1 -1
  20. data/doc/classes/LongDecimal.src/M000056.html +1 -1
  21. data/doc/classes/LongDecimal.src/M000058.html +1 -1
  22. data/doc/classes/LongDecimal.src/M000059.html +1 -1
  23. data/doc/classes/LongDecimal.src/M000060.html +1 -1
  24. data/doc/classes/LongDecimal.src/M000061.html +1 -1
  25. data/doc/classes/LongDecimal.src/M000062.html +1 -1
  26. data/doc/classes/LongDecimal.src/M000063.html +1 -1
  27. data/doc/classes/LongDecimal.src/M000064.html +1 -1
  28. data/doc/classes/LongDecimal.src/M000065.html +1 -1
  29. data/doc/classes/LongDecimal.src/M000066.html +1 -1
  30. data/doc/classes/LongDecimal.src/M000067.html +1 -1
  31. data/doc/classes/LongDecimal.src/M000068.html +1 -1
  32. data/doc/classes/LongDecimal.src/M000069.html +1 -1
  33. data/doc/classes/LongDecimal.src/M000070.html +1 -1
  34. data/doc/classes/LongDecimal.src/M000071.html +1 -1
  35. data/doc/classes/LongDecimal.src/M000072.html +1 -1
  36. data/doc/classes/LongDecimal.src/M000073.html +1 -1
  37. data/doc/classes/LongDecimal.src/M000074.html +1 -1
  38. data/doc/classes/LongDecimal.src/M000075.html +1 -1
  39. data/doc/classes/LongDecimal.src/M000076.html +1 -1
  40. data/doc/classes/LongDecimal.src/M000077.html +1 -1
  41. data/doc/classes/LongDecimal.src/M000078.html +1 -1
  42. data/doc/classes/LongDecimal.src/M000079.html +1 -1
  43. data/doc/classes/LongDecimal.src/M000080.html +1 -1
  44. data/doc/classes/LongDecimal.src/M000081.html +1 -1
  45. data/doc/classes/LongDecimal.src/M000082.html +1 -1
  46. data/doc/classes/LongDecimal.src/M000083.html +1 -1
  47. data/doc/classes/LongDecimal.src/M000084.html +1 -1
  48. data/doc/classes/LongDecimal.src/M000085.html +1 -1
  49. data/doc/classes/LongDecimal.src/M000086.html +1 -1
  50. data/doc/classes/LongDecimal.src/M000087.html +1 -1
  51. data/doc/classes/LongDecimal.src/M000088.html +1 -1
  52. data/doc/classes/LongDecimal.src/M000089.html +30 -4
  53. data/doc/classes/LongDecimal.src/M000090.html +1 -1
  54. data/doc/classes/LongDecimal.src/M000091.html +1 -1
  55. data/doc/classes/LongDecimal.src/M000094.html +1 -1
  56. data/doc/classes/LongDecimal.src/M000095.html +1 -1
  57. data/doc/classes/LongDecimal.src/M000096.html +1 -1
  58. data/doc/classes/LongDecimal.src/M000097.html +1 -1
  59. data/doc/classes/LongDecimal.src/M000098.html +1 -1
  60. data/doc/classes/LongDecimal.src/M000099.html +1 -1
  61. data/doc/classes/LongDecimalBase.html +58 -57
  62. data/doc/classes/LongDecimalBase.src/M000102.html +4 -4
  63. data/doc/classes/LongDecimalBase.src/M000103.html +4 -4
  64. data/doc/classes/LongDecimalBase.src/M000104.html +4 -4
  65. data/doc/classes/LongDecimalBase.src/M000105.html +4 -4
  66. data/doc/classes/LongDecimalBase.src/M000106.html +4 -4
  67. data/doc/classes/LongDecimalBase.src/M000107.html +18 -0
  68. data/doc/classes/LongDecimalBase.src/M000110.html +9 -5
  69. data/doc/classes/LongDecimalBase.src/M000111.html +5 -4
  70. data/doc/classes/LongDecimalBase.src/M000112.html +18 -0
  71. data/doc/classes/LongDecimalQuot.html +18 -13
  72. data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
  73. data/doc/classes/LongDecimalQuot.src/M000004.html +1 -1
  74. data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
  75. data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
  76. data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
  77. data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
  78. data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
  79. data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
  80. data/doc/classes/LongDecimalQuot.src/M000011.html +3 -3
  81. data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
  82. data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
  83. data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
  84. data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
  85. data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
  86. data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
  87. data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
  88. data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
  89. data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
  90. data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
  91. data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
  92. data/doc/classes/LongDecimalQuot.src/M000023.html +35 -2
  93. data/doc/classes/LongDecimalQuot.src/M000024.html +20 -4
  94. data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
  95. data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
  96. data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
  97. data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
  98. data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
  99. data/doc/classes/LongDecimalQuot.src/M000032.html +1 -1
  100. data/doc/classes/LongDecimalQuot.src/M000033.html +1 -1
  101. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +5 -5
  102. data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000137.html +22 -0
  103. data/doc/classes/LongMath.html +135 -116
  104. data/doc/classes/LongMath.src/M000113.html +5 -4
  105. data/doc/classes/LongMath.src/M000114.html +4 -4
  106. data/doc/classes/LongMath.src/M000115.html +4 -5
  107. data/doc/classes/LongMath.src/M000116.html +5 -4
  108. data/doc/classes/LongMath.src/M000117.html +4 -18
  109. data/doc/classes/LongMath.src/M000118.html +14 -14
  110. data/doc/classes/LongMath.src/M000119.html +18 -5
  111. data/doc/classes/LongMath.src/M000120.html +5 -29
  112. data/doc/classes/LongMath.src/M000121.html +29 -5
  113. data/doc/classes/LongMath.src/M000122.html +5 -56
  114. data/doc/classes/LongMath.src/M000123.html +54 -19
  115. data/doc/classes/LongMath.src/M000124.html +20 -35
  116. data/doc/classes/LongMath.src/M000125.html +31 -27
  117. data/doc/classes/LongMath.src/M000126.html +32 -8
  118. data/doc/classes/LongMath.src/M000127.html +8 -13
  119. data/doc/classes/LongMath.src/M000128.html +13 -82
  120. data/doc/classes/LongMath.src/M000129.html +79 -4
  121. data/doc/classes/LongMath.src/M000130.html +4 -14
  122. data/doc/classes/LongMath.src/M000131.html +4 -14
  123. data/doc/classes/LongMath.src/M000132.html +13 -148
  124. data/doc/classes/LongMath.src/M000133.html +14 -8
  125. data/doc/classes/LongMath.src/M000134.html +127 -3
  126. data/doc/classes/LongMath.src/M000135.html +25 -0
  127. data/doc/classes/LongMath.src/M000136.html +42 -0
  128. data/doc/classes/Numeric.html +5 -2
  129. data/doc/classes/Numeric.src/M000100.html +8 -3
  130. data/doc/classes/Rational.html +158 -0
  131. data/doc/classes/Rational.src/M000101.html +23 -0
  132. data/doc/created.rid +1 -1
  133. data/doc/dot/f_0.dot +9 -0
  134. data/doc/dot/f_0.png +0 -0
  135. data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
  136. data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
  137. data/doc/fr_class_index.html +1 -0
  138. data/doc/fr_method_index.html +56 -54
  139. data/lib/long-decimal.rb +147 -29
  140. data/test/testlongdecimal.rb +58 -5
  141. data/version.rb +1 -1
  142. metadata +10 -3
  143. data/doc/files/lib/long-decimal_rb.html +0 -187
@@ -5,21 +5,27 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>power (LongMath)</title>
8
+ <title>log2 (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 2234</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>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2224</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
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">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-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;x=#{x.inspect} must not 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>
20
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>
21
20
  <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
22
- <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</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>)
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">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
28
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">y</span>
23
29
  <span class="ruby-keyword kw">end</span></pre>
24
30
  </body>
25
31
  </html>
@@ -5,12 +5,134 @@
5
5
 
6
6
  <html>
7
7
  <head>
8
- <title>power_internal (LongMath)</title>
8
+ <title>log_internal (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 2252</span>
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2248</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">LongDecimal</span><span class="ruby-operator">::</span><span class="ruby-constant">ROUND_HALF_DOWN</span>, <span class="ruby-identifier">iprec</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">mode</span> = <span class="ruby-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-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-operator">==</span> <span class="ruby-keyword kw">nil</span>) <span class="ruby-keyword kw">then</span>
18
+ <span class="ruby-identifier">prec</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">scale</span>
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
21
+ <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>
22
+ <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>)
23
+ <span class="ruby-keyword kw">end</span>
24
+
25
+ <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>)
26
+ <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>
27
+ <span class="ruby-keyword kw">end</span>
28
+ <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>)
29
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
30
+
31
+ <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>
32
+ <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-identifier">round</span>
33
+ <span class="ruby-keyword kw">end</span>
34
+ <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>
35
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">prec</span>
36
+ <span class="ruby-keyword kw">end</span>
37
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-value str">&quot;iprec&quot;</span>)
38
+
39
+ <span class="ruby-comment cmt"># dprec = [ iprec - 1, (prec + 1) &lt;&lt; 1 ].min</span>
40
+ <span class="ruby-identifier">dprec</span> = <span class="ruby-identifier">iprec</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
41
+
42
+ <span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
43
+ <span class="ruby-identifier">s</span> = <span class="ruby-value">1</span>
44
+ <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>
45
+ <span class="ruby-comment cmt"># puts(&quot;x=#{x} iprec=#{iprec}\n&quot;)</span>
46
+ <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</span>, <span class="ruby-identifier">mode</span>)
47
+ <span class="ruby-identifier">s</span> = <span class="ruby-value">-1</span>
48
+ <span class="ruby-comment cmt"># puts(&quot;s=#{s} x=#{x} iprec=#{iprec}\n&quot;)</span>
49
+ <span class="ruby-keyword kw">end</span>
50
+ <span class="ruby-identifier">exp_part</span> = <span class="ruby-value">0</span>
51
+ <span class="ruby-identifier">estimate</span> = <span class="ruby-value">0</span>
52
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator">&gt;</span> <span class="ruby-constant">MAX_FLOATABLE</span>) <span class="ruby-keyword kw">do</span>
53
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">exp_part</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
54
+ <span class="ruby-identifier">estimate</span> = <span class="ruby-constant">MAX_EXP_ABLE</span>.<span class="ruby-identifier">to_ld</span>
55
+ <span class="ruby-identifier">exp_part</span> = <span class="ruby-identifier">exp</span>(<span class="ruby-identifier">estimate</span>, <span class="ruby-identifier">iprec</span>)
56
+ <span class="ruby-keyword kw">end</span>
57
+ <span class="ruby-identifier">x</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">exp_part</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
58
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
59
+ <span class="ruby-identifier">y</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">estimate</span>
60
+ <span class="ruby-keyword kw">else</span>
61
+ <span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">estimate</span>
62
+ <span class="ruby-keyword kw">end</span>
63
+ <span class="ruby-keyword kw">end</span>
64
+
65
+ <span class="ruby-identifier">delta</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-value">1</span>, <span class="ruby-value">3</span>)
66
+ <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">x</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>).<span class="ruby-identifier">abs</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">delta</span> <span class="ruby-keyword kw">do</span>
67
+ <span class="ruby-comment cmt"># puts(&quot;too far from 1: x=#{x}\n&quot;)</span>
68
+ <span class="ruby-identifier">xf</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_f</span>
69
+ <span class="ruby-comment cmt"># puts(&quot;xf=#{xf}\n&quot;)</span>
70
+ <span class="ruby-identifier">mlx</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">xf</span>)
71
+ <span class="ruby-comment cmt"># puts(&quot;log(xf)=#{mlx}\n&quot;)</span>
72
+ <span class="ruby-identifier">estimate</span> = <span class="ruby-identifier">mlx</span>.<span class="ruby-identifier">to_ld</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-value">20</span>, <span class="ruby-identifier">mode</span>)
73
+ <span class="ruby-identifier">exp_part</span> = <span class="ruby-identifier">exp</span>(<span class="ruby-identifier">estimate</span>, <span class="ruby-identifier">iprec</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>)
74
+ <span class="ruby-comment cmt"># puts(&quot;y=#{y} s=#{s} est=#{estimate} part=#{exp_part} x=#{x}\n&quot;)</span>
75
+ <span class="ruby-identifier">x</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">exp_part</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
76
+ <span class="ruby-comment cmt"># puts(&quot;divided by exp_part=#{exp_part}: #{x}\n&quot;)</span>
77
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
78
+ <span class="ruby-identifier">y</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">estimate</span>
79
+ <span class="ruby-keyword kw">else</span>
80
+ <span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">estimate</span>
81
+ <span class="ruby-keyword kw">end</span>
82
+ <span class="ruby-comment cmt"># puts(&quot;y=#{y} s=#{s} est=#{estimate} part=#{exp_part} x=#{x}\n&quot;)</span>
83
+ <span class="ruby-keyword kw">end</span>
84
+
85
+ <span class="ruby-identifier">factor</span> = <span class="ruby-value">1</span>
86
+ <span class="ruby-comment cmt"># delta = LongDecimal(1, (iprec.to_f**(1/3)).round)</span>
87
+ <span class="ruby-comment cmt"># while (x - 1).abs &gt; delta do</span>
88
+ <span class="ruby-comment cmt"># x = sqrt(x)</span>
89
+ <span class="ruby-comment cmt"># factor *= 2</span>
90
+ <span class="ruby-comment cmt"># end</span>
91
+
92
+ <span class="ruby-identifier">sum</span> = <span class="ruby-value">0</span>
93
+ <span class="ruby-identifier">z</span> = <span class="ruby-value">1</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">x</span>
94
+ <span class="ruby-identifier">i</span> = <span class="ruby-value">1</span>
95
+ <span class="ruby-identifier">p</span> = <span class="ruby-value">1</span>.<span class="ruby-identifier">to_ld</span>
96
+ <span class="ruby-identifier">d</span> = <span class="ruby-value">1</span>.<span class="ruby-identifier">to_ld</span>
97
+ <span class="ruby-keyword kw">until</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">abs</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">zero?</span> <span class="ruby-keyword kw">do</span>
98
+ <span class="ruby-identifier">p</span> = (<span class="ruby-identifier">p</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">z</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
99
+ <span class="ruby-identifier">d</span> = (<span class="ruby-identifier">p</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">i</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
100
+ <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
101
+ <span class="ruby-identifier">sum</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">d</span>
102
+
103
+ <span class="ruby-comment cmt"># puts(&quot;log_internal: s=#{sum} d=#{d} x=#{x} i=#{i} p=#{p} iprec=#{iprec} dprec=#{dprec}\n&quot;) if (i &amp; 0x0f == 0x0f)</span>
104
+ <span class="ruby-keyword kw">end</span>
105
+
106
+ <span class="ruby-comment cmt"># puts(&quot;y=#{y} s=#{s} f=#{factor} sum=#{sum}\n&quot;)</span>
107
+ <span class="ruby-identifier">y</span> <span class="ruby-operator">-=</span> ((<span class="ruby-identifier">s</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">factor</span>) <span class="ruby-operator">*</span> <span class="ruby-identifier">sum</span>).<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">iprec</span>, <span class="ruby-identifier">mode</span>)
108
+ <span class="ruby-comment cmt"># puts(&quot;y=#{y} s=#{s} f=#{factor} sum=#{sum}\n&quot;)</span>
109
+ <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>)
110
+
111
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># log_internal</span>
112
+
113
+ <span class="ruby-comment cmt">#</span>
114
+ <span class="ruby-comment cmt"># calc the power of x with exponent y to the given precision as</span>
115
+ <span class="ruby-comment cmt"># LongDecimal. Only supports values of y such that exp(y) still</span>
116
+ <span class="ruby-comment cmt"># fits into a float (y &lt;= 709)</span>
117
+ <span class="ruby-comment cmt">#</span>
118
+ <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>)
119
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
120
+ <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">y</span>, <span class="ruby-value str">&quot;y&quot;</span>)
121
+ <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>
122
+ <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-operator">&lt;=</span> <span class="ruby-constant">MAX_FLOATABLE</span>
123
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">&quot;x=#{x.inspect} must not 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>
124
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
125
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
126
+ <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</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>)
127
+ <span class="ruby-keyword kw">end</span>
128
+
129
+ <span class="ruby-comment cmt">#</span>
130
+ <span class="ruby-comment cmt"># internal functionality of exp. exposes some more parameters, that</span>
131
+ <span class="ruby-comment cmt"># should usually be set to defaut values, in order to allow better testing.</span>
132
+ <span class="ruby-comment cmt"># do not actually call this method unless you are testing exp.</span>
133
+ <span class="ruby-comment cmt"># create a bug report, if the default settings for the parameters do</span>
134
+ <span class="ruby-comment cmt"># not work correctly</span>
135
+ <span class="ruby-comment cmt">#</span>
14
136
  <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</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">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
137
  <span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">&quot;x&quot;</span>)
16
138
  <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>
@@ -37,6 +159,8 @@
37
159
  <span class="ruby-comment cmt"># puts(&quot;power_internal: x=#{x} logx=#{logx} y=#{y} logx_y=#{logx_y} xy=#{xy} iprec=#{iprec} prec=#{prec}\n&quot;)</span>
38
160
  <span class="ruby-identifier">xy</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
39
161
 
40
- <span class="ruby-keyword kw">end</span></pre>
162
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt"># power_internal</span>
163
+
164
+ <span class="ruby-keyword kw">end</span></pre>
41
165
  </body>
42
166
  </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/long-decimal.rb, line 2352</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">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-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;x=#{x.inspect} must not 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>
20
+ <span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">&quot;prec&quot;</span>)
21
+ <span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-value str">&quot;mode&quot;</span>)
22
+ <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</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>)
23
+ <span class="ruby-keyword kw">end</span></pre>
24
+ </body>
25
+ </html>
@@ -0,0 +1,42 @@
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_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 2370</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">power_internal</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</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">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>, <span class="ruby-value str">&quot;x&quot;</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-identifier">logx_y_f</span> = <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_f</span>) <span class="ruby-operator">*</span> (<span class="ruby-identifier">y</span>.<span class="ruby-identifier">to_f</span>)
28
+
29
+ <span class="ruby-comment cmt"># iprec = (prec * 1.2 + 20 + (y.abs.to_f) * 1.5 * x.int_digits2).round</span>
30
+ <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>
31
+ <span class="ruby-identifier">iprec</span> = <span class="ruby-identifier">calc_iprec_for_exp</span>(<span class="ruby-identifier">logx_y_f</span>, <span class="ruby-identifier">prec</span>) <span class="ruby-operator">+</span> <span class="ruby-value">2</span>
32
+ <span class="ruby-keyword kw">end</span>
33
+ <span class="ruby-comment cmt"># puts(&quot;power_internal: x=#{x} y=#{y} logx_y=#{logx_y_f} iprec=#{iprec} prec=#{prec}\n&quot;)</span>
34
+ <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>)
35
+ <span class="ruby-identifier">logx_y</span> = <span class="ruby-identifier">logx</span><span class="ruby-operator">*</span><span class="ruby-identifier">y</span>
36
+ <span class="ruby-identifier">xy</span> = <span class="ruby-identifier">exp_internal</span>(<span class="ruby-identifier">logx_y</span>, <span class="ruby-identifier">prec</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>, <span class="ruby-identifier">mode</span>)
37
+ <span class="ruby-comment cmt"># puts(&quot;power_internal: x=#{x} logx=#{logx} y=#{y} logx_y=#{logx_y} xy=#{xy} iprec=#{iprec} prec=#{prec}\n&quot;)</span>
38
+ <span class="ruby-identifier">xy</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">final_mode</span>)
39
+
40
+ <span class="ruby-keyword kw">end</span></pre>
41
+ </body>
42
+ </html>
@@ -85,6 +85,7 @@
85
85
  <area shape="RECT" coords="6,293,120,341" href="LongDecimalQuot.html" alt="LongDecimalQuot">
86
86
  <area shape="RECT" coords="144,293,238,341" href="LongDecimal.html" alt="LongDecimal">
87
87
  <area shape="RECT" coords="43,101,115,149" href="Numeric.html" alt="Numeric">
88
+ <area shape="RECT" coords="267,5,339,53" href="Rational.html" alt="Rational">
88
89
  <area shape="RECT" coords="246,187,339,233" href="LongMath.html" alt="LongMath">
89
90
  <area shape="RECT" coords="128,68,304,160" href="LongDecimalRoundingMode.html" alt="LongDecimalRoundingMode">
90
91
  </map>
@@ -127,13 +128,15 @@
127
128
  <div class="method-heading">
128
129
  <a href="Numeric.src/M000100.html" target="Code" class="method-signature"
129
130
  onclick="popupCode('Numeric.src/M000100.html');return false;">
130
- <span class="method-name">to_ld</span><span class="method-args">()</span>
131
+ <span class="method-name">to_ld</span><span class="method-args">(prec = nil, mode = LongDecimal::ROUND_HALF_UP)</span>
131
132
  </a>
132
133
  </div>
133
134
 
134
135
  <div class="method-description">
135
136
  <p>
136
- convert self to <a href="LongDecimal.html">LongDecimal</a>
137
+ convert self to <a href="LongDecimal.html">LongDecimal</a> optional first
138
+ argument gives the precision for the desired result optional second
139
+ argument gives the rouding mode
137
140
  </p>
138
141
  </div>
139
142
  </div>
@@ -10,9 +10,14 @@
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 1601</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ld</span>
15
- <span class="ruby-constant">LongDecimal</span>(<span class="ruby-keyword kw">self</span>)
13
+ <pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1685</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ld</span>(<span class="ruby-identifier">prec</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_UP</span>)
15
+ <span class="ruby-identifier">l</span> = <span class="ruby-constant">LongDecimal</span>(<span class="ruby-keyword kw">self</span>)
16
+ <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">prec</span>.<span class="ruby-identifier">nil?</span>)
17
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">l</span>
18
+ <span class="ruby-keyword kw">else</span>
19
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">round_to_scale</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">mode</span>)
20
+ <span class="ruby-keyword kw">end</span>
16
21
  <span class="ruby-keyword kw">end</span></pre>
17
22
  </body>
18
23
  </html>
@@ -0,0 +1,158 @@
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 xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Rational</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Rational</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/long-decimal_rb.html">
59
+ lib/long-decimal.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+ <div id="diagram">
81
+ <map id="map" name="map">
82
+ <area shape="RECT" coords="68,197,186,245" href="LongDecimalBase.html" alt="LongDecimalBase">
83
+ <area shape="RECT" coords="163,5,243,53" href="Comparable.html" alt="Comparable">
84
+ <area shape="RECT" coords="139,101,267,149" href="LongDecimalRoundingMode/RoundingModeClass.html" alt="RoundingModeClass">
85
+ <area shape="RECT" coords="6,293,120,341" href="LongDecimalQuot.html" alt="LongDecimalQuot">
86
+ <area shape="RECT" coords="144,293,238,341" href="LongDecimal.html" alt="LongDecimal">
87
+ <area shape="RECT" coords="43,101,115,149" href="Numeric.html" alt="Numeric">
88
+ <area shape="RECT" coords="267,5,339,53" href="Rational.html" alt="Rational">
89
+ <area shape="RECT" coords="246,187,339,233" href="LongMath.html" alt="LongMath">
90
+ <area shape="RECT" coords="128,68,304,160" href="LongDecimalRoundingMode.html" alt="LongDecimalRoundingMode">
91
+ </map>
92
+ <img src="../dot/f_0.png" usemap="#map" border=0 alt="TopLevel">
93
+ </div>
94
+
95
+
96
+
97
+ </div>
98
+
99
+ <div id="method-list">
100
+ <h3 class="section-bar">Methods</h3>
101
+
102
+ <div class="name-list">
103
+ <a href="#M000101">to_ld</a>&nbsp;&nbsp;
104
+ </div>
105
+ </div>
106
+
107
+ </div>
108
+
109
+
110
+ <!-- if includes -->
111
+
112
+ <div id="section">
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <!-- if method_list -->
122
+ <div id="methods">
123
+ <h3 class="section-bar">Public Instance methods</h3>
124
+
125
+ <div id="method-M000101" class="method-detail">
126
+ <a name="M000101"></a>
127
+
128
+ <div class="method-heading">
129
+ <a href="Rational.src/M000101.html" target="Code" class="method-signature"
130
+ onclick="popupCode('Rational.src/M000101.html');return false;">
131
+ <span class="method-name">to_ld</span><span class="method-args">(prec = nil, mode = LongDecimal::ROUND_HALF_UP)</span>
132
+ </a>
133
+ </div>
134
+
135
+ <div class="method-description">
136
+ <p>
137
+ convert self to <a href="LongDecimal.html">LongDecimal</a>. Special
138
+ handling of <a href="Rational.html">Rational</a> to avoid loosing
139
+ information in the first step that would be needed for the second step
140
+ optional first argument gives the precision for the desired result optional
141
+ second argument gives the rouding mode
142
+ </p>
143
+ </div>
144
+ </div>
145
+
146
+
147
+ </div>
148
+
149
+
150
+ </div>
151
+
152
+
153
+ <div id="validator-badges">
154
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
155
+ </div>
156
+
157
+ </body>
158
+ </html>