gmp 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +47 -0
- data/INSTALL +4 -0
- data/README.rdoc +257 -0
- data/ext/extconf.rb +30 -0
- data/ext/gmp.c +195 -0
- data/ext/gmpf.c +584 -0
- data/ext/gmpf.h +144 -0
- data/ext/gmpq.c +774 -0
- data/ext/gmpq.h +12 -0
- data/ext/gmpz.c +1774 -0
- data/ext/gmpz.h +20 -0
- data/ext/ruby_gmp.h +199 -0
- data/ext/takeover.h +36 -0
- data/manual.tex +183 -0
- data/test/README +41 -0
- data/test/tc_cmp.rb +74 -0
- data/test/tc_fib_fac_nextprime.rb +51 -0
- data/test/tc_floor_ceil_truncate.rb +21 -0
- data/test/tc_logical_roots.rb +48 -0
- data/test/tc_q.rb +27 -0
- data/test/tc_q_basic.rb +41 -0
- data/test/tc_sgn_neg_abs.rb +47 -0
- data/test/tc_swap.rb +19 -0
- data/test/tc_z.rb +71 -0
- data/test/tc_z_basic.rb +35 -0
- data/test/tc_z_exponentiation.rb +22 -0
- data/test/tc_z_logic.rb +54 -0
- data/test/tc_z_shifts_last_bits.rb +22 -0
- data/test/tc_z_to_d_to_i.rb +24 -0
- data/test/tc_zerodivisionexceptions.rb +17 -0
- data/test/test_helper.rb +2 -0
- data/test/unit_tests.rb +135 -0
- metadata +89 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TC_Z_Exponentiation < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a = GMP::Z.new(100)
|
6
|
+
@b = GMP::Z.new(16)
|
7
|
+
@c = @a**5
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_exponentiation
|
11
|
+
assert_equal(GMP::Z(10000000000), @a**5, "GMP::Z should **(Fixnum) correctly")
|
12
|
+
assert_equal(GMP::Z("100000000000000000000000000000000"), @a**@b, "GMP::Z should **(GMP::Z) correctly")
|
13
|
+
assert_equal(GMP::Z(65536), 2**@b, "Fixnum should **(GMP::Z) correctly")
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_powmod
|
17
|
+
assert_equal(GMP::Z(16), @a.powmod(2,256), "(a : GMP::Z).powmod((b : Fixnum), (c : Fixnum)) should work correctly")
|
18
|
+
assert_equal(GMP::Z(76), @b.powmod(10,@a), "(a : GMP::Z).powmod((b : Fixnum), (c : GMP::Z)) should work correctly")
|
19
|
+
assert_equal(GMP::Z(0), @a.powmod(@b,256), "(a : GMP::Z).powmod((b : GMP::Z), (c : Fixnum)) should work correctly")
|
20
|
+
assert_equal(GMP::Z(0), @a.powmod(@b,@c), "(a : GMP::Z).powmod((b : GMP::Z), (c : GMP::Z)) should work correctly")
|
21
|
+
end
|
22
|
+
end
|
data/test/tc_z_logic.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TC_Z_Logic < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a=GMP::Z.new(0xffff00000000ffff)
|
6
|
+
@b=GMP::Z.new(0xffff0000ffff0000)
|
7
|
+
@c=0xff00ff00ff00ff00
|
8
|
+
@d=0x1248
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_and
|
12
|
+
assert_equal(@a & @b, 0xffff00000000ffff & 0xffff0000ffff0000, "GMP::Z should AND correctly")
|
13
|
+
assert_equal(@a & @d, 0xffff00000000ffff & 0x1248, "GMP::Z should AND correctly")
|
14
|
+
assert_equal(@a & @c, 0xffff00000000ffff & 0xff00ff00ff00ff00, "GMP::Z should AND correctly")
|
15
|
+
assert_equal(@d & @a, 0x1248 & 0xffff00000000ffff, "GMP::Z should AND correctly")
|
16
|
+
assert_equal(@c & @a, 0xff00ff00ff00ff00 & 0xffff00000000ffff, "GMP::Z should AND correctly")
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_or
|
20
|
+
assert_equal(@a | @b, 0xffff00000000ffff | 0xffff0000ffff0000, "GMP::Z should OR correctly")
|
21
|
+
assert_equal(@a | @d, 0xffff00000000ffff | 0x1248, "GMP::Z should OR correctly")
|
22
|
+
assert_equal(@a | @c, 0xffff00000000ffff | 0xff00ff00ff00ff00, "GMP::Z should OR correctly")
|
23
|
+
assert_equal(@d | @a, 0x1248 | 0xffff00000000ffff, "GMP::Z should OR correctly")
|
24
|
+
assert_equal(@c | @a, 0xff00ff00ff00ff00 | 0xffff00000000ffff, "GMP::Z should OR correctly")
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_xor
|
28
|
+
assert_equal(@a ^ @b, 0xffff00000000ffff ^ 0xffff0000ffff0000, "GMP::Z should XOR correctly")
|
29
|
+
assert_equal(@a ^ @d, 0xffff00000000ffff ^ 0x1248, "GMP::Z should XOR correctly")
|
30
|
+
assert_equal(@a ^ @c, 0xffff00000000ffff ^ 0xff00ff00ff00ff00, "GMP::Z should XOR correctly")
|
31
|
+
assert_equal(@d ^ @a, 0x1248 ^ 0xffff00000000ffff, "GMP::Z should XOR correctly")
|
32
|
+
assert_equal(@c ^ @a, 0xff00ff00ff00ff00 ^ 0xffff00000000ffff, "GMP::Z should XOR correctly")
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_com
|
36
|
+
assert_equal(GMP::Z().com, -1, "GMP::Z.com should complement")
|
37
|
+
assert_equal(GMP::Z(1).com, -2, "GMP::Z.com should complement")
|
38
|
+
assert_equal(GMP::Z(-1).com, 0, "GMP::Z.com should complement")
|
39
|
+
assert_equal(@a.com, -0xffff00000000ffff-1, "GMP::Z.com should complement")
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_logic
|
43
|
+
a=GMP::Z.new(0x1234)
|
44
|
+
b=GMP::Z.new(a)
|
45
|
+
b[0]=true
|
46
|
+
|
47
|
+
assert_equal(a, 0x1234, "GMP::Z.new() should create a new copy, not alias")
|
48
|
+
assert_equal(b, 0x1235, "GMP::Z#[]= should modify bits")
|
49
|
+
assert_equal(a[2], true, "GMP::Z#[] should access bits")
|
50
|
+
assert_equal(a.scan0(0), 0, "GMP::Z#scan0 should scan for 0s")
|
51
|
+
assert_equal(a.scan1(0), 2, "GMP::Z#scan1 should scan for 1s")
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TC_shifts_last_bits < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a = GMP::Z.new(100) # 01100100
|
6
|
+
@b =- @a # 10011100
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_shifts
|
10
|
+
assert_equal( 3, @a >> 5, "GMP::Z should >> correctly.") # 00000011
|
11
|
+
assert_equal(- 4, @b >> 5, "GMP::Z should >> correctly.") # 11111100
|
12
|
+
assert_equal( 400, @a << 2, "GMP::Z should << correctly.") # 0110010000
|
13
|
+
assert_equal(-400, @b << 2, "GMP::Z should << correctly.") # 1110010000
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_last_bits
|
17
|
+
#assert_equal( 5, @a.lastbits_pos(5), "GMP::Z should lastbits_pos correctly.") # 100
|
18
|
+
#assert_equal(28, @b.lastbits_pos(5), "GMP::Z should lastbits_pos correctly.") # 11100
|
19
|
+
#assert_equal(-4, @b.lastbits_sgn(5), "GMP::Z should lastbits_sgn correctly.")
|
20
|
+
# a.tshr 5 ???
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TC_to_i_to_d < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a = GMP::Z.new(100)
|
6
|
+
#@b = GMP::Z.pow(2,32)
|
7
|
+
@c = GMP::Q.new(200,11)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_to_i
|
11
|
+
assert_equal(@a.to_i, 100, "GMP::Z should to_i correctly.")
|
12
|
+
assert_equal(@a.to_i.class, Fixnum, "GMP::Z.to_i should be a Fixnum.")
|
13
|
+
#assert_equal(@b.to_i, 2**32, "GMP::Z (Bignum) should to_i correctly.")
|
14
|
+
#assert_equal(@b.to_i.class, Bignum, "GMP::Z.to_i should be a Bignum.")
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_to_d
|
18
|
+
assert_equal(@a.to_d, 100.0, "GMP::Z should to_d correctly.")
|
19
|
+
assert_equal(@a.to_d.class, Float, "GMP::Z.to_d should be a Float.")
|
20
|
+
#assert_equal(@b.to_d, 2**32*1.0, "GMP::Z should to_d correctly.")
|
21
|
+
#assert_equal(@b.to_d.class, Float, "GMP::Z.to_d should be a Float.")
|
22
|
+
assert_equal(@c.to_d.class, Float, "GMP::Q.to_d should be a Float.")
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class TC_ZeroDivisionExceptions < Test::Unit::TestCase
|
2
|
+
def setup
|
3
|
+
@a = GMP::Z.new(10)
|
4
|
+
@b = GMP::Z.new()
|
5
|
+
@c = GMP::Q.new(1)
|
6
|
+
@d = GMP::Q.new()
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_division_by_zero
|
10
|
+
assert_raise(ZeroDivisionError) { @a.tdiv(0) }
|
11
|
+
assert_raise(ZeroDivisionError) { @a.tdiv(@b) }
|
12
|
+
assert_raise(ZeroDivisionError) { @d.inv }
|
13
|
+
assert_raise(ZeroDivisionError) { @d.inv! }
|
14
|
+
assert_raise(ZeroDivisionError) { @c/0 }
|
15
|
+
assert_raise(ZeroDivisionError) { @c/@d }
|
16
|
+
end
|
17
|
+
end
|
data/test/test_helper.rb
ADDED
data/test/unit_tests.rb
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
require 'tc_z'
|
5
|
+
require 'tc_z_basic'
|
6
|
+
require 'tc_z_logic'
|
7
|
+
require 'tc_q'
|
8
|
+
require 'tc_cmp'
|
9
|
+
require 'tc_q_basic'
|
10
|
+
require 'tc_z_exponentiation'
|
11
|
+
require 'tc_zerodivisionexceptions'
|
12
|
+
require 'tc_sgn_neg_abs'
|
13
|
+
require 'tc_fib_fac_nextprime'
|
14
|
+
require 'tc_swap'
|
15
|
+
require 'tc_floor_ceil_truncate'
|
16
|
+
require 'tc_z_to_d_to_i'
|
17
|
+
require 'tc_z_shifts_last_bits'
|
18
|
+
require 'tc_logical_roots'
|
19
|
+
|
20
|
+
class TC_precision < Test::Unit::TestCase
|
21
|
+
def setup
|
22
|
+
@pi = GMP::F.new(3.14)
|
23
|
+
@seven_halves = GMP::F.new(GMP::Q.new(7,2), 1000)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_default_precision
|
27
|
+
assert_equal("0.e+0", GMP::F.new().to_s)
|
28
|
+
assert_equal(64, GMP::F.new().prec)
|
29
|
+
assert_equal("0.314000000000000012434e+1", @pi.to_s)
|
30
|
+
assert_equal(64, @pi.prec)
|
31
|
+
assert_equal("0.1e+1", GMP::F.new(1).to_s)
|
32
|
+
assert_equal(64, GMP::F.new(1).prec)
|
33
|
+
assert_equal("0.314e+1", GMP::F.new("3.14").to_s)
|
34
|
+
assert_equal(64, GMP::F.new("3.14").prec)
|
35
|
+
assert_equal("0.4294967296e+10", GMP::F.new(2**32).to_s)
|
36
|
+
assert_equal(64, GMP::F.new(2**32).prec)
|
37
|
+
assert_equal("0.3e+1", GMP::F.new(GMP::Z.new(3)).to_s)
|
38
|
+
assert_equal(64, GMP::F.new(GMP::Z.new(3)).prec)
|
39
|
+
assert_equal("0.35e+1", GMP::F.new(GMP::Q.new(7,2)).to_s)
|
40
|
+
assert_equal(64, GMP::F.new(GMP::Q.new(7,2)).prec)
|
41
|
+
assert_equal("0.314000000000000012434e+1", GMP::F.new(@pi).to_s)
|
42
|
+
assert_equal(64, GMP::F.new(@pi).prec)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_specific_precision
|
46
|
+
assert_equal("0.3140000000000000124344978758017532527446746826171875e+1", GMP::F.new(3.14, 1000).to_s)
|
47
|
+
assert_equal(1024, GMP::F.new(3.14, 1000).prec)
|
48
|
+
assert_equal("0.1e+1", GMP::F.new(1, 1000).to_s)
|
49
|
+
assert_equal(1024, GMP::F.new(1, 1000).prec)
|
50
|
+
assert_equal("0.314e+1", GMP::F.new("3.14", 1000).to_s)
|
51
|
+
assert_equal(1024, GMP::F.new("3.14", 1000).prec)
|
52
|
+
assert_equal("0.4294967296e+10", GMP::F.new(2**32, 1000).to_s)
|
53
|
+
assert_equal(1024, GMP::F.new(2**32, 1000).prec)
|
54
|
+
assert_equal("0.3e+1", GMP::F.new(GMP::Z.new(3), 1000).to_s)
|
55
|
+
assert_equal(1024, GMP::F.new(GMP::Z.new(3), 1000).prec)
|
56
|
+
assert_equal("0.35e+1", @seven_halves.to_s)
|
57
|
+
assert_equal(1024, @seven_halves.prec)
|
58
|
+
assert_equal("0.35e+1", GMP::F.new(@seven_halves).to_s)
|
59
|
+
assert_equal(1024, GMP::F.new(@seven_halves).prec)
|
60
|
+
assert_equal("0.3140000000000000124344978758017532527446746826171875e+1", GMP::F.new(@pi, 1000).to_s)
|
61
|
+
assert_equal(1024, GMP::F.new(@pi, 1000).prec)
|
62
|
+
assert_equal("0.35e+1", GMP::F.new(@seven_halves, 0).to_s)
|
63
|
+
assert_equal(64, GMP::F.new(@seven_halves, 0).prec)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
class TC_F_arithmetics_coersion < Test::Unit::TestCase
|
68
|
+
def setup
|
69
|
+
@a = GMP::F.new(3.14, 100)
|
70
|
+
@b = GMP::F.new(2.71, 200)
|
71
|
+
@c = GMP::Z(3)
|
72
|
+
@d = GMP::Q(7,2)
|
73
|
+
@e = 2**32
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_add
|
77
|
+
assert_in_delta( 5.85, @a + @b, 1e-6)
|
78
|
+
assert_in_delta( 5.85, @b + @a, 1e-6)
|
79
|
+
assert_in_delta( 6.14, @a + @c, 1e-6)
|
80
|
+
assert_in_delta( 6.14, @c + @a, 1e-6)
|
81
|
+
assert_in_delta( 6.64, @a + @d, 1e-6)
|
82
|
+
assert_in_delta( 6.64, @d + @a, 1e-6)
|
83
|
+
assert_in_delta( 5.14, @a + 2, 1e-6)
|
84
|
+
assert_in_delta( 5.14, 2 + @a, 1e-6)
|
85
|
+
assert_in_delta(4294967299.14, @a + @e, 1e-6)
|
86
|
+
assert_in_delta(4294967299.14, @e + @a, 1e-6)
|
87
|
+
assert_in_delta( 7.65, @a + 4.51, 1e-6)
|
88
|
+
assert_in_delta( 7.65, 4.51 + @a, 1e-6)
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_sub
|
92
|
+
assert_in_delta( 0.43, @a - @b, 1e-6)
|
93
|
+
assert_in_delta( -0.43, @b - @a, 1e-6)
|
94
|
+
assert_in_delta( 0.14, @a - @c, 1e-6)
|
95
|
+
assert_in_delta( -0.14, @c - @a, 1e-6)
|
96
|
+
assert_in_delta( -0.36, @a - @d, 1e-6)
|
97
|
+
assert_in_delta( 0.36, @d - @a, 1e-6)
|
98
|
+
assert_in_delta( 1.14, @a - 2, 1e-6)
|
99
|
+
assert_in_delta( -1.14, 2 - @a, 1e-6)
|
100
|
+
assert_in_delta(-4294967292.86, @a - @e, 1e-6)
|
101
|
+
assert_in_delta( 4294967292.86, @e - @a, 1e-6)
|
102
|
+
assert_in_delta( -1.37, @a - 4.51, 1e-6)
|
103
|
+
assert_in_delta( 1.37, 4.51 - @a, 1e-6)
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_mul
|
107
|
+
assert_in_delta( 8.5094, @a * @b, 1e-6)
|
108
|
+
assert_in_delta( 8.5094, @b * @a, 1e-6)
|
109
|
+
assert_in_delta( 9.42 , @a * @c, 1e-6)
|
110
|
+
assert_in_delta( 9.42 , @c * @a, 1e-6)
|
111
|
+
assert_in_delta( 10.99 , @a * @d, 1e-6)
|
112
|
+
assert_in_delta( 10.99 , @d * @a, 1e-6)
|
113
|
+
assert_in_delta( 6.28 , @a * 2, 1e-6)
|
114
|
+
assert_in_delta( 6.28 , 2 * @a, 1e-6)
|
115
|
+
assert_in_delta(13486197309.44 , @a * @e, 1e-6)
|
116
|
+
assert_in_delta(13486197309.44 , @e * @a, 1e-6)
|
117
|
+
assert_in_delta( 14.1614, @a * 4.51, 1e-6)
|
118
|
+
assert_in_delta( 14.1614, 4.51 * @a, 1e-6)
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_div
|
122
|
+
assert_in_delta( 1.1586715867, @a / @b, 1e-6)
|
123
|
+
assert_in_delta( 0.8630573248, @b / @a, 1e-6)
|
124
|
+
assert_in_delta( 1.0466666667, @a / @c, 1e-6)
|
125
|
+
assert_in_delta( 0.9554140127, @c / @a, 1e-6)
|
126
|
+
assert_in_delta( 0.8971428571, @a / @d, 1e-6)
|
127
|
+
assert_in_delta( 1.1146496815, @d / @a, 1e-6)
|
128
|
+
assert_in_delta( 1.57 , @a / 2, 1e-6)
|
129
|
+
assert_in_delta( 0.6369426752, 2 / @a, 1e-6)
|
130
|
+
assert_in_delta( 0.0000000007, @a / @e, 1e-6)
|
131
|
+
assert_in_delta( 1367823979.6178343949, @e / @a, 1e-6)
|
132
|
+
assert_in_delta( 0.6962305987, @a / 4.51, 1e-6)
|
133
|
+
assert_in_delta( 1.4363057325, 4.51 / @a, 1e-6)
|
134
|
+
end
|
135
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gmp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.7
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tomasz Wegrzanowski
|
8
|
+
- srawlins
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-10-01 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies: []
|
16
|
+
|
17
|
+
description: gmp - providing Ruby bindings to the GMP library.
|
18
|
+
email:
|
19
|
+
- Tomasz.Wegrzanowski@gmail.com
|
20
|
+
- sam.rawlins@gmail.com
|
21
|
+
executables: []
|
22
|
+
|
23
|
+
extensions:
|
24
|
+
- ext/extconf.rb
|
25
|
+
extra_rdoc_files: []
|
26
|
+
|
27
|
+
files:
|
28
|
+
- ext/extconf.rb
|
29
|
+
- ext/gmp.c
|
30
|
+
- ext/gmpf.c
|
31
|
+
- ext/gmpf.h
|
32
|
+
- ext/gmpq.c
|
33
|
+
- ext/gmpq.h
|
34
|
+
- ext/gmpz.c
|
35
|
+
- ext/gmpz.h
|
36
|
+
- ext/ruby_gmp.h
|
37
|
+
- ext/takeover.h
|
38
|
+
- test/README
|
39
|
+
- test/tc_cmp.rb
|
40
|
+
- test/tc_fib_fac_nextprime.rb
|
41
|
+
- test/tc_floor_ceil_truncate.rb
|
42
|
+
- test/tc_logical_roots.rb
|
43
|
+
- test/tc_q.rb
|
44
|
+
- test/tc_q_basic.rb
|
45
|
+
- test/tc_sgn_neg_abs.rb
|
46
|
+
- test/tc_swap.rb
|
47
|
+
- test/tc_z.rb
|
48
|
+
- test/tc_z_basic.rb
|
49
|
+
- test/tc_z_exponentiation.rb
|
50
|
+
- test/tc_z_logic.rb
|
51
|
+
- test/tc_z_shifts_last_bits.rb
|
52
|
+
- test/tc_z_to_d_to_i.rb
|
53
|
+
- test/tc_zerodivisionexceptions.rb
|
54
|
+
- test/test_helper.rb
|
55
|
+
- test/unit_tests.rb
|
56
|
+
- CHANGELOG
|
57
|
+
- INSTALL
|
58
|
+
- README.rdoc
|
59
|
+
- manual.tex
|
60
|
+
has_rdoc: false
|
61
|
+
homepage: http://github.com/srawlins/gmp/tree/master
|
62
|
+
licenses: []
|
63
|
+
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
|
67
|
+
require_paths:
|
68
|
+
- ext
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.8.1
|
74
|
+
version:
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: "0"
|
80
|
+
version:
|
81
|
+
requirements:
|
82
|
+
- GMP compiled and working properly.
|
83
|
+
rubyforge_project:
|
84
|
+
rubygems_version: 1.3.5
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: Provides Ruby bindings to the GMP library.
|
88
|
+
test_files: []
|
89
|
+
|