gmp 0.2.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +33 -0
- data/README.rdoc +117 -17
- data/benchmark/COPYING +674 -0
- data/benchmark/README +75 -0
- data/benchmark/divide +34 -0
- data/benchmark/gcd +38 -0
- data/benchmark/gexpr +0 -0
- data/benchmark/gexpr.c +359 -0
- data/benchmark/multiply +44 -0
- data/benchmark/rsa +93 -0
- data/benchmark/runbench +147 -0
- data/benchmark/version +1 -0
- data/ext/gmp.c +10 -8
- data/ext/gmpbench_timing.c +80 -0
- data/ext/gmprandstate.c +224 -0
- data/ext/gmpz.c +170 -61
- data/ext/ruby_gmp.h +43 -1
- data/manual.pdf +0 -0
- data/manual.tex +214 -20
- data/test/README +4 -11
- data/test/tc_division.rb +109 -0
- data/test/tc_random.rb +54 -0
- data/test/tc_z_gcd_lcm_invert.rb +57 -0
- data/test/test-12.rb +14 -0
- data/test/test-19.rb +13 -0
- data/test/test-20.rb +29 -0
- data/test/test-21.rb +37 -0
- data/test/test-22.rb +12 -0
- data/test/test-23.rb +11 -0
- data/test/test_helper.rb +6 -0
- data/test/unit_tests.rb +9 -94
- metadata +31 -10
data/test/tc_random.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TC_Random < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_urandomb
|
8
|
+
@a = GMP::RandState.new
|
9
|
+
@a.seed(13579)
|
10
|
+
g1 = [ 392, 507, 1657, 3963, 2275, 1264, 2370, 2152, 3282, 407,
|
11
|
+
1746, 2488, 1753, 1639, 721, 3291, 3697, 2258, 3990, 1019]
|
12
|
+
g1.size.times do |i|
|
13
|
+
assert_equal(g1[i], @a.urandomb(12), "GMP::RandState should urandomb predictably.")
|
14
|
+
end
|
15
|
+
|
16
|
+
@b = GMP::RandState.new
|
17
|
+
@b.seed(314159)
|
18
|
+
g2 = [ 20, 5, 40, 228, 223, 205, 1750, 690, 5794, 13752,
|
19
|
+
31377, 49064, 37010, 187285, 489973, 312091, 550520, 916752, 3213943, 1561294]
|
20
|
+
g2.size.times do |i|
|
21
|
+
assert_equal(g2[i], @b.urandomb(i+5), "GMP::RandState should urandomb predictably.")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_reseed
|
26
|
+
@c = GMP::RandState.new
|
27
|
+
@c.seed(1000)
|
28
|
+
assert_equal( 6461, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
29
|
+
assert_equal(42961, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
30
|
+
assert_equal(44699, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
31
|
+
@c.seed(1000)
|
32
|
+
assert_equal( 6461, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
33
|
+
assert_equal(42961, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
34
|
+
assert_equal(44699, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
35
|
+
@c.seed(1000)
|
36
|
+
assert_equal( 6461, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
37
|
+
assert_equal(42961, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
38
|
+
assert_equal(44699, @c.urandomb(16), "GMP::RandState should re-seed correctly.")
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_random_independent_states
|
42
|
+
@d = GMP::RandState.new
|
43
|
+
@d.seed(13579)
|
44
|
+
@e = GMP::RandState.new
|
45
|
+
@e.seed(13579)
|
46
|
+
|
47
|
+
assert_equal( 392, @d.urandomb(12), "GMP::RandState should be independent correctly.")
|
48
|
+
assert_equal( 507, @d.urandomb(12), "GMP::RandState should be independent correctly.")
|
49
|
+
assert_equal( 392, @e.urandomb(12), "GMP::RandState should be independent correctly.")
|
50
|
+
assert_equal( 507, @e.urandomb(12), "GMP::RandState should be independent correctly.")
|
51
|
+
assert_equal(1657, @d.urandomb(12), "GMP::RandState should be independent correctly.")
|
52
|
+
assert_equal(1657, @e.urandomb(12), "GMP::RandState should be independent correctly.")
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TC_Z_GCD_LCM_Invert < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a = GMP::Z( 24) # 2^3 * 3
|
6
|
+
@b = GMP::Z( 8) # 2^3
|
7
|
+
@c = GMP::Z( 3) # 3
|
8
|
+
@d = GMP::Z( 7) # 7
|
9
|
+
@e = GMP::Z( 11) # 11
|
10
|
+
@f = GMP::Z( 25) # 25
|
11
|
+
@g = GMP::Z(720) # 2^4 * 3^2 * 5 = 1*2*3*4*5*6
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_gcd
|
15
|
+
assert_equal(GMP::Z( 8), @a.gcd(@b), "GMP::Z should gcd correctly")
|
16
|
+
assert_equal(GMP::Z( 3), @a.gcd(@c), "GMP::Z should gcd correctly")
|
17
|
+
assert_equal(GMP::Z( 1), @c.gcd(@d), "GMP::Z should gcd correctly")
|
18
|
+
assert_equal(GMP::Z( 1), @a.gcd(@f), "GMP::Z should gcd correctly")
|
19
|
+
assert_equal(GMP::Z(24), @a.gcd(@g), "GMP::Z should gcd correctly")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_gcd2
|
23
|
+
assert_equal(GMP::Z( 8), (-@a).gcd(@b), "GMP::Z should gcd negatives correctly")
|
24
|
+
assert_equal(GMP::Z( 3), (-@a).gcd(@c), "GMP::Z should gcd negatives correctly")
|
25
|
+
assert_equal(GMP::Z( 1), (-@c).gcd(@d), "GMP::Z should gcd correctly")
|
26
|
+
assert_equal(GMP::Z(24), (-@a).gcd(@g), "GMP::Z should gcd correctly")
|
27
|
+
|
28
|
+
assert_equal(GMP::Z( 8), @a.gcd(-@b), "GMP::Z should gcd negatives correctly")
|
29
|
+
assert_equal(GMP::Z( 3), @a.gcd(-@c), "GMP::Z should gcd negatives correctly")
|
30
|
+
assert_equal(GMP::Z( 1), @c.gcd(-@d), "GMP::Z should gcd correctly")
|
31
|
+
assert_equal(GMP::Z(24), @a.gcd(-@g), "GMP::Z should gcd correctly")
|
32
|
+
|
33
|
+
assert_equal(GMP::Z( 8), (-@a).gcd(-@b), "GMP::Z should gcd negatives correctly")
|
34
|
+
assert_equal(GMP::Z( 3), (-@a).gcd(-@c), "GMP::Z should gcd negatives correctly")
|
35
|
+
assert_equal(GMP::Z( 1), (-@c).gcd(-@d), "GMP::Z should gcd correctly")
|
36
|
+
assert_equal(GMP::Z(24), (-@a).gcd(-@g), "GMP::Z should gcd correctly")
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_invert
|
40
|
+
assert_equal(GMP::Z( 1), GMP::Z( 1).invert(@e), "GMP::Z should invert correctly")
|
41
|
+
assert_equal(GMP::Z( 6), GMP::Z( 2).invert(@e), "GMP::Z should invert correctly")
|
42
|
+
assert_equal(GMP::Z( 4), GMP::Z( 3).invert(@e), "GMP::Z should invert correctly")
|
43
|
+
assert_equal(GMP::Z( 3), GMP::Z( 4).invert(@e), "GMP::Z should invert correctly")
|
44
|
+
assert_equal(GMP::Z( 9), GMP::Z( 5).invert(@e), "GMP::Z should invert correctly")
|
45
|
+
assert_equal(GMP::Z( 2), GMP::Z( 6).invert(@e), "GMP::Z should invert correctly")
|
46
|
+
assert_equal(GMP::Z( 8), GMP::Z( 7).invert(@e), "GMP::Z should invert correctly")
|
47
|
+
assert_equal(GMP::Z( 7), GMP::Z( 8).invert(@e), "GMP::Z should invert correctly")
|
48
|
+
assert_equal(GMP::Z( 5), GMP::Z( 9).invert(@e), "GMP::Z should invert correctly")
|
49
|
+
assert_equal(GMP::Z(10), GMP::Z(10).invert(@e), "GMP::Z should invert correctly")
|
50
|
+
assert_equal(GMP::Z( 0), GMP::Z(11).invert(@e), "GMP::Z should invert correctly")
|
51
|
+
|
52
|
+
assert_equal(GMP::Z( 1), GMP::Z(12).invert(@e), "GMP::Z should invert correctly")
|
53
|
+
assert_equal(GMP::Z( 6), GMP::Z(13).invert(@e), "GMP::Z should invert correctly")
|
54
|
+
assert_equal(GMP::Z( 4), GMP::Z(14).invert(@e), "GMP::Z should invert correctly")
|
55
|
+
assert_equal(GMP::Z( 3), GMP::Z(15).invert(@e), "GMP::Z should invert correctly")
|
56
|
+
end
|
57
|
+
end
|
data/test/test-12.rb
ADDED
data/test/test-19.rb
ADDED
data/test/test-20.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'gmp'
|
4
|
+
|
5
|
+
a=GMP::F.new -1
|
6
|
+
b=GMP::F.new 0
|
7
|
+
c=GMP::F.new 0.1
|
8
|
+
d=GMP::F.new 1
|
9
|
+
e=GMP::F.new 2
|
10
|
+
f=GMP::F.new 4
|
11
|
+
g=GMP::F.new 10
|
12
|
+
|
13
|
+
print "exp:\n"
|
14
|
+
[a,b,c,d,e,f,g].map{|x| p x.exp}
|
15
|
+
|
16
|
+
print "log:\n"
|
17
|
+
[c,d,e,f,g].map{|x| p x.log}
|
18
|
+
|
19
|
+
print "log2:\n"
|
20
|
+
[c,d,e,f,g].map{|x| p x.log2}
|
21
|
+
|
22
|
+
print "log10:\n"
|
23
|
+
[c,d,e,f,g].map{|x| p x.log10}
|
24
|
+
|
25
|
+
print "log1p:\n"
|
26
|
+
[c,d,e,f,g].map{|x| p x.log1p}
|
27
|
+
|
28
|
+
print "expm1:\n"
|
29
|
+
[a,b,c,d,e,f,g].map{|x| p x.expm1}
|
data/test/test-21.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'gmp'
|
4
|
+
|
5
|
+
pi = GMP::F.new(1).asin * 2
|
6
|
+
|
7
|
+
a = GMP::F.new 0
|
8
|
+
b = pi / 4
|
9
|
+
c = pi / 2
|
10
|
+
d = -pi / 2
|
11
|
+
|
12
|
+
print "cos:\n"
|
13
|
+
[a,b,c,d].map{|x| p x.cos}
|
14
|
+
|
15
|
+
print "sin:\n"
|
16
|
+
[a,b,c,d].map{|x| p x.sin}
|
17
|
+
|
18
|
+
print "tan:\n"
|
19
|
+
[a,b,c,d].map{|x| p x.tan}
|
20
|
+
|
21
|
+
print "cosh:\n"
|
22
|
+
[a,b,c,d].map{|x| p x.cosh}
|
23
|
+
|
24
|
+
print "sinh:\n"
|
25
|
+
[a,b,c,d].map{|x| p x.sinh}
|
26
|
+
|
27
|
+
print "tanh:\n"
|
28
|
+
[a,b,c,d].map{|x| p x.tanh}
|
29
|
+
|
30
|
+
|
31
|
+
print "inverses:\n"
|
32
|
+
[a,b,c,d].map{|x| p [x,x.cos.acos] }
|
33
|
+
[a,b,c,d].map{|x| p [x,x.sin.asin] }
|
34
|
+
[a,b,c,d].map{|x| p [x,x.tan.atan] }
|
35
|
+
[a,b,c,d].map{|x| p [x,x.cosh.acosh] }
|
36
|
+
[a,b,c,d].map{|x| p [x,x.sinh.asinh] }
|
37
|
+
[a,b,c,d].map{|x| p [x,x.tanh.atanh] }
|
data/test/test-22.rb
ADDED
data/test/test-23.rb
ADDED
data/test/test_helper.rb
CHANGED
@@ -1,2 +1,8 @@
|
|
1
1
|
require 'test/unit'
|
2
|
+
require 'rbconfig'
|
3
|
+
|
4
|
+
ENV['PATH'] = [File.expand_path(
|
5
|
+
File.join(File.dirname(__FILE__), "..", "ext")
|
6
|
+
), ENV['PATH']].compact.join(';') if RbConfig::CONFIG['host_os'] =~ /(mswin|mingw|mingw32)/i
|
7
|
+
|
2
8
|
require File.dirname(__FILE__) + '/../ext/gmp'
|
data/test/unit_tests.rb
CHANGED
@@ -18,107 +18,22 @@ require 'tc_z_shifts_last_bits'
|
|
18
18
|
require 'tc_logical_roots'
|
19
19
|
require 'tc_f_precision'
|
20
20
|
require 'tc_f_arithmetics_coersion'
|
21
|
+
require 'tc_division'
|
21
22
|
require 'tc_z_jac_leg_rem'
|
23
|
+
require 'tc_z_gcd_lcm_invert'
|
24
|
+
require 'tc_random'
|
22
25
|
|
23
26
|
class TC_default_prec < Test::Unit::TestCase
|
24
27
|
def test_default_prec
|
25
28
|
assert_equal( 64, GMP::F.default_prec, "GMP::F.default_prec should be 64.")
|
26
29
|
GMP::F.default_prec = 100
|
27
30
|
assert_equal(128, GMP::F.default_prec, "GMP::F.default_prec should be assignable.")
|
31
|
+
GMP::F.default_prec = 130
|
32
|
+
assert_equal(160, GMP::F.default_prec, "GMP::F.default_prec should be assignable.")
|
33
|
+
GMP::F.default_prec = 1000
|
34
|
+
assert_equal(1024, GMP::F.default_prec, "GMP::F.default_prec should be assignable.")
|
35
|
+
assert_raise(RangeError) { GMP::F.default_prec = -64 }
|
36
|
+
assert_raise(TypeError) { GMP::F.default_prec = "Cow" }
|
28
37
|
GMP::F.default_prec = 64
|
29
38
|
end
|
30
|
-
end
|
31
|
-
|
32
|
-
class TC_division < Test::Unit::TestCase
|
33
|
-
def setup
|
34
|
-
@a = GMP::Z.new(5)
|
35
|
-
@b = GMP::Z.new(7)
|
36
|
-
@c = GMP::Z.new(25)
|
37
|
-
@d = GMP::Q.new(3,11)
|
38
|
-
@e = GMP::F.new(3.14)
|
39
|
-
@f = 2**32
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_z_div
|
43
|
-
assert_equal(GMP::Q, (@a / @b ).class, "GMP::Z / GMP::Z should be GMP::Q.")
|
44
|
-
assert_equal(GMP::Q, (@a / 3 ).class, "GMP::Z / Fixnum should be GMP::Q.")
|
45
|
-
assert_equal(GMP::Q, (@a / 2**32).class, "GMP::Z / Bignum should be GMP::Q.")
|
46
|
-
assert_equal(GMP::Q, (@a / @c ).class, "GMP::Z / GMP::Z should be GMP::Q.")
|
47
|
-
assert_in_delta(0.7142857142, @a / @b, 1e-7, "GMP::Z./ should work.")
|
48
|
-
assert_in_delta(1.4 , @b / @a, 1e-7, "GMP::Z./ should work.")
|
49
|
-
assert_in_delta(1.6666666667, @a / 3, 1e-7, "GMP::Z./ should work.")
|
50
|
-
assert_in_delta(0.6 , 3 / @a, 1e-7, "GMP::Z./ should work.")
|
51
|
-
assert_in_delta(0.2 , @a / @c, 1e-7, "GMP::Z./ should work.")
|
52
|
-
assert_in_delta(5.0 , @c / @a, 1e-7, "GMP::Z./ should work.")
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_z_tdiv
|
56
|
-
assert_equal(GMP::Z, @a.tdiv(@b).class, "GMP::Z.tdiv GMP::Z should be GMP::Z.")
|
57
|
-
assert_equal(GMP::Z, @a.tdiv(3).class, "GMP::Z.tdiv Fixnum should be GMP::Z.")
|
58
|
-
assert_equal(GMP::Z, @a.tdiv(2**32).class, "GMP::Z.tdiv Bignum should be GMP::Z.")
|
59
|
-
assert_equal(GMP::Z, @a.tdiv(@c).class, "GMP::Z.tdiv GMP::Z should be GMP::Z.")
|
60
|
-
assert_equal(0, @a.tdiv(@b), "GMP::Z.tdiv should work.")
|
61
|
-
assert_equal(1, @b.tdiv(@a), "GMP::Z.tdiv should work.")
|
62
|
-
assert_equal(1, @a.tdiv( 3), "GMP::Z.tdiv should work.")
|
63
|
-
assert_equal(0, @a.tdiv(@c), "GMP::Z.tdiv should work.")
|
64
|
-
assert_equal(5, @c.tdiv(@a), "GMP::Z.tdiv should work.")
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_z_fdiv
|
68
|
-
assert_equal(GMP::Z, @a.fdiv(@b).class, "GMP::Z.fdiv GMP::Z should be GMP::Z.")
|
69
|
-
assert_equal(GMP::Z, @a.fdiv(3).class, "GMP::Z.fdiv Fixnum should be GMP::Z.")
|
70
|
-
assert_equal(GMP::Z, @a.fdiv(2**32).class, "GMP::Z.fdiv Bignum should be GMP::Z.")
|
71
|
-
assert_equal(0, @a.fdiv(@b), "GMP::Z.fdiv should work.")
|
72
|
-
assert_equal(1, @b.fdiv(@a), "GMP::Z.fdiv should work.")
|
73
|
-
assert_equal(1, @a.fdiv( 3), "GMP::Z.fdiv should work.")
|
74
|
-
assert_equal(0, @a.fdiv(@c), "GMP::Z.fdiv should work.")
|
75
|
-
assert_equal(5, @c.fdiv(@a), "GMP::Z.fdiv should work.")
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_z_cdiv
|
79
|
-
assert_equal(GMP::Z, @a.cdiv(@b).class, "GMP::Z.cdiv GMP::Z should be GMP::Z.")
|
80
|
-
assert_equal(GMP::Z, @a.cdiv(3).class, "GMP::Z.cdiv Fixnum should be GMP::Z.")
|
81
|
-
assert_equal(GMP::Z, @a.cdiv(2**32).class, "GMP::Z.cdiv Bignum should be GMP::Z.")
|
82
|
-
assert_equal(1, @a.cdiv(@b), "GMP::Z.cdiv should work.")
|
83
|
-
assert_equal(2, @b.cdiv(@a), "GMP::Z.cdiv should work.")
|
84
|
-
assert_equal(2, @a.cdiv( 3), "GMP::Z.cdiv should work.")
|
85
|
-
assert_equal(1, @a.cdiv(@c), "GMP::Z.cdiv should work.")
|
86
|
-
assert_equal(5, @c.cdiv(@a), "GMP::Z.cdiv should work.")
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_z_tmod
|
90
|
-
assert_equal(GMP::Z, @a.tmod(@b).class, "GMP::Z.tmod GMP::Z should be GMP::Z.")
|
91
|
-
assert_equal(GMP::Z, @a.tmod(3).class, "GMP::Z.tmod Fixnum should be GMP::Z.")
|
92
|
-
assert_equal(GMP::Z, @a.tmod(2**32).class, "GMP::Z.tmod Bignum should be GMP::Z.")
|
93
|
-
assert_equal(GMP::Z, @a.tmod(@c).class, "GMP::Z.tmod GMP::Z should be GMP::Z.")
|
94
|
-
assert_equal(5, @a.tmod(@b), "GMP::Z.tmod should work.")
|
95
|
-
assert_equal(2, @b.tmod(@a), "GMP::Z.tmod should work.")
|
96
|
-
assert_equal(2, @a.tmod( 3), "GMP::Z.tmod should work.")
|
97
|
-
assert_equal(5, @a.tmod(@c), "GMP::Z.tmod should work.")
|
98
|
-
assert_equal(0, @c.tmod(@a), "GMP::Z.tmod should work.")
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_z_fmod
|
102
|
-
assert_equal(GMP::Z, @a.fmod(@b).class, "GMP::Z.fmod GMP::Z should be GMP::Z.")
|
103
|
-
assert_equal(GMP::Z, @a.fmod(3).class, "GMP::Z.fmod Fixnum should be GMP::Z.")
|
104
|
-
assert_equal(GMP::Z, @a.fmod(2**32).class, "GMP::Z.fmod Bignum should be GMP::Z.")
|
105
|
-
assert_equal(GMP::Z, @a.fmod(@c).class, "GMP::Z.fmod GMP::Z should be GMP::Z.")
|
106
|
-
assert_equal(5, @a.fmod(@b), "GMP::Z.fmod should work.")
|
107
|
-
assert_equal(2, @b.fmod(@a), "GMP::Z.fmod should work.")
|
108
|
-
assert_equal(2, @a.fmod( 3), "GMP::Z.fmod should work.")
|
109
|
-
assert_equal(5, @a.fmod(@c), "GMP::Z.fmod should work.")
|
110
|
-
assert_equal(0, @c.fmod(@a), "GMP::Z.fmod should work.")
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_z_cmod
|
114
|
-
assert_equal(GMP::Z, @a.cmod(@b).class, "GMP::Z.cmod GMP::Z should be GMP::Z.")
|
115
|
-
assert_equal(GMP::Z, @a.cmod(3).class, "GMP::Z.cmod Fixnum should be GMP::Z.")
|
116
|
-
assert_equal(GMP::Z, @a.cmod(2**32).class, "GMP::Z.cmod Bignum should be GMP::Z.")
|
117
|
-
assert_equal(GMP::Z, @a.cmod(@c).class, "GMP::Z.cmod GMP::Z should be GMP::Z.")
|
118
|
-
assert_equal( -2, @a.cmod(@b), "GMP::Z.cmod should work.")
|
119
|
-
assert_equal( -3, @b.cmod(@a), "GMP::Z.cmod should work.")
|
120
|
-
assert_equal( -1, @a.cmod( 3), "GMP::Z.cmod should work.")
|
121
|
-
assert_equal(-20, @a.cmod(@c), "GMP::Z.cmod should work.")
|
122
|
-
assert_equal( 0, @c.cmod(@a), "GMP::Z.cmod should work.")
|
123
|
-
end
|
124
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gmp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Wegrzanowski
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2010-01-03 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -25,43 +25,64 @@ extensions:
|
|
25
25
|
extra_rdoc_files: []
|
26
26
|
|
27
27
|
files:
|
28
|
-
- ext/extconf.rb
|
29
28
|
- ext/gmp.c
|
29
|
+
- ext/gmpbench_timing.c
|
30
30
|
- ext/gmpf.c
|
31
|
-
- ext/gmpf.h
|
32
31
|
- ext/gmpq.c
|
33
|
-
- ext/
|
32
|
+
- ext/gmprandstate.c
|
34
33
|
- ext/gmpz.c
|
34
|
+
- ext/gmpf.h
|
35
|
+
- ext/gmpq.h
|
35
36
|
- ext/gmpz.h
|
36
37
|
- ext/ruby_gmp.h
|
37
38
|
- ext/takeover.h
|
38
|
-
-
|
39
|
+
- ext/extconf.rb
|
39
40
|
- test/tc_cmp.rb
|
40
|
-
- test/
|
41
|
-
- test/tc_f_arithmetics_coersion.rb
|
41
|
+
- test/tc_division.rb
|
42
42
|
- test/tc_fib_fac_nextprime.rb
|
43
43
|
- test/tc_floor_ceil_truncate.rb
|
44
|
+
- test/tc_f_arithmetics_coersion.rb
|
45
|
+
- test/tc_f_precision.rb
|
44
46
|
- test/tc_logical_roots.rb
|
45
47
|
- test/tc_q.rb
|
46
48
|
- test/tc_q_basic.rb
|
49
|
+
- test/tc_random.rb
|
47
50
|
- test/tc_sgn_neg_abs.rb
|
48
51
|
- test/tc_swap.rb
|
49
52
|
- test/tc_z.rb
|
53
|
+
- test/tc_zerodivisionexceptions.rb
|
50
54
|
- test/tc_z_basic.rb
|
51
55
|
- test/tc_z_exponentiation.rb
|
56
|
+
- test/tc_z_gcd_lcm_invert.rb
|
52
57
|
- test/tc_z_jac_leg_rem.rb
|
53
58
|
- test/tc_z_logic.rb
|
54
59
|
- test/tc_z_shifts_last_bits.rb
|
55
60
|
- test/tc_z_to_d_to_i.rb
|
56
|
-
- test/
|
61
|
+
- test/test-12.rb
|
62
|
+
- test/test-19.rb
|
63
|
+
- test/test-20.rb
|
64
|
+
- test/test-21.rb
|
65
|
+
- test/test-22.rb
|
66
|
+
- test/test-23.rb
|
57
67
|
- test/test_helper.rb
|
58
68
|
- test/unit_tests.rb
|
69
|
+
- test/README
|
70
|
+
- benchmark/COPYING
|
71
|
+
- benchmark/divide
|
72
|
+
- benchmark/gcd
|
73
|
+
- benchmark/gexpr
|
74
|
+
- benchmark/gexpr.c
|
75
|
+
- benchmark/multiply
|
76
|
+
- benchmark/README
|
77
|
+
- benchmark/rsa
|
78
|
+
- benchmark/runbench
|
79
|
+
- benchmark/version
|
59
80
|
- CHANGELOG
|
60
81
|
- INSTALL
|
61
82
|
- README.rdoc
|
62
83
|
- manual.pdf
|
63
84
|
- manual.tex
|
64
|
-
has_rdoc:
|
85
|
+
has_rdoc: true
|
65
86
|
homepage: http://github.com/srawlins/gmp
|
66
87
|
licenses: []
|
67
88
|
|