long-decimal 0.00.19 → 0.00.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +25 -22
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/doc/classes/LongDecimal.html +327 -286
- data/doc/classes/LongDecimal.src/M000041.html +10 -4
- data/doc/classes/LongDecimal.src/M000042.html +3 -2
- data/doc/classes/LongDecimal.src/M000043.html +10 -26
- data/doc/classes/LongDecimal.src/M000044.html +24 -16
- data/doc/classes/LongDecimal.src/M000045.html +19 -4
- data/doc/classes/LongDecimal.src/M000046.html +4 -15
- data/doc/classes/LongDecimal.src/M000047.html +13 -26
- data/doc/classes/LongDecimal.src/M000048.html +28 -4
- data/doc/classes/LongDecimal.src/M000049.html +4 -8
- data/doc/classes/LongDecimal.src/M000050.html +8 -6
- data/doc/classes/LongDecimal.src/M000051.html +6 -4
- data/doc/classes/LongDecimal.src/M000052.html +4 -15
- data/doc/classes/LongDecimal.src/M000053.html +8 -24
- data/doc/classes/LongDecimal.src/M000054.html +6 -14
- data/doc/classes/LongDecimal.src/M000055.html +4 -13
- data/doc/classes/LongDecimal.src/M000056.html +15 -4
- data/doc/classes/LongDecimal.src/M000057.html +27 -0
- data/doc/classes/LongDecimal.src/M000058.html +4 -4
- data/doc/classes/LongDecimal.src/M000060.html +4 -4
- data/doc/classes/LongDecimal.src/M000061.html +5 -4
- data/doc/classes/LongDecimal.src/M000062.html +5 -8
- data/doc/classes/LongDecimal.src/M000063.html +4 -9
- data/doc/classes/LongDecimal.src/M000064.html +6 -7
- data/doc/classes/LongDecimal.src/M000065.html +6 -6
- data/doc/classes/LongDecimal.src/M000066.html +9 -4
- data/doc/classes/LongDecimal.src/M000067.html +7 -13
- data/doc/classes/LongDecimal.src/M000068.html +4 -9
- data/doc/classes/LongDecimal.src/M000069.html +13 -7
- data/doc/classes/LongDecimal.src/M000070.html +7 -18
- data/doc/classes/LongDecimal.src/M000071.html +8 -7
- data/doc/classes/LongDecimal.src/M000072.html +20 -5
- data/doc/classes/LongDecimal.src/M000073.html +6 -7
- data/doc/classes/LongDecimal.src/M000074.html +5 -9
- data/doc/classes/LongDecimal.src/M000075.html +5 -5
- data/doc/classes/LongDecimal.src/M000076.html +9 -4
- data/doc/classes/LongDecimal.src/M000077.html +7 -5
- data/doc/classes/LongDecimal.src/M000078.html +4 -7
- data/doc/classes/LongDecimal.src/M000079.html +7 -4
- data/doc/classes/LongDecimal.src/M000080.html +7 -4
- data/doc/classes/LongDecimal.src/M000081.html +4 -9
- data/doc/classes/LongDecimal.src/M000082.html +3 -8
- data/doc/classes/LongDecimal.src/M000083.html +9 -5
- data/doc/classes/LongDecimal.src/M000084.html +7 -7
- data/doc/classes/LongDecimal.src/M000085.html +5 -4
- data/doc/classes/LongDecimal.src/M000086.html +9 -4
- data/doc/classes/LongDecimal.src/M000087.html +4 -4
- data/doc/classes/LongDecimal.src/M000088.html +4 -4
- data/doc/classes/LongDecimal.src/M000089.html +4 -59
- data/doc/classes/LongDecimal.src/M000090.html +4 -4
- data/doc/classes/LongDecimal.src/M000091.html +59 -4
- data/doc/classes/LongDecimal.src/M000092.html +18 -0
- data/doc/classes/LongDecimal.src/M000093.html +18 -0
- data/doc/classes/LongDecimal.src/M000096.html +5 -4
- data/doc/classes/LongDecimal.src/M000097.html +5 -4
- data/doc/classes/LongDecimal.src/M000098.html +4 -4
- data/doc/classes/LongDecimal.src/M000099.html +4 -4
- data/doc/classes/LongDecimal.src/M000100.html +18 -0
- data/doc/classes/LongDecimal.src/M000101.html +18 -0
- data/doc/classes/LongDecimalBase.html +53 -53
- data/doc/classes/LongDecimalBase.src/M000104.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000105.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000106.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000107.html +4 -4
- data/doc/classes/LongDecimalBase.src/M000108.html +18 -0
- data/doc/classes/LongDecimalBase.src/M000109.html +4 -9
- data/doc/classes/LongDecimalBase.src/M000112.html +9 -4
- data/doc/classes/LongDecimalBase.src/M000113.html +19 -0
- data/doc/classes/LongDecimalBase.src/M000114.html +18 -0
- data/doc/classes/LongDecimalQuot.src/M000003.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000004.html +22 -5
- data/doc/classes/LongDecimalQuot.src/M000005.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000006.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000007.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000008.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000009.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000010.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000011.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000012.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000013.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000014.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000015.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000016.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000017.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000018.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000019.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000020.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000021.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000022.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000023.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000024.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000025.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000026.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000027.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000028.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000029.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000032.html +1 -1
- data/doc/classes/LongDecimalQuot.src/M000033.html +1 -1
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.html +10 -10
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000141.html +22 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000142.html +18 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000146.html +22 -0
- data/doc/classes/LongDecimalRoundingMode/RoundingModeClass.src/M000147.html +18 -0
- data/doc/classes/LongMath.html +191 -137
- data/doc/classes/LongMath.src/M000115.html +5 -4
- data/doc/classes/LongMath.src/M000116.html +4 -5
- data/doc/classes/LongMath.src/M000117.html +4 -4
- data/doc/classes/LongMath.src/M000118.html +5 -18
- data/doc/classes/LongMath.src/M000119.html +4 -18
- data/doc/classes/LongMath.src/M000120.html +18 -5
- data/doc/classes/LongMath.src/M000121.html +16 -27
- data/doc/classes/LongMath.src/M000122.html +4 -4
- data/doc/classes/LongMath.src/M000123.html +17 -44
- data/doc/classes/LongMath.src/M000124.html +5 -21
- data/doc/classes/LongMath.src/M000125.html +49 -29
- data/doc/classes/LongMath.src/M000126.html +20 -47
- data/doc/classes/LongMath.src/M000127.html +36 -8
- data/doc/classes/LongMath.src/M000128.html +6 -4
- data/doc/classes/LongMath.src/M000129.html +33 -4
- data/doc/classes/LongMath.src/M000130.html +40 -56
- data/doc/classes/LongMath.src/M000131.html +8 -43
- data/doc/classes/LongMath.src/M000132.html +4 -10
- data/doc/classes/LongMath.src/M000133.html +4 -7
- data/doc/classes/LongMath.src/M000134.html +58 -15
- data/doc/classes/LongMath.src/M000135.html +39 -16
- data/doc/classes/LongMath.src/M000136.html +6 -39
- data/doc/classes/LongMath.src/M000137.html +5 -168
- data/doc/classes/LongMath.src/M000138.html +34 -0
- data/doc/classes/LongMath.src/M000139.html +34 -0
- data/doc/classes/LongMath.src/M000140.html +57 -0
- data/doc/classes/LongMath.src/M000141.html +219 -0
- data/doc/classes/LongMath.src/M000142.html +33 -0
- data/doc/classes/LongMath.src/M000143.html +70 -0
- data/doc/classes/LongMath.src/M000144.html +58 -0
- data/doc/classes/LongMath/CacheKey.html +164 -0
- data/doc/classes/LongMath/CacheKey.src/M000140.html +36 -0
- data/doc/classes/LongMath/CacheKey.src/M000145.html +36 -0
- data/doc/classes/Numeric.html +5 -5
- data/doc/classes/Numeric.src/M000102.html +23 -0
- data/doc/classes/Rational.html +5 -5
- data/doc/classes/Rational.src/M000103.html +23 -0
- data/doc/created.rid +1 -1
- data/doc/files/lib/long-decimal_rb.html +2 -2
- data/doc/files/lib/long-decimal_rb.src/M000001.html +1 -1
- data/doc/files/lib/long-decimal_rb.src/M000002.html +1 -1
- data/doc/fr_method_index.html +106 -101
- data/lib/long-decimal.rb +203 -85
- data/test/testlongdecimal.rb +372 -69
- metadata +28 -2
@@ -5,14 +5,15 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>check_word_len (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1880</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">"word_len"</span>)
|
15
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"#{name} must be a positive number <= 1024"</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">word_len</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">word_len</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">word_len</span> <span class="ruby-operator"><=</span> <span class="ruby-value">1024</span>
|
16
|
+
<span class="ruby-identifier">word_len</span>
|
16
17
|
<span class="ruby-keyword kw">end</span></pre>
|
17
18
|
</body>
|
18
19
|
</html>
|
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>check_is_int (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"#{name}=#{prec.inspect} must be >= 0"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">prec</span> <span class="ruby-operator">>=</span> <span class="ruby-value">0</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1888</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">"x"</span>)
|
15
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"#{name}=#{x.inspect} must be Integer"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Integer</span>
|
17
16
|
<span class="ruby-keyword kw">end</span></pre>
|
18
17
|
</body>
|
19
18
|
</html>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>check_is_ld (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1895</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_ld</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">"x"</span>)
|
15
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"x=#{x.inspect} must be LongDecimal"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">LongDecimal</span>
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
17
17
|
</body>
|
18
18
|
</html>
|
@@ -5,28 +5,15 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>check_is_prec (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-identifier">
|
17
|
-
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>
|
18
|
-
<span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator"><=></span> <span class="ruby-value">0</span>)
|
19
|
-
<span class="ruby-identifier">bit_pattern</span> = (<span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">word_len</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
20
|
-
<span class="ruby-identifier">words</span> = []
|
21
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">m</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">do</span>
|
22
|
-
<span class="ruby-identifier">w</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">&</span> <span class="ruby-identifier">bit_pattern</span>
|
23
|
-
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">>></span> <span class="ruby-identifier">word_len</span>
|
24
|
-
<span class="ruby-identifier">words</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">w</span>)
|
25
|
-
<span class="ruby-keyword kw">end</span>
|
26
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
27
|
-
<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
|
28
|
-
<span class="ruby-keyword kw">end</span>
|
29
|
-
<span class="ruby-identifier">words</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1903</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_prec</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">"prec"</span>)
|
15
|
+
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">prec</span>, <span class="ruby-value str">"prec"</span>)
|
16
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"#{name}=#{prec.inspect} must be >= 0"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">prec</span> <span class="ruby-operator">>=</span> <span class="ruby-value">0</span>
|
30
17
|
<span class="ruby-keyword kw">end</span></pre>
|
31
18
|
</body>
|
32
19
|
</html>
|
@@ -5,28 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>check_is_mode (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">"words must be array of length > 0"</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">words</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Array</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
17
|
-
<span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
|
18
|
-
<span class="ruby-identifier">s</span> = (<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] <span class="ruby-operator"><=></span> <span class="ruby-value">0</span>)
|
19
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
20
|
-
<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
|
21
|
-
<span class="ruby-keyword kw">end</span>
|
22
|
-
<span class="ruby-identifier">words</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
|
23
|
-
<span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">word_len</span>
|
24
|
-
<span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">w</span>
|
25
|
-
<span class="ruby-keyword kw">end</span>
|
26
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
27
|
-
<span class="ruby-identifier">y</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">y</span>
|
28
|
-
<span class="ruby-keyword kw">end</span>
|
29
|
-
<span class="ruby-identifier">y</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1912</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">check_is_mode</span>(<span class="ruby-identifier">mode</span>, <span class="ruby-identifier">name</span>=<span class="ruby-value str">"mode"</span>)
|
15
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"#{name}=#{mode.inspect} must be legal rounding mode"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">RoundingModeClass</span>
|
30
16
|
<span class="ruby-keyword kw">end</span></pre>
|
31
17
|
</body>
|
32
18
|
</html>
|
@@ -5,15 +5,28 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>split_to_words (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-identifier">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1921</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">word_len</span> = <span class="ruby-value">32</span>)
|
15
|
+
<span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
|
16
|
+
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
17
|
+
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">x</span>.<span class="ruby-identifier">abs</span>
|
18
|
+
<span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator"><=></span> <span class="ruby-value">0</span>)
|
19
|
+
<span class="ruby-identifier">bit_pattern</span> = (<span class="ruby-value">1</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">word_len</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
20
|
+
<span class="ruby-identifier">words</span> = []
|
21
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">m</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">do</span>
|
22
|
+
<span class="ruby-identifier">w</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">&</span> <span class="ruby-identifier">bit_pattern</span>
|
23
|
+
<span class="ruby-identifier">m</span> = <span class="ruby-identifier">m</span> <span class="ruby-operator">>></span> <span class="ruby-identifier">word_len</span>
|
24
|
+
<span class="ruby-identifier">words</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">w</span>)
|
25
|
+
<span class="ruby-keyword kw">end</span>
|
26
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
27
|
+
<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
|
28
|
+
<span class="ruby-keyword kw">end</span>
|
29
|
+
<span class="ruby-identifier">words</span>
|
17
30
|
<span class="ruby-keyword kw">end</span></pre>
|
18
31
|
</body>
|
19
32
|
</html>
|
@@ -5,39 +5,28 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>merge_from_words (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
|
17
|
-
<span class="ruby-identifier">
|
18
|
-
<span class="ruby-
|
19
|
-
|
20
|
-
|
21
|
-
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
|
22
|
-
<span class="ruby-keyword kw">return</span> [ <span class="ruby-constant">Complex</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]), <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]]
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1943</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">merge_from_words</span>(<span class="ruby-identifier">words</span>, <span class="ruby-identifier">word_len</span> = <span class="ruby-value">32</span>)
|
15
|
+
<span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">word_len</span>)
|
16
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-value str">"words must be array of length > 0"</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">words</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Array</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">words</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
17
|
+
<span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
|
18
|
+
<span class="ruby-identifier">s</span> = (<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] <span class="ruby-operator"><=></span> <span class="ruby-value">0</span>)
|
19
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
20
|
+
<span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">-</span><span class="ruby-identifier">words</span>[<span class="ruby-value">0</span>]
|
23
21
|
<span class="ruby-keyword kw">end</span>
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<span class="ruby-
|
28
|
-
|
29
|
-
|
30
|
-
<span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator"><<</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
|
31
|
-
<span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
32
|
-
<span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">d0</span>
|
33
|
-
<span class="ruby-identifier">b</span> = <span class="ruby-value">0</span>
|
34
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">>=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
35
|
-
<span class="ruby-identifier">b</span> = <span class="ruby-value">1</span>
|
36
|
-
<span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
|
37
|
-
<span class="ruby-keyword kw">end</span>
|
38
|
-
<span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">b</span>
|
22
|
+
<span class="ruby-identifier">words</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">w</span><span class="ruby-operator">|</span>
|
23
|
+
<span class="ruby-identifier">y</span> = <span class="ruby-identifier">y</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">word_len</span>
|
24
|
+
<span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">w</span>
|
25
|
+
<span class="ruby-keyword kw">end</span>
|
26
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
27
|
+
<span class="ruby-identifier">y</span> = <span class="ruby-operator">-</span><span class="ruby-identifier">y</span>
|
39
28
|
<span class="ruby-keyword kw">end</span>
|
40
|
-
<span class="ruby-
|
29
|
+
<span class="ruby-identifier">y</span>
|
41
30
|
<span class="ruby-keyword kw">end</span></pre>
|
42
31
|
</body>
|
43
32
|
</html>
|
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>sqrtb (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1966</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtb</span>(<span class="ruby-identifier">x</span>)
|
15
|
+
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">x</span>)
|
16
16
|
<span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
|
17
17
|
<span class="ruby-keyword kw">end</span></pre>
|
18
18
|
</body>
|
@@ -5,66 +5,39 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>sqrtb_with_remainder (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 1977</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">x</span>)
|
15
15
|
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
16
|
-
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">n</span>, <span class="ruby-value str">"n"</span>)
|
17
|
-
<span class="ruby-identifier">n2</span> = <span class="ruby-identifier">n</span><span class="ruby-operator"><<</span><span class="ruby-value">1</span>
|
18
|
-
<span class="ruby-identifier">n1</span> = <span class="ruby-identifier">n</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
|
19
|
-
<span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">n2</span>, <span class="ruby-value str">"2*n"</span>)
|
20
16
|
|
21
17
|
<span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator"><=></span> <span class="ruby-value">0</span>)
|
22
18
|
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
23
19
|
<span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>, <span class="ruby-value">0</span>]
|
24
20
|
<span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>)
|
25
|
-
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">
|
21
|
+
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
|
26
22
|
<span class="ruby-keyword kw">return</span> [ <span class="ruby-constant">Complex</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]), <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]]
|
27
23
|
<span class="ruby-keyword kw">end</span>
|
28
24
|
|
29
|
-
<span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-
|
30
|
-
<span class="ruby-
|
31
|
-
|
32
|
-
<span class="ruby-keyword kw">end</span>
|
33
|
-
|
34
|
-
<span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-value">1</span>]
|
35
|
-
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xi</span>)
|
36
|
-
<span class="ruby-identifier">yi</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
|
37
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><=</span> <span class="ruby-value">2</span>) <span class="ruby-keyword kw">then</span>
|
38
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">a</span>
|
39
|
-
<span class="ruby-keyword kw">end</span>
|
25
|
+
<span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value">2</span>)
|
26
|
+
<span class="ruby-identifier">xi</span> = <span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
27
|
+
<span class="ruby-identifier">yi</span> = <span class="ruby-value">1</span>
|
40
28
|
|
41
|
-
<span class="ruby-identifier">
|
42
|
-
|
43
|
-
<span class="ruby-identifier">
|
44
|
-
<span class="ruby-identifier">
|
45
|
-
<span class="ruby-identifier">
|
46
|
-
<span class="ruby-identifier">
|
47
|
-
|
48
|
-
|
49
|
-
<span class="ruby-keyword kw">while</span> (<span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span>
|
50
|
-
<span class="ruby-identifier">d</span> = <span class="ruby-identifier">d0</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
|
51
|
-
<span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">q</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">d</span>)
|
52
|
-
<span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-value">0</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">was_negative</span>))
|
53
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
54
|
-
<span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">true</span>
|
55
|
-
<span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
|
56
|
-
<span class="ruby-keyword kw">else</span>
|
57
|
-
<span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
|
58
|
-
<span class="ruby-keyword kw">end</span>
|
59
|
-
<span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
60
|
-
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">j</span> <span class="ruby-operator">></span> <span class="ruby-value">10</span>) <span class="ruby-keyword kw">then</span>
|
61
|
-
<span class="ruby-keyword kw">break</span>
|
62
|
-
<span class="ruby-keyword kw">end</span>
|
29
|
+
<span class="ruby-value">1</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
30
|
+
<span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator"><<</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
|
31
|
+
<span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-value">2</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
32
|
+
<span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">d0</span>
|
33
|
+
<span class="ruby-identifier">b</span> = <span class="ruby-value">0</span>
|
34
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator">>=</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
35
|
+
<span class="ruby-identifier">b</span> = <span class="ruby-value">1</span>
|
36
|
+
<span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
|
63
37
|
<span class="ruby-keyword kw">end</span>
|
64
|
-
<span class="ruby-identifier">
|
65
|
-
<span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">n</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
|
38
|
+
<span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">b</span>
|
66
39
|
<span class="ruby-keyword kw">end</span>
|
67
|
-
<span class="ruby-keyword kw">return</span> [
|
40
|
+
<span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span>]
|
68
41
|
<span class="ruby-keyword kw">end</span></pre>
|
69
42
|
</body>
|
70
43
|
</html>
|
@@ -5,31 +5,15 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>sqrtw (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
15
|
-
<span class="ruby-identifier">
|
16
|
-
<span class="ruby-identifier">
|
17
|
-
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">b</span>, <span class="ruby-value str">"b"</span>)
|
18
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ZeroDivisionError</span>, <span class="ruby-node">"gcd_with_high_power with b < 2 is not defined. b=\"#{b.inspect}\""</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">b</span> <span class="ruby-operator"><</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"><</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">s</span> <span class="ruby-operator"><</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">></span> <span class="ruby-value">1</span>
|
32
|
-
<span class="ruby-identifier">result</span>
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2016</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtw</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n</span> = <span class="ruby-value">16</span>)
|
15
|
+
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n</span>)
|
16
|
+
<span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
|
33
17
|
<span class="ruby-keyword kw">end</span></pre>
|
34
18
|
</body>
|
35
19
|
</html>
|
@@ -5,46 +5,66 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>sqrtw_with_remainder (LongMath)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/long-decimal.rb, line 2029</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-constant">LongMath</span>.<span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n</span> = <span class="ruby-value">16</span>)
|
15
|
+
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">x</span>, <span class="ruby-value str">"x"</span>)
|
16
|
+
<span class="ruby-identifier">check_is_int</span>(<span class="ruby-identifier">n</span>, <span class="ruby-value str">"n"</span>)
|
17
|
+
<span class="ruby-identifier">n2</span> = <span class="ruby-identifier">n</span><span class="ruby-operator"><<</span><span class="ruby-value">1</span>
|
18
|
+
<span class="ruby-identifier">n1</span> = <span class="ruby-identifier">n</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
|
19
|
+
<span class="ruby-identifier">check_word_len</span>(<span class="ruby-identifier">n2</span>, <span class="ruby-value str">"2*n"</span>)
|
15
20
|
|
16
|
-
<span class="ruby-
|
17
|
-
|
18
|
-
<span class="ruby-
|
19
|
-
|
21
|
+
<span class="ruby-identifier">s</span> = (<span class="ruby-identifier">x</span> <span class="ruby-operator"><=></span> <span class="ruby-value">0</span>)
|
22
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
23
|
+
<span class="ruby-keyword kw">return</span> [<span class="ruby-value">0</span>, <span class="ruby-value">0</span>]
|
24
|
+
<span class="ruby-keyword kw">elsif</span> (<span class="ruby-identifier">s</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>)
|
25
|
+
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtw_with_remainder</span>(<span class="ruby-operator">-</span><span class="ruby-identifier">x</span>)
|
26
|
+
<span class="ruby-keyword kw">return</span> [ <span class="ruby-constant">Complex</span>(<span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]), <span class="ruby-identifier">a</span>[<span class="ruby-value">1</span>]]
|
27
|
+
<span class="ruby-keyword kw">end</span>
|
20
28
|
|
21
|
-
<span class="ruby-
|
22
|
-
|
23
|
-
<span class="ruby-keyword kw">
|
24
|
-
|
25
|
-
<span class="ruby-keyword kw">else</span>
|
26
|
-
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">m1</span>
|
27
|
-
<span class="ruby-keyword kw">end</span>
|
29
|
+
<span class="ruby-identifier">xwords</span> = <span class="ruby-identifier">split_to_words</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">n2</span>)
|
30
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">then</span>
|
31
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>])
|
32
|
+
<span class="ruby-keyword kw">end</span>
|
28
33
|
|
29
|
-
<span class="ruby-
|
34
|
+
<span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xwords</span>[<span class="ruby-value">0</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-value">1</span>]
|
35
|
+
<span class="ruby-identifier">a</span> = <span class="ruby-identifier">sqrtb_with_remainder</span>(<span class="ruby-identifier">xi</span>)
|
36
|
+
<span class="ruby-identifier">yi</span> = <span class="ruby-identifier">a</span>[<span class="ruby-value">0</span>]
|
37
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><=</span> <span class="ruby-value">2</span>) <span class="ruby-keyword kw">then</span>
|
38
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">a</span>
|
39
|
+
<span class="ruby-keyword kw">end</span>
|
30
40
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
<span class="ruby-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
+
<span class="ruby-identifier">xi</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">yi</span><span class="ruby-operator">*</span><span class="ruby-identifier">yi</span>
|
42
|
+
<span class="ruby-value">2</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">xwords</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
43
|
+
<span class="ruby-identifier">xi</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">n2</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">xwords</span>[<span class="ruby-identifier">i</span>]
|
44
|
+
<span class="ruby-identifier">d0</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">n1</span>)
|
45
|
+
<span class="ruby-identifier">q</span> = (<span class="ruby-identifier">xi</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">d0</span>).<span class="ruby-identifier">to_i</span>
|
46
|
+
<span class="ruby-identifier">q0</span> = <span class="ruby-identifier">q</span>
|
47
|
+
<span class="ruby-identifier">j</span> = <span class="ruby-value">0</span>
|
48
|
+
<span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">false</span>
|
49
|
+
<span class="ruby-keyword kw">while</span> (<span class="ruby-keyword kw">true</span>) <span class="ruby-keyword kw">do</span>
|
50
|
+
<span class="ruby-identifier">d</span> = <span class="ruby-identifier">d0</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
|
51
|
+
<span class="ruby-identifier">r</span> = <span class="ruby-identifier">xi</span> <span class="ruby-operator">-</span> (<span class="ruby-identifier">q</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">d</span>)
|
52
|
+
<span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-value">0</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&&</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">d</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">was_negative</span>))
|
53
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">r</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span>) <span class="ruby-keyword kw">then</span>
|
54
|
+
<span class="ruby-identifier">was_negative</span> = <span class="ruby-keyword kw">true</span>
|
55
|
+
<span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
|
56
|
+
<span class="ruby-keyword kw">else</span>
|
57
|
+
<span class="ruby-identifier">q</span> = <span class="ruby-identifier">q</span><span class="ruby-operator">+</span><span class="ruby-value">1</span>
|
58
|
+
<span class="ruby-keyword kw">end</span>
|
59
|
+
<span class="ruby-identifier">j</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
60
|
+
<span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">j</span> <span class="ruby-operator">></span> <span class="ruby-value">10</span>) <span class="ruby-keyword kw">then</span>
|
61
|
+
<span class="ruby-keyword kw">break</span>
|
41
62
|
<span class="ruby-keyword kw">end</span>
|
42
|
-
<span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> (<span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">power</span>) <span class="ruby-operator">/</span> <span class="ruby-constant">Math</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">prime_number</span>)).<span class="ruby-identifier">round</span>
|
43
63
|
<span class="ruby-keyword kw">end</span>
|
44
|
-
<span class="ruby-
|
45
|
-
|
46
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">TypeError</span>, <span class="ruby-node">"type of x is not supported #{x.class} #{x.inpect}"</span>
|
64
|
+
<span class="ruby-identifier">xi</span> = <span class="ruby-identifier">r</span>
|
65
|
+
<span class="ruby-identifier">yi</span> = (<span class="ruby-identifier">yi</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">n</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">q</span>
|
47
66
|
<span class="ruby-keyword kw">end</span>
|
67
|
+
<span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">yi</span>, <span class="ruby-identifier">xi</span> ]
|
48
68
|
<span class="ruby-keyword kw">end</span></pre>
|
49
69
|
</body>
|
50
70
|
</html>
|