ruby-gsl-ng 0.2.2 → 0.2.3
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.
- 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
|