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.
- data/History.txt +21 -0
- data/Manifest +9 -0
- data/Rakefile +9 -5
- data/ext/extconf.rb +2 -2
- data/ext/gslng_extensions.cpp +141 -36
- data/lib/gslng.rb +9 -8
- data/lib/gslng/backend.rb +5 -3
- data/lib/gslng/backend_components/error_handling.rb +11 -11
- data/lib/gslng/backend_components/matrix.rb +66 -75
- data/lib/gslng/backend_components/rng.rb +22 -0
- data/lib/gslng/backend_components/special.rb +7 -0
- data/lib/gslng/backend_components/vector.rb +63 -75
- data/lib/gslng/finalizer.rb +6 -2
- data/lib/gslng/matrix.rb +199 -134
- data/lib/gslng/matrix_view.rb +3 -2
- data/lib/gslng/rng/gaussian.rb +34 -0
- data/lib/gslng/rng/rng.rb +27 -0
- data/lib/gslng/rng/uniform.rb +23 -0
- data/lib/gslng/special.rb +22 -0
- data/lib/gslng/vector.rb +196 -125
- data/lib/gslng/vector_view.rb +5 -3
- data/ruby-gsl-ng.gemspec +6 -6
- data/test/benchmark.rb +61 -14
- data/test/benchmark_results +80 -0
- data/test/matrix_test.rb +11 -8
- data/test/rng_test.rb +27 -0
- data/test/test_special.rb +21 -0
- data/test/vector_test.rb +18 -4
- metadata +21 -4
data/lib/gslng/vector_view.rb
CHANGED
@@ -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
|
-
|
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.
|
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.
|
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-
|
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/
|
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
|
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
|
-
|
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
|
-
|
17
|
-
x.report("
|
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
|
-
|
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
|
-
|
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
|
-
|
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 {
|
51
|
-
x.report("GSLng :") {n.times {
|
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(
|
70
|
-
assert_equal(
|
71
|
-
assert_equal(
|
72
|
-
assert_equal(
|
73
|
-
assert_equal(
|
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
|
-
-
|
9
|
-
version: 0.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-
|
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/
|
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
|