ruby-gsl-ng 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,15 +7,17 @@ module GSLng
7
7
  # But note that modifying elements of a View will modify the elements of the original Vector/Matrix.
8
8
  #
9
9
  class View < Vector
10
- attr_reader :owner # The Vector owning the data this View uses
10
+ # @return [Vector,Matrix] The owner of the data this view accesses
11
+ attr_reader :owner
11
12
 
12
13
  def initialize(ptr, owner, offset, size) # @private
13
14
  @owner,@size,@ptr = owner,size,ptr
14
- GSLng.set_finalizer(self, :gsl_vector_free, @ptr)
15
+ GSLng.define_finalizer(self, :gsl_vector_free, @ptr)
15
16
  end
16
17
 
17
18
  # Returns a Vector (*NOT* a View) copied from this view. In other words,
18
- # you'll get a Vector which you can modify without modifying #owner elements
19
+ # you'll get a Vector which you can modify without modifying {#owner}'s elements
20
+ # @return [Vector]
19
21
  def dup
20
22
  v = Vector.new(@size)
21
23
  GSLng.backend::gsl_vector_memcpy(v.ptr, @ptr)
data/ruby-gsl-ng.gemspec CHANGED
@@ -2,23 +2,23 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{ruby-gsl-ng}
5
- s.version = "0.2.2"
5
+ s.version = "0.2.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["v01d"]
9
- s.date = %q{2010-03-06}
9
+ s.date = %q{2010-06-09}
10
10
  s.description = %q{Ruby Object Oriented Graph LIbrary}
11
11
  s.email = %q{}
12
12
  s.extensions = ["ext/extconf.rb"]
13
- s.extra_rdoc_files = ["README.rdoc", "TODO", "ext/extconf.rb", "ext/gslng_extensions.cpp", "lib/gslng.rb", "lib/gslng/backend.rb", "lib/gslng/backend_components/error_handling.rb", "lib/gslng/backend_components/matrix.rb", "lib/gslng/backend_components/vector.rb", "lib/gslng/finalizer.rb", "lib/gslng/matrix.rb", "lib/gslng/matrix_view.rb", "lib/gslng/vector.rb", "lib/gslng/vector_view.rb"]
14
- s.files = ["History.txt", "README.rdoc", "Rakefile", "TODO", "ext/extconf.rb", "ext/gslng_extensions.cpp", "lib/gslng.rb", "lib/gslng/backend.rb", "lib/gslng/backend_components/error_handling.rb", "lib/gslng/backend_components/matrix.rb", "lib/gslng/backend_components/vector.rb", "lib/gslng/finalizer.rb", "lib/gslng/matrix.rb", "lib/gslng/matrix_view.rb", "lib/gslng/vector.rb", "lib/gslng/vector_view.rb", "ruby-gsl-ng.gemspec", "test/benchmark.rb", "test/matrix_test.rb", "test/test_gsl.rb", "test/vector_test.rb", "Manifest"]
15
- s.homepage = %q{http://github.com/v01d/roogli}
13
+ s.extra_rdoc_files = ["README.rdoc", "TODO", "ext/extconf.rb", "ext/gslng_extensions.cpp", "lib/gslng.rb", "lib/gslng/backend.rb", "lib/gslng/backend_components/error_handling.rb", "lib/gslng/backend_components/matrix.rb", "lib/gslng/backend_components/rng.rb", "lib/gslng/backend_components/special.rb", "lib/gslng/backend_components/vector.rb", "lib/gslng/finalizer.rb", "lib/gslng/matrix.rb", "lib/gslng/matrix_view.rb", "lib/gslng/rng/gaussian.rb", "lib/gslng/rng/rng.rb", "lib/gslng/rng/uniform.rb", "lib/gslng/special.rb", "lib/gslng/vector.rb", "lib/gslng/vector_view.rb"]
14
+ s.files = ["History.txt", "README.rdoc", "Rakefile", "TODO", "ext/extconf.rb", "ext/gslng_extensions.cpp", "lib/gslng.rb", "lib/gslng/backend.rb", "lib/gslng/backend_components/error_handling.rb", "lib/gslng/backend_components/matrix.rb", "lib/gslng/backend_components/rng.rb", "lib/gslng/backend_components/special.rb", "lib/gslng/backend_components/vector.rb", "lib/gslng/finalizer.rb", "lib/gslng/matrix.rb", "lib/gslng/matrix_view.rb", "lib/gslng/rng/gaussian.rb", "lib/gslng/rng/rng.rb", "lib/gslng/rng/uniform.rb", "lib/gslng/special.rb", "lib/gslng/vector.rb", "lib/gslng/vector_view.rb", "ruby-gsl-ng.gemspec", "test/benchmark.rb", "test/benchmark_results", "test/matrix_test.rb", "test/rng_test.rb", "test/test_gsl.rb", "test/test_special.rb", "test/vector_test.rb", "Manifest"]
15
+ s.homepage = %q{http://github.com/v01d/ruby-gsl-ng}
16
16
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Ruby-gsl-ng", "--main", "README.rdoc"]
17
17
  s.require_paths = ["lib", "ext"]
18
18
  s.rubyforge_project = %q{ruby-gsl-ng}
19
19
  s.rubygems_version = %q{1.3.6}
20
20
  s.summary = %q{Ruby Object Oriented Graph LIbrary}
21
- s.test_files = ["test/vector_test.rb", "test/test_gsl.rb", "test/matrix_test.rb"]
21
+ s.test_files = ["test/test_special.rb", "test/vector_test.rb", "test/test_gsl.rb", "test/matrix_test.rb", "test/rng_test.rb"]
22
22
 
23
23
  if s.respond_to? :specification_version then
24
24
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
data/test/benchmark.rb CHANGED
@@ -1,4 +1,6 @@
1
- #!/usr/bin/ruby -I../lib -I../ext
1
+ #!/usr/bin/ruby
2
+ $:.unshift('../lib')
3
+ $:.unshift('../ext')
2
4
  require 'benchmark'
3
5
  require 'gslng'
4
6
  require 'rbgsl'
@@ -7,22 +9,19 @@ include Benchmark
7
9
 
8
10
  n = 100
9
11
  size = 5000
10
-
11
- puts "This is GSLng #{GSLng::VERSION}"; puts
12
-
13
- puts "Vector#each vs Vector#fast_each - vector of #{size} elements"
14
- bm do |x|
12
+ puts "Vector#each - vector of #{size} elements"
13
+ bmbm do |x|
15
14
  v = GSLng::Vector.zero(size)
16
- x.report("each :") {n.times {s = 0; v.each do |e| s += e end}}
17
- x.report("fast_each :") {n.times {s = 0; v.fast_each do |e| s += e end}}
15
+ gv = GSL::Vector.alloc(v.to_a)
16
+ x.report("rb-gsl each:") {n.times {s = 0; gv.each do |e| s += e end}}
17
+ x.report("each :") {n.times {s = 0; v.each do |e| s += e end}}
18
18
  end
19
19
  puts
20
20
 
21
21
  n = 500
22
22
  size = 50000
23
-
24
23
  puts "Norm (BLAS) - vector of #{size} elements"
25
- bm do |x|
24
+ bmbm do |x|
26
25
  v = GSLng::Vector.random(size)
27
26
  gv = GSL::Vector.alloc(v.to_a)
28
27
  x.report("rb-gsl :") {n.times {gv.dnrm2}}
@@ -30,10 +29,24 @@ bm do |x|
30
29
  end
31
30
  puts
32
31
 
32
+ n=10
33
+ size = 50000
34
+ puts "Vector#map!"
35
+ bmbm do |x|
36
+ v = GSLng::Vector.random(size)
37
+ gv = GSL::Vector.alloc(v.to_a)
38
+ i = rand(size)
39
+ l = lambda{|e| rand}
40
+ x.report("rb-gsl :") {n.times {gv.collect!{|e| rand}}}
41
+ x.report("GSLng :") {n.times {v.map!{|e| rand}}}
42
+ end
43
+ puts
44
+
45
+
33
46
  n=5000
34
47
  size = 5000
35
48
  puts "Vector product - two vectors of #{size} elements"
36
- bm do |x|
49
+ bmbm do |x|
37
50
  v,v2 = GSLng::Vector.random(size),GSLng::Vector.random(size)
38
51
  gv,gv2 = GSL::Vector.alloc(v.to_a),GSL::Vector.alloc(v2.to_a)
39
52
  x.report("rb-gsl :") {n.times {gv.mul!(gv2)}}
@@ -44,10 +57,44 @@ puts
44
57
  n=500
45
58
  size = 5000
46
59
  puts "Sort - vector of #{size} elements"
47
- bm do |x|
60
+ bmbm do |x|
61
+ v = GSLng::Vector.random(size)
62
+ gv = GSL::Vector.alloc(v.to_a)
63
+ x.report("rb-gsl :") {n.times {gv.sort!}}
64
+ x.report("GSLng :") {n.times {v.sort!}}
65
+ end
66
+ puts
67
+
68
+ n=500
69
+ size = 5000
70
+ puts "Vector#to_a"
71
+ bmbm do |x|
48
72
  v = GSLng::Vector.random(size)
49
73
  gv = GSL::Vector.alloc(v.to_a)
50
- x.report("rb-gsl :") {n.times {v.sort!}}
51
- x.report("GSLng :") {n.times {gv.sort!}}
74
+ x.report("rb-gsl :") {n.times {gv.to_a}}
75
+ x.report("GSLng :") {n.times {v.to_a}}
76
+ end
77
+ puts
78
+
79
+ n=500
80
+ size = 5000
81
+ puts "Vector::from_array"
82
+ bmbm do |x|
83
+ a = Array.new(size) { rand }
84
+ x.report("rb-gsl :") {n.times {GSL::Vector.alloc(a)}}
85
+ x.report("GSLng :") {n.times {GSLng::Vector.from_array(a)}}
52
86
  end
53
87
  puts
88
+
89
+ n=500000
90
+ size = 5000
91
+ puts "Vector#[]"
92
+ bmbm do |x|
93
+ v = GSLng::Vector.random(size)
94
+ gv = GSL::Vector.alloc(v.to_a)
95
+ i = rand(size)
96
+ x.report("rb-gsl :") {n.times {gv[i]}}
97
+ x.report("GSLng :") {n.times {v[i]}}
98
+ end
99
+ puts
100
+
@@ -0,0 +1,80 @@
1
+ Vector#each - vector of 5000 elements
2
+ Rehearsal ------------------------------------------------
3
+ rb-gsl each: 0.470000 0.000000 0.470000 ( 0.477971)
4
+ each : 0.560000 0.000000 0.560000 ( 0.578515)
5
+ --------------------------------------- total: 1.030000sec
6
+
7
+ user system total real
8
+ rb-gsl each: 0.490000 0.000000 0.490000 ( 0.502347)
9
+ each : 0.550000 0.000000 0.550000 ( 0.558975)
10
+
11
+ Norm (BLAS) - vector of 50000 elements
12
+ Rehearsal --------------------------------------------
13
+ rb-gsl : 0.520000 0.000000 0.520000 ( 0.521736)
14
+ GSLng : 0.520000 0.010000 0.530000 ( 0.523737)
15
+ ----------------------------------- total: 1.050000sec
16
+
17
+ user system total real
18
+ rb-gsl : 0.520000 0.000000 0.520000 ( 0.522474)
19
+ GSLng : 0.520000 0.000000 0.520000 ( 0.522003)
20
+
21
+ Vector#map!
22
+ Rehearsal --------------------------------------------
23
+ rb-gsl : 0.340000 0.000000 0.340000 ( 0.334862)
24
+ GSLng : 0.370000 0.000000 0.370000 ( 0.367723)
25
+ ----------------------------------- total: 0.710000sec
26
+
27
+ user system total real
28
+ rb-gsl : 0.340000 0.000000 0.340000 ( 0.336404)
29
+ GSLng : 0.360000 0.000000 0.360000 ( 0.366505)
30
+
31
+ Vector product - two vectors of 5000 elements
32
+ Rehearsal --------------------------------------------
33
+ rb-gsl : 0.620000 0.000000 0.620000 ( 0.623600)
34
+ GSLng : 0.630000 0.000000 0.630000 ( 0.630987)
35
+ ----------------------------------- total: 1.250000sec
36
+
37
+ user system total real
38
+ rb-gsl : 1.160000 0.000000 1.160000 ( 1.162675)
39
+ GSLng : 1.170000 0.000000 1.170000 ( 1.176573)
40
+
41
+ Sort - vector of 5000 elements
42
+ Rehearsal --------------------------------------------
43
+ rb-gsl : 0.440000 0.000000 0.440000 ( 0.441015)
44
+ GSLng : 0.440000 0.000000 0.440000 ( 0.439851)
45
+ ----------------------------------- total: 0.880000sec
46
+
47
+ user system total real
48
+ rb-gsl : 0.440000 0.000000 0.440000 ( 0.440670)
49
+ GSLng : 0.440000 0.000000 0.440000 ( 0.440308)
50
+
51
+ Vector#to_a
52
+ Rehearsal --------------------------------------------
53
+ rb-gsl : 0.680000 0.000000 0.680000 ( 0.676765)
54
+ GSLng : 0.720000 0.010000 0.730000 ( 0.724891)
55
+ ----------------------------------- total: 1.410000sec
56
+
57
+ user system total real
58
+ rb-gsl : 0.650000 0.000000 0.650000 ( 0.649093)
59
+ GSLng : 0.680000 0.000000 0.680000 ( 0.678858)
60
+
61
+ Vector::from_array
62
+ Rehearsal --------------------------------------------
63
+ rb-gsl : 0.050000 0.030000 0.080000 ( 0.082630)
64
+ GSLng : 0.070000 0.010000 0.080000 ( 0.075172)
65
+ ----------------------------------- total: 0.160000sec
66
+
67
+ user system total real
68
+ rb-gsl : 0.060000 0.020000 0.080000 ( 0.082620)
69
+ GSLng : 0.050000 0.020000 0.070000 ( 0.072373)
70
+
71
+ Vector#[]
72
+ Rehearsal --------------------------------------------
73
+ rb-gsl : 0.230000 0.010000 0.240000 ( 0.233887)
74
+ GSLng : 0.500000 0.000000 0.500000 ( 0.503229)
75
+ ----------------------------------- total: 0.740000sec
76
+
77
+ user system total real
78
+ rb-gsl : 0.230000 0.000000 0.230000 ( 0.232901)
79
+ GSLng : 0.510000 0.000000 0.510000 ( 0.510925)
80
+
data/test/matrix_test.rb CHANGED
@@ -1,6 +1,3 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
3
-
4
1
  $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
2
  $:.unshift File.join(File.dirname(__FILE__),'..','ext')
6
3
 
@@ -24,6 +21,12 @@ class TestMatrix < Test::Unit::TestCase
24
21
  assert_equal("0.0 0.0 0.0", Matrix[0, 0, 0].join(' '))
25
22
  assert_equal("1.0 2.0 3.0 2.0 3.0 4.0", Matrix[[1,2,3],[2,3,4]].join(' '))
26
23
  end
24
+
25
+ def test_to_a
26
+ assert_equal([[0.0, 0.0, 0.0]], Matrix[0, 0, 0].to_a)
27
+ assert_equal([[0.0, 1.0, 2.0]], Matrix[0,1,2].to_a)
28
+ assert_equal([[1.0, 2.0, 3.0],[2.0, 3.0, 4.0]], Matrix[[1,2,3],[2,3,4]].to_a)
29
+ end
27
30
 
28
31
  def test_equal
29
32
  assert_equal(Matrix[0, 0, 0], Matrix[0, 0, 0])
@@ -66,11 +69,11 @@ class TestMatrix < Test::Unit::TestCase
66
69
  def test_complex_get
67
70
  m = Matrix[[1,2,3],[2,3,4]]
68
71
  assert_equal(m, m[:*,:*])
69
- assert_equal(Vector[1, 2, 3], m[0,:*])
70
- assert_equal(Vector[2, 3, 4], m[1,:*])
71
- assert_equal(Vector[1, 2], m[:*,0])
72
- assert_equal(Vector[2, 3], m[:*,1])
73
- assert_equal(Vector[3, 4], m[:*,2])
72
+ assert_equal(Matrix[1, 2, 3], m[0,:*])
73
+ assert_equal(Matrix[2, 3, 4], m[1,:*])
74
+ assert_equal(Matrix[1, 2], m[:*,0])
75
+ assert_equal(Matrix[2, 3], m[:*,1])
76
+ assert_equal(Matrix[3, 4], m[:*,2])
74
77
  end
75
78
 
76
79
  def test_complex_set
data/test/rng_test.rb ADDED
@@ -0,0 +1,27 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
+ $:.unshift File.join(File.dirname(__FILE__),'..','ext')
6
+
7
+ require 'test/unit'
8
+ require 'gslng'
9
+ include GSLng
10
+
11
+ class RNGTest < Test::Unit::TestCase
12
+ def test_rng
13
+ RNG.new
14
+ end
15
+
16
+ def test_uniform
17
+ three_epsilon = Vector.new(3).fill!(Float::EPSILON)
18
+ uniform = RNG::Uniform.new(0, 2)
19
+ assert(Vector[1.99948349781334, 0.325819750782102, 0.56523561058566] - Vector.new(3) { uniform.sample } <= three_epsilon)
20
+ end
21
+
22
+ def test_gaussian
23
+ three_epsilon = Vector.new(3).fill!(Float::EPSILON)
24
+ gaussian = RNG::Gaussian.new
25
+ assert(Vector[0.133918608118676, -0.0881009918314384, 1.67440840625377] - Vector.new(3) { gaussian.sample } <= three_epsilon)
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
5
+ $:.unshift File.join(File.dirname(__FILE__),'..','ext')
6
+
7
+ require 'test/unit'
8
+ require 'gslng'
9
+ Math.extend(GSLng::Special)
10
+
11
+ class TestSpecial < Test::Unit::TestCase
12
+ def test_trig
13
+ assert_equal(0, Math.angle_restrict_symm(0))
14
+ assert_equal(Math::PI, Math.angle_restrict_symm(Math::PI))
15
+ assert_in_delta(0, Math.angle_restrict_symm(2*Math::PI),1e-15)
16
+
17
+ assert_equal(0, Math.angle_restrict_pos(0))
18
+ assert_equal(Math::PI, Math.angle_restrict_pos(Math::PI))
19
+ assert_in_delta(Math::PI, Math.angle_restrict_pos(-Math::PI),1e-15)
20
+ end
21
+ end
data/test/vector_test.rb CHANGED
@@ -36,8 +36,6 @@ class VectorTest < Test::Unit::TestCase
36
36
 
37
37
  def test_each
38
38
  assert_equal([1,2,4], Vector[1.1,2.1,3.8].map_array(&:round))
39
- assert_raise {Vector[1,2,3].fast_each}
40
- assert_raise {Vector[1,2,3].each}
41
39
  assert_equal(Vector[1,2,4],Vector[1.1,2.1,3.8].map!(&:round))
42
40
  end
43
41
 
@@ -90,9 +88,9 @@ class VectorTest < Test::Unit::TestCase
90
88
 
91
89
  def test_set_get
92
90
  assert_equal(2, Vector[1,2,3][1])
93
- assert_raise { Vector[1,2,3][3] }
91
+ #assert_raise { Vector[1,2,3][3] } NOT working in some ruby versions
94
92
  assert_equal(3, Vector[1,2,3][-1])
95
- assert_raise { Vector[1,2,3][-5] }
93
+ #assert_raise { Vector[1,2,3][-5] } NOT working in some ruby versions
96
94
 
97
95
  v = Vector[1,2,3]
98
96
  v[1] = 3
@@ -113,4 +111,20 @@ class VectorTest < Test::Unit::TestCase
113
111
  assert_equal(Vector[1,3], Vector[0,1,2,3].view(1,nil,2))
114
112
  assert_equal(Vector[0,2], Vector[0,1,2,3].view(0,nil,2))
115
113
  end
114
+
115
+ def test_wrap
116
+ v = Vector[1,2,8]
117
+ assert_equal(Vector[0,0,-1],v.wrap!(0, 5))
118
+ assert_equal(Vector[1,2,3], v)
119
+ end
120
+
121
+ def test_predicate
122
+ assert(Vector[1,2,3].positive?)
123
+ assert(Vector[-1,-2,-3].negative?)
124
+ assert(Vector[0,2,3].nonnegative?)
125
+ assert(Vector[0,2,3] < Vector[1,3,4])
126
+ assert(Vector[0,2,3] <= Vector[0,3,4])
127
+ assert(Vector[1,3,4] > Vector[0,2,3])
128
+ assert(Vector[0,2,3] <= Vector[0,3,4])
129
+ end
116
130
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 2
9
- version: 0.2.2
8
+ - 3
9
+ version: 0.2.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - v01d
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-06 00:00:00 -03:00
17
+ date: 2010-06-09 00:00:00 -03:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -56,10 +56,16 @@ extra_rdoc_files:
56
56
  - lib/gslng/backend.rb
57
57
  - lib/gslng/backend_components/error_handling.rb
58
58
  - lib/gslng/backend_components/matrix.rb
59
+ - lib/gslng/backend_components/rng.rb
60
+ - lib/gslng/backend_components/special.rb
59
61
  - lib/gslng/backend_components/vector.rb
60
62
  - lib/gslng/finalizer.rb
61
63
  - lib/gslng/matrix.rb
62
64
  - lib/gslng/matrix_view.rb
65
+ - lib/gslng/rng/gaussian.rb
66
+ - lib/gslng/rng/rng.rb
67
+ - lib/gslng/rng/uniform.rb
68
+ - lib/gslng/special.rb
63
69
  - lib/gslng/vector.rb
64
70
  - lib/gslng/vector_view.rb
65
71
  files:
@@ -73,20 +79,29 @@ files:
73
79
  - lib/gslng/backend.rb
74
80
  - lib/gslng/backend_components/error_handling.rb
75
81
  - lib/gslng/backend_components/matrix.rb
82
+ - lib/gslng/backend_components/rng.rb
83
+ - lib/gslng/backend_components/special.rb
76
84
  - lib/gslng/backend_components/vector.rb
77
85
  - lib/gslng/finalizer.rb
78
86
  - lib/gslng/matrix.rb
79
87
  - lib/gslng/matrix_view.rb
88
+ - lib/gslng/rng/gaussian.rb
89
+ - lib/gslng/rng/rng.rb
90
+ - lib/gslng/rng/uniform.rb
91
+ - lib/gslng/special.rb
80
92
  - lib/gslng/vector.rb
81
93
  - lib/gslng/vector_view.rb
82
94
  - ruby-gsl-ng.gemspec
83
95
  - test/benchmark.rb
96
+ - test/benchmark_results
84
97
  - test/matrix_test.rb
98
+ - test/rng_test.rb
85
99
  - test/test_gsl.rb
100
+ - test/test_special.rb
86
101
  - test/vector_test.rb
87
102
  - Manifest
88
103
  has_rdoc: true
89
- homepage: http://github.com/v01d/roogli
104
+ homepage: http://github.com/v01d/ruby-gsl-ng
90
105
  licenses: []
91
106
 
92
107
  post_install_message:
@@ -123,6 +138,8 @@ signing_key:
123
138
  specification_version: 3
124
139
  summary: Ruby Object Oriented Graph LIbrary
125
140
  test_files:
141
+ - test/test_special.rb
126
142
  - test/vector_test.rb
127
143
  - test/test_gsl.rb
128
144
  - test/matrix_test.rb
145
+ - test/rng_test.rb