ruby-gsl-ngx 0.2.6.1

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/test/test_gsl.rb ADDED
@@ -0,0 +1,11 @@
1
+ # To change this template, choose Tools | Templates
2
+ # and open the template in the editor.
3
+
4
+ require 'test/unit'
5
+
6
+ # Add your testcases here
7
+
8
+ require 'vector_test'
9
+ require 'matrix_test'
10
+ require 'rng_test'
11
+ require 'test_special'
@@ -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
@@ -0,0 +1,145 @@
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 'rubygems'
8
+ require 'test/unit'
9
+ require 'gslng'
10
+
11
+ include GSLng
12
+
13
+ class VectorTest < Test::Unit::TestCase
14
+ def test_initialize
15
+ assert_equal(10, Vector.new(10).size)
16
+ assert_equal(10, Vector.zero(10).size)
17
+ assert(Vector.zero(10).zero?)
18
+ assert_nothing_raised { Vector.random(10) }
19
+ assert_equal(Vector[0], Vector.linspace(0, 1, 1.5))
20
+ assert_equal(Vector[0,1], Vector.linspace(0, 1, 1))
21
+ assert_equal(Vector[0,0.5,1], Vector.linspace(0, 1, 0.5))
22
+ assert_equal(Vector[0,0.7], Vector.linspace(0, 1, 0.7))
23
+ end
24
+
25
+ def test_to_s
26
+ assert_equal("[0.0]", Vector.zero(1).to_s)
27
+ assert_equal("[0.0, 0.0, 0.0]", Vector.zero(3).to_s)
28
+ assert_equal("[0.0, 1.0, 2.0]", Vector.new(3) {|i| i}.to_s)
29
+ assert_equal("[1.0, 2.0, 3.0]", Vector.new(3) {|i| i+1}.to_s)
30
+ assert_equal("[1.0, 2.0, 3.0]", Vector[1,2,3].to_s)
31
+ assert_equal("1.0 2.0 3.0", Vector[1,2,3].join(' '))
32
+ end
33
+
34
+ def test_equal
35
+ assert_equal(Vector[1,2,3], [1,2,3])
36
+ assert_equal(Vector[1,2,3], Vector[1,2,3])
37
+ assert_equal(Vector[0...3], [0,1,2])
38
+ assert_equal(Vector.zero(3), Vector.zero(3))
39
+ assert_not_equal(Vector.zero(4), Vector.zero(3))
40
+
41
+ assert(Vector[1,2,3].eql?(Vector[1,2,3]))
42
+ assert(!Vector[1,2,3].eql?(Vector[1,2,4]))
43
+ end
44
+
45
+ def test_each
46
+ a = Vector[1.1,2.1,3.8].map_array(&:round)
47
+ assert_kind_of(Array, a)
48
+ assert_equal([1,2,4], a)
49
+ assert_equal(Vector[1,2,4],Vector[1.1,2.1,3.8].map!(&:round))
50
+ end
51
+
52
+ def test_copies
53
+ v1 = Vector[1,2,3]
54
+ v2 = Vector[2,3,4]
55
+ assert_not_equal(v1, v2)
56
+ assert_equal(v1.copy(v2), v2)
57
+ assert_equal(v1.dup, v2)
58
+ end
59
+
60
+ def test_stats
61
+ assert_equal(Vector[1, 2, 3, 4, 5].median, 3)
62
+ assert_equal(Vector[1, 2, 3, 4].median, 2.5)
63
+ end
64
+
65
+ def test_sets
66
+ assert_equal(Vector.zero(3).set!(1), Vector[1,1,1])
67
+ assert_equal(Vector.zero(3).set!(1).zero!, Vector.zero(3))
68
+ assert_equal(Vector.zero(3).basis!(1), Vector[0,1,0])
69
+ end
70
+
71
+ def test_operators
72
+ assert_equal(Vector[2,3,4],Vector[1,2,3] + Vector[1,1,1])
73
+ assert_equal(Vector[1,0,3],Vector[1,2,3] * Vector[1,0,1])
74
+ assert_equal(Vector[0,1,2],Vector[1,2,3] - Vector[1,1,1])
75
+ assert_equal(Vector[0.5,1,1.5],Vector[1,2,3] / Vector[2,2,2])
76
+ assert_equal(Vector[3,6,9],Vector[1,2,3] * 3)
77
+ assert_equal(Vector[4,5,6],3 + Vector[1,2,3])
78
+ assert_equal(Vector[4,5,6],Vector[1,2,3] + 3)
79
+ assert_equal(Vector[2,1,0],3 - Vector[1,2,3])
80
+ assert_equal(Vector[-2,-1,0],Vector[1,2,3] - 3)
81
+ assert_equal(Vector[3,6,9],3 * Vector[1,2,3])
82
+ assert_equal(Vector[0.5,1,1.5],Vector[1,2,3] / 2)
83
+ end
84
+
85
+ def test_other
86
+ assert_equal(Matrix[1,2,3], Vector[1,2,3].to_matrix)
87
+ assert_equal(Vector[1,2,3], Vector[1,2,3].to_a)
88
+ assert_equal(Vector[1,2,3], Vector[3,1,2].sort)
89
+ assert_equal(6, Vector[3,1,2].sum)
90
+ assert_equal(Vector[3,1,2].mul_add(Vector[1,0,1],0.5), Vector[3.5,1,2.5])
91
+ assert_equal(3, Vector[2,1,2].norm)
92
+ assert_equal(5, Vector[3,1,2] ^ Vector[1,0,1])
93
+ end
94
+
95
+ def test_minmax
96
+ assert_equal(1, Vector[1,2,3].min)
97
+ assert_equal(3, Vector[1,2,3].max)
98
+ assert_equal([1,3], Vector[1,2,3].minmax)
99
+ assert_equal(0, (Vector[1,2,3]).min_index)
100
+ assert_equal(2, (Vector[1,2,3]).max_index)
101
+ assert_equal([0,2], Vector[1,2,3].minmax_index)
102
+ end
103
+
104
+ def test_set_get
105
+ assert_equal(2, Vector[1,2,3][1])
106
+ #assert_raise { Vector[1,2,3][3] } NOT working in some ruby versions
107
+ assert_equal(3, Vector[1,2,3][-1])
108
+ #assert_raise { Vector[1,2,3][-5] } NOT working in some ruby versions
109
+
110
+ v = Vector[1,2,3]
111
+ v[1] = 3
112
+ assert_equal(Vector[1,3,3], v)
113
+ v[-1] = 0
114
+ assert_equal(Vector[1,3,0], v)
115
+ end
116
+
117
+ def test_view
118
+ v,view = nil,nil
119
+ assert_nothing_raised {
120
+ v = Vector[1,2,3]
121
+ view = v.view
122
+ view[1] = 3
123
+ }
124
+ assert_equal(Vector[1,3,3], v)
125
+ assert_equal(Vector[1,3,3], view)
126
+ assert_equal(Vector[1,3], Vector[0,1,2,3].view(1,nil,2))
127
+ assert_equal(Vector[0,2], Vector[0,1,2,3].view(0,nil,2))
128
+ end
129
+
130
+ def test_wrap
131
+ v = Vector[1,2,8,-1,11]
132
+ assert_equal(Vector[0,0,-1,1,-2],v.wrap!(5))
133
+ assert_equal(Vector[1,2,3,4,1], v)
134
+ end
135
+
136
+ def test_predicate
137
+ assert(Vector[1,2,3].positive?)
138
+ assert(Vector[-1,-2,-3].negative?)
139
+ assert(Vector[0,2,3].nonnegative?)
140
+ assert(Vector[0,2,3] < Vector[1,3,4])
141
+ assert(Vector[0,2,3] <= Vector[0,3,4])
142
+ assert(Vector[1,3,4] > Vector[0,2,3])
143
+ assert(Vector[0,2,3] <= Vector[0,3,4])
144
+ end
145
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-gsl-ngx
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.6.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - ronen barzel
9
+ - v01d
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-04-19 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ffi
17
+ requirement: &70337241943020 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70337241943020
26
+ - !ruby/object:Gem::Dependency
27
+ name: yard
28
+ requirement: &70337241942480 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *70337241942480
37
+ description: Ruby/GSL new-generation wrapper (memory leak fix)
38
+ email:
39
+ - ronen@barzel.org
40
+ executables: []
41
+ extensions:
42
+ - ext/extconf.rb
43
+ extra_rdoc_files:
44
+ - README.rdoc
45
+ - ext/extconf.rb
46
+ - ext/gslng_extensions.cpp
47
+ - ext/plotting.cpp
48
+ - lib/core_extensions/array.rb
49
+ - lib/gslng.rb
50
+ - lib/gslng/backend.rb
51
+ - lib/gslng/backend_components/error_handling.rb
52
+ - lib/gslng/backend_components/matrix.rb
53
+ - lib/gslng/backend_components/rng.rb
54
+ - lib/gslng/backend_components/special.rb
55
+ - lib/gslng/backend_components/stats.rb
56
+ - lib/gslng/backend_components/vector.rb
57
+ - lib/gslng/matrix.rb
58
+ - lib/gslng/matrix_view.rb
59
+ - lib/gslng/plotter.rb
60
+ - lib/gslng/rng/gaussian.rb
61
+ - lib/gslng/rng/rng.rb
62
+ - lib/gslng/rng/uniform.rb
63
+ - lib/gslng/special.rb
64
+ - lib/gslng/vector.rb
65
+ - lib/gslng/vector_view.rb
66
+ files:
67
+ - .gitignore
68
+ - History.txt
69
+ - Manifest
70
+ - README.rdoc
71
+ - Rakefile
72
+ - ext/extconf.rb
73
+ - ext/gslng_extensions.cpp
74
+ - ext/plotting.cpp
75
+ - lib/core_extensions/array.rb
76
+ - lib/gslng.rb
77
+ - lib/gslng/backend.rb
78
+ - lib/gslng/backend_components/error_handling.rb
79
+ - lib/gslng/backend_components/matrix.rb
80
+ - lib/gslng/backend_components/rng.rb
81
+ - lib/gslng/backend_components/special.rb
82
+ - lib/gslng/backend_components/stats.rb
83
+ - lib/gslng/backend_components/vector.rb
84
+ - lib/gslng/matrix.rb
85
+ - lib/gslng/matrix_view.rb
86
+ - lib/gslng/plotter.rb
87
+ - lib/gslng/rng/gaussian.rb
88
+ - lib/gslng/rng/rng.rb
89
+ - lib/gslng/rng/uniform.rb
90
+ - lib/gslng/special.rb
91
+ - lib/gslng/vector.rb
92
+ - lib/gslng/vector_view.rb
93
+ - ruby-gsl-ngx.gemspec
94
+ - test/benchmark.rb
95
+ - test/benchmark_results
96
+ - test/matrix_test.rb
97
+ - test/rng_test.rb
98
+ - test/test_gsl.rb
99
+ - test/test_special.rb
100
+ - test/vector_test.rb
101
+ homepage: http://github.com/ronen/gsl-ng
102
+ licenses: []
103
+ post_install_message:
104
+ rdoc_options: []
105
+ require_paths:
106
+ - lib
107
+ - ext
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubyforge_project:
122
+ rubygems_version: 1.8.12
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Ruby/GSL new-generation wrapper (memory leak fix)
126
+ test_files:
127
+ - test/benchmark.rb
128
+ - test/benchmark_results
129
+ - test/matrix_test.rb
130
+ - test/rng_test.rb
131
+ - test/test_gsl.rb
132
+ - test/test_special.rb
133
+ - test/vector_test.rb
134
+ has_rdoc: