gnu_mpc 0.8.0

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.
@@ -0,0 +1,72 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ # All tests adapted from MPC 1.0.1's tests/sqrt.dat
4
+ describe MPC, '#sqrt' do
5
+ it 'should calculate the square root of a pure real number' do
6
+ data = [
7
+ [[ "0x16a09e667f3bcdp-52", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 53), GMP::F(0, 17)]), MPC::MPC_RNDNN],
8
+ [[ 0, 53], [ "0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(-2, 54), GMP::F(0, 16)]), MPC::MPC_RNDZN],
9
+ [[ "0x16a09e667f3bcdp-52", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 55), -GMP::F(0, 15)]), MPC::MPC_RNDUN],
10
+ [[ 0, 53], ["-0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(-2, 56), -GMP::F(0, 14)]), MPC::MPC_RNDDN],
11
+ [[ "0x5a827999fcef30p-54", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 57), GMP::F(0, 13)]), MPC::MPC_RNDZZ],
12
+ [[ 0, 53], [ "0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(-2, 58), GMP::F(0, 12)]), MPC::MPC_RNDUZ],
13
+ [[ "0x5a827999fcef30p-54", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 59), -GMP::F(0, 11)]), MPC::MPC_RNDDZ],
14
+ [[ 0, 53], ["-0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(-2, 60), -GMP::F(0, 10)]), MPC::MPC_RNDNZ],
15
+ [[ "0x16a09e667f3bcdp-52", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 61), GMP::F(0, 9)]), MPC::MPC_RNDUU],
16
+ [[ 0, 53], [ "0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(-2, 62), GMP::F(0, 8)]), MPC::MPC_RNDDU],
17
+ [[ "0x16a09e667f3bcdp-52", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 63), -GMP::F(0, 7)]), MPC::MPC_RNDNU],
18
+ [[ 0, 53], ["-0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(-2, 64), -GMP::F(0, 6)]), MPC::MPC_RNDZU],
19
+ [[ "0x5a827999fcef30p-54", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 65), GMP::F(0, 5)]), MPC::MPC_RNDDD],
20
+ [[ 0, 53], [ "0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(-2, 66), GMP::F(0, 4)]), MPC::MPC_RNDND],
21
+ [[ "0x5a827999fcef30p-54", 53, 16], [ 0, 53], MPC.new([GMP::F( 2, 67), -GMP::F(0, 3)]), MPC::MPC_RNDZD],
22
+ [[ 0, 53], ["-0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(-2, 68), -GMP::F(0, 2)]), MPC::MPC_RNDUD]
23
+ ]
24
+ data.each do |expected_real, expected_imag, input, rounding_mode|
25
+ actual = input.sqrt(rounding_mode)
26
+ actual.real.should eq GMP::F.new(*expected_real)
27
+ actual.imag.should eq GMP::F.new(*expected_imag)
28
+ end
29
+ end
30
+
31
+ it 'should calculate the square root of a pure imaginary number' do
32
+ data = [
33
+ [["0x16a09e667f3bcdp-52", 53, 16], [ "0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 53), GMP::F( 4, 53, 16)]), MPC::MPC_RNDNN],
34
+ [["0x5a827999fcef30p-54", 53, 16], [ "0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 51), GMP::F( 4, 54, 16)]), MPC::MPC_RNDZN],
35
+ [["0x16a09e667f3bcdp-52", 53, 16], ["-0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 49), GMP::F(-4, 55, 16)]), MPC::MPC_RNDUN],
36
+ [["0x5a827999fcef30p-54", 53, 16], ["-0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 47), GMP::F(-4, 56, 16)]), MPC::MPC_RNDDN],
37
+ [["0x5a827999fcef30p-54", 53, 16], [ "0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 45), GMP::F( 4, 57, 16)]), MPC::MPC_RNDZZ],
38
+ [["0x16a09e667f3bcdp-52", 53, 16], [ "0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 43), GMP::F( 4, 58, 16)]), MPC::MPC_RNDUZ],
39
+ [["0x5a827999fcef30p-54", 53, 16], ["-0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 41), GMP::F(-4, 59, 16)]), MPC::MPC_RNDDZ],
40
+ [["0x16a09e667f3bcdp-52", 53, 16], ["-0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 39), GMP::F(-4, 60, 16)]), MPC::MPC_RNDNZ],
41
+ [["0x16a09e667f3bcdp-52", 53, 16], [ "0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 37), GMP::F( 4, 61, 16)]), MPC::MPC_RNDUU],
42
+ [["0x5a827999fcef30p-54", 53, 16], [ "0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 35), GMP::F( 4, 62, 16)]), MPC::MPC_RNDDU],
43
+ [["0x16a09e667f3bcdp-52", 53, 16], ["-0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 33), GMP::F(-4, 63, 16)]), MPC::MPC_RNDNU],
44
+ [["0x5a827999fcef30p-54", 53, 16], ["-0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 31), GMP::F(-4, 64, 16)]), MPC::MPC_RNDZU],
45
+ [["0x5a827999fcef30p-54", 53, 16], [ "0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 29), GMP::F( 4, 65, 16)]), MPC::MPC_RNDDD],
46
+ [["0x16a09e667f3bcdp-52", 53, 16], [ "0x5a827999fcef30p-54", 53, 16], MPC.new([GMP::F(0, 27), GMP::F( 4, 66, 16)]), MPC::MPC_RNDND],
47
+ [["0x5a827999fcef30p-54", 53, 16], ["-0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 25), GMP::F(-4, 67, 16)]), MPC::MPC_RNDZD],
48
+ [["0x16a09e667f3bcdp-52", 53, 16], ["-0x16a09e667f3bcdp-52", 53, 16], MPC.new([GMP::F(0, 23), GMP::F(-4, 68, 16)]), MPC::MPC_RNDUD],
49
+ ]
50
+ data.each do |expected_real, expected_imag, input, rounding_mode|
51
+ actual = input.sqrt(rounding_mode)
52
+ actual.real.should eq GMP::F.new(*expected_real)
53
+ actual.imag.should eq GMP::F.new(*expected_imag)
54
+ end
55
+ end
56
+
57
+ it 'should calculate the square root of examples of bugs fixed in r160 2008-07-15' do
58
+ actual = MPC.new([GMP::F("0b1.101010001010100000p+117", 19, 2), GMP::F("-0b1.001110111101100001p-158", 19, 2)]).sqrt(MPC::MPC_RNDNZ, 19)
59
+ actual.real.should eq GMP::F( "0b11101001001001001100p+39", 19, 2)
60
+ actual.imag.should eq GMP::F("-0b1010110101100111011p-236", 19, 2)
61
+
62
+ actual = MPC.new([GMP::F(0, 2), GMP::F("-0b11p+203", 2, 2)]).sqrt(MPC::MPC_RNDNZ, 2)
63
+ actual.real.should eq GMP::F( "0b11p+100", 2, 2)
64
+ actual.imag.should eq GMP::F("-0b11p+100", 2, 2)
65
+
66
+ actual = MPC.new([GMP::F("-0b11p+235", 2, 2), -GMP::F(0, 2)]).sqrt(MPC::MPC_RNDNZ, 2)
67
+ actual.real.should eq GMP::F(0, 2)
68
+ actual.imag.should eq GMP::F("-0b10p+117", 2, 2)
69
+ end
70
+
71
+ ### There are still more tests in sqrt.data, each a result of some bug or other thing
72
+ end
@@ -0,0 +1,50 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ # All tests adapted from MPC 1.0.1's tests/sub.dat
4
+ describe MPC, '#sub' do
5
+ it 'should calculate the difference between two real MPCs' do
6
+ op1 = MPC.new([GMP::F(1), GMP::F(0)])
7
+ op2 = MPC.new([GMP::F("0x1p-105", 53, 16), GMP::F(0)])
8
+
9
+ actual = op1.sub(op2, MPC::MPC_RNDNN)
10
+ actual.real.should eq GMP::F("0x10000000000000p-52", 53, 16)
11
+ actual.imag.should eq GMP::F(0)
12
+
13
+ actual = op1.sub(op2, MPC::MPC_RNDZZ)
14
+ actual.real.should eq GMP::F("0x1fffffffffffffp-53", 53, 16)
15
+ actual.imag.should eq GMP::F(0)
16
+
17
+ actual = op1.sub(op2, MPC::MPC_RNDUU)
18
+ actual.real.should eq GMP::F("0x10000000000000p-52", 53, 16)
19
+ actual.imag.should eq GMP::F(0)
20
+
21
+ actual = op1.sub(op2, MPC::MPC_RNDDD)
22
+ actual.real.should eq GMP::F("0x1fffffffffffffp-53", 53, 16)
23
+ actual.imag.should eq GMP::F(0)
24
+ end
25
+
26
+ it 'should calculate the difference between two a real and two imaginary MPCs' do
27
+ op1 = MPC.new([GMP::F(0), GMP::F("0x10000000000000p-106", 53, 16)])
28
+ op2 = MPC.new([0, 1])
29
+ actual = op1.sub(op2, MPC::MPC_RNDNN)
30
+ actual.real.should eq GMP::F(0)
31
+ actual.imag.should eq GMP::F("-0x10000000000000p-52", 53, 16)
32
+
33
+ op1 = MPC.new([GMP::F(0), GMP::F("0x10000000000001p-106", 53, 16)])
34
+ actual = op1.sub(op2, MPC::MPC_RNDNN)
35
+ actual.real.should eq GMP::F(0)
36
+ actual.imag.should eq GMP::F("-0x1fffffffffffffp-53", 53, 16)
37
+
38
+ actual = op1.sub(op2, MPC::MPC_RNDZZ)
39
+ actual.real.should eq GMP::F(0)
40
+ actual.imag.should eq GMP::F("-0x1fffffffffffffp-53", 53, 16)
41
+
42
+ actual = op1.sub(op2, MPC::MPC_RNDUU)
43
+ actual.real.should eq GMP::F(0)
44
+ actual.imag.should eq GMP::F("-0x1fffffffffffffp-53", 53, 16)
45
+
46
+ actual = op1.sub(op2, MPC::MPC_RNDDD)
47
+ actual.real.should eq GMP::F(0)
48
+ actual.imag.should eq GMP::F("-0x10000000000000p-52", 53, 16)
49
+ end
50
+ end
@@ -0,0 +1,55 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ # All tests adapted from MPC 1.0.1's tests/tan.dat
4
+ describe MPC, '#tan' do
5
+ it 'should calculate the tangent of huge values' do
6
+ data = [
7
+ [0, -1, MPC.new([GMP::F( "0x4580CBF242683p-3", 53, 16), GMP::F("-0x1B3E8A3660D279p-3", 53, 16)])],
8
+ [0, -1, MPC.new([GMP::F( "-0x4580CBF242683p-3", 53, 16), GMP::F("-0x1B3E8A3660D279p-3", 53, 16)])],
9
+ [0, 1, MPC.new([GMP::F("-0x1B3E8A3660D279p-3", 53, 16), GMP::F( "0x4580CBF242683p-3", 53, 16)])]
10
+ ]
11
+ data.each do |expected_real, expected_imag, input|
12
+ actual = input.tan
13
+ actual.real.should eq GMP::F.new(expected_real)
14
+ actual.imag.should eq GMP::F.new(expected_imag)
15
+ end
16
+ end
17
+
18
+ it 'should calculate the tangent of some values taken from ttan.c' do
19
+ data = [
20
+ [["0x1D02967C31CDB5", 53, 16], ["0x1D02967C31CDB5", 53, 16], ["0x3243F6A8885A30p-53", 53, 16], ["0x11A62633145C07p-106", 53, 16], MPC::MPC_RNDNN],
21
+ [["0x1D02967C31CDB4", 53, 16], ["0x1D02967C31CDB5", 53, 16], ["0x3243F6A8885A30p-53", 53, 16], ["0x11A62633145C07p-106", 53, 16], MPC::MPC_RNDDU],
22
+ [["0x1D02967C31CDB4", 53, 16], ["0x1D02967C31CDB4", 53, 16], ["0x3243F6A8885A30p-53", 53, 16], ["0x11A62633145C07p-106", 53, 16], MPC::MPC_RNDZD],
23
+ [["-0xB0BD0AA4A3B3D", 53, 16], ["-0xB0BD0AA4A3B3D", 53, 16], ["0x1921FB54442D19p-52", 53, 16], ["-0x172CECE675D1FDp-105", 53, 16], MPC::MPC_RNDNN],
24
+ ]
25
+ data.each do |expected_real, expected_imag, input_real, input_imag, rounding_mode|
26
+ actual = MPC.new([GMP::F.new(*input_real), GMP::F.new(*input_imag)]).tan(rounding_mode)
27
+ actual.real.should eq GMP::F.new(*expected_real)
28
+ actual.imag.should eq GMP::F.new(*expected_imag)
29
+ end
30
+ end
31
+
32
+ it 'should calculate the tangent of a corner case: op = atan (2^(-k) + i*2^k) for k=200 and k=1000' do
33
+ input_real = GMP::F.new("0x1.921fb54442d18469898cc51701b839a252049c1114cf98e804177d4c76273644a29410f31c6809bbdf2a33679a748636605614dbe4be286e9fc26adadaa3848bc90b6aecc4bcfd8de89884d34c6fdad617feb96de80d6fdbdc70d7f6b5133f4b5d3e4822f8963fcc9250cca3d9c8b67b8400f97142c77e0b31b4906c38", 1000, 16)
34
+ input_imag = GMP::F.new("0x1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555548888888888888888888888888888888888888888888888888a@-50", 1000, 16)
35
+ actual = MPC.new([input_real, input_imag], 1000).tan(MPC::MPC_RNDNN, 100, 100)
36
+ actual.real.should eq GMP::F.new("0x1@-50", 100, 16)
37
+ actual.imag.should eq GMP::F.new("0x1@50", 100, 16)
38
+ end
39
+
40
+ it 'should calculate the tangent of a corner case: op = atan (2^(-k) + i*2^k) for k=200 and k=1000' do
41
+ input_real = GMP::F.new("0x1.921fb54442d18469898cc51701b839a252049c1114cf98e804177d4c76273644a29410f31c6809bbdf2a33679a748636605614dbe4be286e9fc26adadaa3848bc90b6aecc4bcfd8de89885d34c6fdad617feb96de80d6fdbdc70d7f6b5133f4b5d3e4822f8963fcc9250cca3d9c8b67b8400f97142c77e0b31b4906c38aba734d22c7f51fa499ebf06caba47b9475b2c38c5e6ac410aa5773daa520ee12d2cdace186a9c95793009e2e8d811943042f86520bc8c5c6d9c77c73cee58301d0c07364f0745d80f451f6b8abbe0de98a593bc5797ed2ab02e30732a92f9d52ad5ca2ba44c3131f40a202ae51cb51555885b5a662e1a08a0f46750aa4357be3974c9d9f70a08b1b7de1515d4e2aeba0c18fb672e1f0b4dc3c98f57eb5d19b61267ae3d1929c0944ac33b9dc7a44c35a5dcd7e25ff40db31410c9b0ec04e67d90d4c8a43e56302ef6401977c22eaef4c2bad8ee13118175b28dc411c49f40e9cb566287b6b7f9c1fa211c9705a2415242100234e478254f0fccaf10e334217b74b64d33864e30d5e9c4783528d0696c2a17b44b07d39455a899d1b77785b609bd1df25d1df8283f7d954c50f8b28e9cd780bb33652c9f412187444677430ca2b7cfda3ec252e19dc5af5f7037baec42e09039a00d224fab60b5532769d5311b1fbb830dff6fb9214d811e9be86b92680509246d87f56a", 4000, 16)
42
+ input_imag = GMP::F.new("0x1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555556@-250", 4000, 16)
43
+ actual = MPC.new([input_real, input_imag], 4000).tan(MPC::MPC_RNDNN, 100, 100)
44
+ actual.real.should eq GMP::F.new("0x1@-250", 100, 16)
45
+ actual.imag.should eq GMP::F.new("0x1@250", 100, 16)
46
+ end
47
+
48
+ it 'should calculate the tangent of a corner case' do
49
+ input_real = GMP::F.new("-0x16dp-8", 9, 16)
50
+ input_imag = GMP::F.new("-0x77p-3", 9, 16)
51
+ actual = MPC.new([input_real, input_imag], 9).tan(MPC::MPC_RNDNN, 9, 9)
52
+ actual.real.should eq GMP::F.new("-0x9bp-51", 9, 16)
53
+ actual.imag.should eq GMP::F.new(-1, 9)
54
+ end
55
+ end
@@ -0,0 +1,53 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ # All tests adapted from MPC 1.0.1's tests/tanh.dat
4
+ describe MPC, '#tanh' do
5
+ it 'should calculate the hyperbolic tangent of a pure real argument' do
6
+ data = [
7
+ ["-0xc2f7d5a8a79ccp-52", MPC.new([GMP::F(-1, 7), GMP::F(0, 7)])],
8
+ [ "0xc2f7d5a8a79ccp-52", MPC.new([GMP::F( 1, 7), GMP::F(0, 7)])]
9
+ ]
10
+ data.each do |expected, input|
11
+ actual = input.tanh(MPC::MPC_RNDNN, 50, 50)
12
+ actual.real.should eq GMP::F.new(expected, 50, 16)
13
+ actual.imag.should eq GMP::F(0)
14
+ end
15
+ end
16
+
17
+ it 'should calculate the hyperbolic tangent of a pure imaginary argument' do
18
+ data = [
19
+ ["-0x18eb245cbee3a8p-52", MPC.new([GMP::F(0, 7), GMP::F(-1, 7)])],
20
+ [ "0x18eb245cbee3a8p-52", MPC.new([GMP::F(0, 7), GMP::F( 1, 7)])]
21
+ ]
22
+ data.each do |expected, input|
23
+ actual = input.tanh(MPC::MPC_RNDNN, 50, 50)
24
+ actual.real.should eq GMP::F(0)
25
+ actual.imag.should eq GMP::F.new(expected, 50, 16)
26
+ end
27
+ end
28
+
29
+ it 'should calculate the hyperbolic tangent of an argument with +1 and -1' do
30
+ data = [
31
+ ["-0x1157bffca4a8cp-48", "-0x459193d28cfe2p-52", MPC.new([GMP::F(-1, 7), GMP::F(-1, 7)])],
32
+ ["-0x1157bffca4a8cp-48", "0x459193d28cfe2p-52", MPC.new([GMP::F(-1, 7), GMP::F( 1, 7)])],
33
+ [ "0x1157bffca4a8cp-48", "-0x459193d28cfe2p-52", MPC.new([GMP::F( 1, 7), GMP::F(-1, 7)])],
34
+ [ "0x1157bffca4a8cp-48", "0x459193d28cfe2p-52", MPC.new([GMP::F( 1, 7), GMP::F( 1, 7)])]
35
+ ]
36
+ data.each do |expected_real, expected_imag, input|
37
+ actual = input.tanh(MPC::MPC_RNDNN, 50, 50)
38
+ actual.real.should eq GMP::F.new(expected_real, 50, 16)
39
+ actual.imag.should eq GMP::F.new(expected_imag, 50, 16)
40
+ end
41
+ end
42
+
43
+ it 'should calculate the hyperbolic sine of ieee-754 double precision numbers' do
44
+ data = [
45
+ [["0x10000000000001p-53", 53, 16], ["0x1FFFFFFFFFFFFFp-53", 53, 16], ["0x1E938CBCEB16DFp-55", 53, 16], ["0x1B1F56FDEEF00Fp-53", 53, 16], MPC::MPC_RNDNN]
46
+ ]
47
+ data.each do |expected_real, expected_imag, input_real, input_imag, rounding_mode|
48
+ actual = MPC.new([GMP::F.new(*input_real), GMP::F.new(*input_imag)]).tanh(rounding_mode)
49
+ actual.real.should eq GMP::F.new(*expected_real)
50
+ actual.imag.should eq GMP::F.new(*expected_imag)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,77 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe MPC, '#to_s with base argument only' do
4
+ before do
5
+ @a = MPC.new(13)
6
+ end
7
+
8
+ it 'should convert to_s correctly in default base' do
9
+ @a.to_s.should eq '(1.3000000000000000e+1 +0)'
10
+ end
11
+
12
+ it 'should convert to_s correctly in base 2' do
13
+ @a.to_s(2).should eq '(1.1010000000000000000000000000000000000000000000000000p+3 +0)'
14
+ end
15
+
16
+ it 'should convert to_s correctly in base 3' do
17
+ @a.to_s(3).should eq '(1.1100000000000000000000000000000000@+2 +0)'
18
+ end
19
+
20
+ it 'should convert to_s correctly in base 4' do
21
+ @a.to_s(4).should eq '(3.10000000000000000000000000@+1 +0)'
22
+ end
23
+
24
+ it 'should convert to_s correctly in base 8' do
25
+ @a.to_s(8).should eq '(1.500000000000000000@+1 +0)'
26
+ end
27
+
28
+ it 'should convert to_s correctly in base 8' do
29
+ @a.to_s(8).should eq '(1.500000000000000000@+1 +0)'
30
+ end
31
+
32
+ it 'should convert to_s correctly in base 10' do
33
+ @a.to_s(10).should eq '(1.3000000000000000e+1 +0)'
34
+ end
35
+
36
+ it 'should convert to_s correctly in base 16' do
37
+ @a.to_s(16).should eq '(d.0000000000000 +0)'
38
+ end
39
+
40
+ it 'should convert to_s correctly in base 32' do
41
+ @a.to_s(32).should eq '(d.00000000000 +0)'
42
+ end
43
+ end
44
+
45
+ describe MPC, '#to_s with base argument only' do
46
+ before do
47
+ @a = MPC.new(13)
48
+ end
49
+
50
+ it 'should convert to_s correctly with 0 sig figs' do
51
+ @a.to_s(10, 0).should eq '(1.3000000000000000e+1 +0)'
52
+ end
53
+
54
+ it 'should convert to_s correctly with 1 sig figs' do
55
+ @a.to_s(10, 1).should eq '(1.e+1 +0)'
56
+ end
57
+
58
+ it 'should convert to_s correctly with 2 sig figs' do
59
+ @a.to_s(10, 2).should eq '(1.3e+1 +0)'
60
+ end
61
+
62
+ it 'should convert to_s correctly with 4 sig figs' do
63
+ @a.to_s(10, 4).should eq '(1.300e+1 +0)'
64
+ end
65
+
66
+ it 'should convert to_s correctly with 8 sig figs' do
67
+ @a.to_s(10, 8).should eq '(1.3000000e+1 +0)'
68
+ end
69
+
70
+ it 'should convert to_s correctly with 16 sig figs' do
71
+ @a.to_s(10, 16).should eq '(1.300000000000000e+1 +0)'
72
+ end
73
+
74
+ it 'should convert to_s correctly with 32 sig figs' do
75
+ @a.to_s(10, 32).should eq '(1.3000000000000000000000000000000e+1 +0)'
76
+ end
77
+ end
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe MPC, "MPC_VERSION" do
4
+ it "should have the MPC_VERSION constant defined" do
5
+ MPC.const_defined?(:MPC_VERSION).should be true
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gnu_mpc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - srawlins
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-26 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: gnu_mpc - providing Ruby bindings to the MPC library.
15
+ email:
16
+ - sam.rawlins@gmail.com
17
+ executables: []
18
+ extensions:
19
+ - ext/extconf.rb
20
+ extra_rdoc_files: []
21
+ files:
22
+ - ext/mpc.c
23
+ - ext/mpcrnd.c
24
+ - ext/ruby_gmp.h
25
+ - ext/ruby_mpc.h
26
+ - ext/extconf.rb
27
+ - lib/mpc.rb
28
+ - spec/acos_spec.rb
29
+ - spec/add_args_spec.rb
30
+ - spec/add_fr_spec.rb
31
+ - spec/add_spec.rb
32
+ - spec/asin_spec.rb
33
+ - spec/atan_spec.rb
34
+ - spec/conj_spec.rb
35
+ - spec/cos_spec.rb
36
+ - spec/cosh_spec.rb
37
+ - spec/exp_spec.rb
38
+ - spec/hash_arguments_spec.rb
39
+ - spec/log_spec.rb
40
+ - spec/mpc_single_function_args_spec.rb
41
+ - spec/neg_spec.rb
42
+ - spec/new_spec.rb
43
+ - spec/proj_spec.rb
44
+ - spec/real_spec.rb
45
+ - spec/rounding_spec.rb
46
+ - spec/sin_spec.rb
47
+ - spec/sinh_spec.rb
48
+ - spec/spec_helper.rb
49
+ - spec/sqr_spec.rb
50
+ - spec/sqrt_spec.rb
51
+ - spec/sub_spec.rb
52
+ - spec/tan_spec.rb
53
+ - spec/tanh_spec.rb
54
+ - spec/to_s_spec.rb
55
+ - spec/version_spec.rb
56
+ - README.md
57
+ - manual.md
58
+ - manual.pdf
59
+ - COPYING.md
60
+ - Makefile
61
+ - Rakefile
62
+ - Gemfile
63
+ - Guardfile
64
+ - manual_template.latex
65
+ homepage: http://github.com/srawlins/gnu_mpc
66
+ licenses: []
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 1.8.7
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements:
84
+ - MPC compiled and working properly.
85
+ rubyforge_project:
86
+ rubygems_version: 1.8.24
87
+ signing_key:
88
+ specification_version: 3
89
+ summary: Provides Ruby bindings to the MPC library.
90
+ test_files: []
91
+ has_rdoc: yard