nmatrix 0.1.0.rc1 → 0.1.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,7 +28,7 @@ require File.join(File.dirname(__FILE__), "spec_helper.rb")
28
28
 
29
29
  describe "RSpec" do
30
30
  it "should permit #be_within to be used on a dense NMatrix" do
31
- (NMatrix.new(:dense, [4,1], 1.0, :complex128) / 10000.0).should be_within(0.00000001).of(NMatrix.new(:dense, [4,1], 0.0001, :float64))
32
- (NMatrix.new(:dense, [4,1], 1.0, :complex128) / 10000.0).should_not be_within(0.00000001).of(NMatrix.new(:dense, [4,1], 1.0, :float64))
31
+ expect(NMatrix.new(:dense, [4,1], 1.0, :complex128) / 10000.0).to be_within(0.00000001).of(NMatrix.new(:dense, [4,1], 0.0001, :float64))
32
+ expect(NMatrix.new(:dense, [4,1], 1.0, :complex128) / 10000.0).not_to be_within(0.00000001).of(NMatrix.new(:dense, [4,1], 1.0, :float64))
33
33
  end
34
34
  end
@@ -38,53 +38,71 @@ describe NMatrix do
38
38
  m = NMatrix.zeros(3)
39
39
  n = NMatrix.new([3, 3], 0)
40
40
 
41
- m.should.eql? n
41
+ expect(m).to eq n
42
42
  end
43
43
 
44
44
  it "ones() creates a matrix of ones" do
45
45
  m = NMatrix.ones(3)
46
46
  n = NMatrix.new([3, 3], 1)
47
47
 
48
- m.should.eql? n
48
+ expect(m).to eq n
49
49
  end
50
50
 
51
51
  it "eye() creates an identity matrix" do
52
52
  m = NMatrix.eye(3)
53
53
  identity3 = NMatrix.new([3, 3], [1, 0, 0, 0, 1, 0, 0, 0, 1])
54
54
 
55
- m.should.eql? identity3
55
+ expect(m).to eq identity3
56
56
  end
57
57
 
58
58
  it "diag() creates a matrix with pre-supplied diagonal" do
59
59
  arr = [1,2,3,4]
60
60
  m = NMatrix.diag(arr)
61
- m.is_a?(NMatrix).should be_true
61
+ expect(m.is_a?(NMatrix)).to be_true
62
62
  end
63
63
 
64
64
  it "diagonals() contains the seeded values on the diagonal" do
65
65
  arr = [1,2,3,4]
66
66
  m = NMatrix.diagonals(arr)
67
- m[0,0].should eq(arr[0])
68
- m[1,1].should eq(arr[1])
69
- m[2,2].should eq(arr[2])
70
- m[3,3].should eq(arr[3])
67
+ expect(m[0,0]).to eq(arr[0])
68
+ expect(m[1,1]).to eq(arr[1])
69
+ expect(m[2,2]).to eq(arr[2])
70
+ expect(m[3,3]).to eq(arr[3])
71
71
  end
72
72
 
73
- it "random() creates a matrix of random numbers" do
74
- m = NMatrix.random(2)
73
+ context "::random" do
74
+ it "creates a matrix of random numbers" do
75
+ m = NMatrix.random(2)
75
76
 
76
- m.stype.should == :dense
77
- m.dtype.should == :float64
78
- end
77
+ expect(m.stype).to eq(:dense)
78
+ expect(m.dtype).to eq(:float64)
79
+ end
80
+
81
+ it "creates a complex matrix of random numbers" do
82
+ m = NMatrix.random(2, :dtype => :complex128)
83
+ end
84
+
85
+ it "forbids generation of a rational matrix" do
86
+ expect { m = NMatrix.random(2, dtype: :rational128) }.to raise_error
87
+ end
79
88
 
80
- it "random() only accepts an integer or an array as dimension" do
81
- m = NMatrix.random([2, 2])
89
+ it "correctly accepts :scale parameter" do
90
+ m = NMatrix.random([2,2], dtype: :byte, scale: 255)
91
+ m.each do |v|
92
+ expect(v).to be > 0
93
+ expect(v).to be < 255
94
+ end
95
+ end
82
96
 
83
- m.stype.should == :dense
84
- m.dtype.should == :float64
97
+ it "only accepts an integer or an array as dimension" do
98
+ m = NMatrix.random([2, 2])
85
99
 
86
- expect { NMatrix.random(2.0) }.to raise_error
87
- expect { NMatrix.random("not an array or integer") }.to raise_error
100
+ expect(m.stype).to eq(:dense)
101
+ expect(m.dtype).to eq(:float64)
102
+
103
+ expect { NMatrix.random(2.0) }.to raise_error
104
+ expect { NMatrix.random("not an array or integer") }.to raise_error
105
+ end
88
106
  end
89
107
 
90
108
  it "seq() creates a matrix of integers, sequentially" do
@@ -93,7 +111,7 @@ describe NMatrix do
93
111
 
94
112
  2.times do |i|
95
113
  2.times do |j|
96
- m[i,j].should == value
114
+ expect(m[i,j]).to eq(value)
97
115
  value += 1
98
116
  end
99
117
  end
@@ -106,7 +124,7 @@ describe NMatrix do
106
124
 
107
125
  2.times do |i|
108
126
  2.times do |j|
109
- m[i, j].should == value
127
+ expect(m[i, j]).to eq(value)
110
128
  value += 1
111
129
  end
112
130
  end
@@ -118,7 +136,7 @@ describe NMatrix do
118
136
 
119
137
  2.times do |i|
120
138
  2.times do |j|
121
- (m[i, j]/10).should be_within(Float::EPSILON).of(value.to_f/10)
139
+ expect(m[i, j]/10).to be_within(Float::EPSILON).of(value.to_f/10)
122
140
  value += 1
123
141
  end
124
142
  end
@@ -130,7 +148,7 @@ describe NMatrix do
130
148
 
131
149
  2.times do |i|
132
150
  2.times do |j|
133
- m[i, j].should == value
151
+ expect(m[i, j]).to eq(value)
134
152
  value += 1
135
153
  end
136
154
  end
@@ -142,8 +160,8 @@ describe NMatrix do
142
160
 
143
161
  2.times do |i|
144
162
  2.times do |j|
145
- m[i, j].real.should be_within(Float::EPSILON).of(value)
146
- m[i, j].imag.should be_within(Float::EPSILON).of(0.0)
163
+ expect(m[i, j].real).to be_within(Float::EPSILON).of(value)
164
+ expect(m[i, j].imag).to be_within(Float::EPSILON).of(0.0)
147
165
  value += 1
148
166
  end
149
167
  end
@@ -152,28 +170,28 @@ describe NMatrix do
152
170
  it "column() returns a NMatrix" do
153
171
  m = NMatrix.random(3)
154
172
 
155
- m.column(2).is_a?(NMatrix).should be_true
173
+ expect(m.column(2).is_a?(NMatrix)).to be_true
156
174
  end
157
175
 
158
176
  it "row() returns a NMatrix" do
159
177
  m = NMatrix.random(3)
160
178
 
161
- m.row(2).is_a?(NMatrix).should be_true
179
+ expect(m.row(2).is_a?(NMatrix)).to be_true
162
180
  end
163
181
 
164
182
  it "diagonals() creates an NMatrix" do
165
183
  arr = [1,2,3,4]
166
184
  m = NMatrix.diagonals(arr)
167
- m.is_a?(NMatrix).should be_true
185
+ expect(m.is_a?(NMatrix)).to be_true
168
186
  end
169
187
 
170
188
  it "diagonals() contains the seeded values on the diagonal" do
171
189
  arr = [1,2,3,4]
172
190
  m = NMatrix.diagonals(arr)
173
- m[0,0].should eq(arr[0])
174
- m[1,1].should eq(arr[1])
175
- m[2,2].should eq(arr[2])
176
- m[3,3].should eq(arr[3])
191
+ expect(m[0,0]).to eq(arr[0])
192
+ expect(m[1,1]).to eq(arr[1])
193
+ expect(m[2,2]).to eq(arr[2])
194
+ expect(m[3,3]).to eq(arr[3])
177
195
  end
178
196
 
179
197
  context "_like constructors" do
@@ -183,13 +201,13 @@ describe NMatrix do
183
201
  end
184
202
 
185
203
  it "should create an nmatrix of ones with dimensions and type the same as its argument" do
186
- NMatrix.ones_like(@nm_1d).should eq NMatrix[1.0, 1.0, 1.0, 1.0, 1.0]
187
- NMatrix.ones_like(@nm_2d).should eq NMatrix[[1.0, 1.0], [1.0, 1.0]]
204
+ expect(NMatrix.ones_like(@nm_1d)).to eq NMatrix[1.0, 1.0, 1.0, 1.0, 1.0]
205
+ expect(NMatrix.ones_like(@nm_2d)).to eq NMatrix[[1.0, 1.0], [1.0, 1.0]]
188
206
  end
189
207
 
190
208
  it "should create an nmatrix of zeros with dimensions and type the same as its argument" do
191
- NMatrix.zeros_like(@nm_1d).should eq NMatrix[0.0, 0.0, 0.0, 0.0, 0.0]
192
- NMatrix.zeros_like(@nm_2d).should eq NMatrix[[0.0, 0.0], [0.0, 0.0]]
209
+ expect(NMatrix.zeros_like(@nm_1d)).to eq NMatrix[0.0, 0.0, 0.0, 0.0, 0.0]
210
+ expect(NMatrix.zeros_like(@nm_2d)).to eq NMatrix[[0.0, 0.0], [0.0, 0.0]]
193
211
  end
194
212
  end
195
213
 
@@ -201,7 +219,7 @@ describe "NVector" do
201
219
  v = NVector.zeros(4)
202
220
 
203
221
  4.times do |i|
204
- v[i].should == 0
222
+ expect(v[i]).to eq(0)
205
223
  end
206
224
  end
207
225
 
@@ -209,19 +227,19 @@ describe "NVector" do
209
227
  v = NVector.ones(3)
210
228
 
211
229
  3.times do |i|
212
- v[i].should == 1
230
+ expect(v[i]).to eq(1)
213
231
  end
214
232
  end
215
233
 
216
234
  it "random() creates a vector of random numbers" do
217
235
  v = NVector.random(4)
218
- v.dtype.should == :float64
219
- v.stype.should == :dense
236
+ expect(v.dtype).to eq(:float64)
237
+ expect(v.stype).to eq(:dense)
220
238
  end
221
239
 
222
240
  it "seq() creates a vector of integers, sequentially" do
223
241
  v = NVector.seq(7)
224
- v.should == NMatrix.new([7,1], [0, 1, 2, 3, 4, 5, 6])
242
+ expect(v).to eq(NMatrix.new([7,1], [0, 1, 2, 3, 4, 5, 6]))
225
243
  end
226
244
 
227
245
  it "seq() only accepts integers as dimension" do
@@ -233,32 +251,32 @@ describe "NVector" do
233
251
 
234
252
  it "indgen() creates a vector of integers as well as seq()" do
235
253
  v = NVector.indgen(7)
236
- v.should == NMatrix.new([7,1], [0, 1, 2, 3, 4, 5, 6])
254
+ expect(v).to eq(NMatrix.new([7,1], [0, 1, 2, 3, 4, 5, 6]))
237
255
  end
238
256
 
239
257
  it "findgen creates a vector of floats, sequentially" do
240
258
  v = NVector.findgen(2)
241
- v.should == NMatrix.new([2,1], [0.0, 1.0])
259
+ expect(v).to eq(NMatrix.new([2,1], [0.0, 1.0]))
242
260
  end
243
261
 
244
262
  it "bindgen() creates a vector of bytes, sequentially" do
245
263
  v = NVector.bindgen(4)
246
- v.should == NMatrix.new([4,1], [0, 1, 2, 3], dtype: :byte)
264
+ expect(v).to eq(NMatrix.new([4,1], [0, 1, 2, 3], dtype: :byte))
247
265
  end
248
266
 
249
267
  it "cindgen() creates a vector of complexes, sequentially" do
250
268
  v = NVector.cindgen(2)
251
- v.should == NMatrix.new([2,1], [Complex(0.0, 0.0), Complex(1.0, 0.0)], dtype: :complex64)
269
+ expect(v).to eq(NMatrix.new([2,1], [Complex(0.0, 0.0), Complex(1.0, 0.0)], dtype: :complex64))
252
270
  end
253
271
 
254
272
  it "linspace() creates a vector with n values equally spaced between a and b" do
255
273
  v = NVector.linspace(0, 2, 5)
256
- v.should == NMatrix.new([5,1], [0.0, 0.5, 1.0, 1.5, 2.0])
274
+ expect(v).to eq(NMatrix.new([5,1], [0.0, 0.5, 1.0, 1.5, 2.0]))
257
275
  end
258
276
 
259
277
  it "logspace() creates a vector with n values logarithmically spaced between decades 10^a and 10^b" do
260
278
  v = NVector.logspace(0, 3, 4)
261
- v.should == NMatrix.new([4,1], [1.0, 10.0, 100.0, 1000.0])
279
+ expect(v).to eq(NMatrix.new([4,1], [1.0, 10.0, 100.0, 1000.0]))
262
280
  end
263
281
  end
264
282
 
@@ -268,6 +286,6 @@ describe "Inline constructor" do
268
286
  m = NMatrix.new([2, 2], [1, 4, 6, 7])
269
287
  n = NMatrix[[1, 4], [6, 7]]
270
288
 
271
- m.should.eql? n
289
+ expect(m).to eq n
272
290
  end
273
291
  end
@@ -45,8 +45,8 @@ describe "Set slice operation" do
45
45
  if stype == :yale
46
46
  step "verify correct arrangement of Yale IJA and A arrays" do
47
47
  @m.extend NMatrix::YaleFunctions
48
- @m.yale_ija.should == [4,6,8,10,1,2,0,2,0,1]
49
- @m.yale_a.should == [0,4,8,0, 1,2,3,5,6,7]
48
+ expect(@m.yale_ija).to eq([4,6,8,10,1,2,0,2,0,1])
49
+ expect(@m.yale_a).to eq([0,4,8,0, 1,2,3,5,6,7])
50
50
  end
51
51
  end
52
52
 
@@ -54,30 +54,30 @@ describe "Set slice operation" do
54
54
  n = @m.clone
55
55
  old_val = @m[0,0]
56
56
  @m[0,0] = 100
57
- @m[0,0].should == 100
57
+ expect(@m[0,0]).to eq(100)
58
58
  @m[0,0] = old_val
59
- @m.should == n
59
+ expect(@m).to eq(n)
60
60
  end
61
61
 
62
62
  if stype == :yale
63
63
  n = @m.clone
64
64
  step "set a row of entries" do
65
65
  n[0,0..2] = 0
66
- n[0,0..2].to_flat_array.should == [0,0,0]
67
- n[1,0..2].to_flat_array.should == [3,4,5]
68
- n[2,0..2].to_flat_array.should == [6,7,8]
66
+ expect(n[0,0..2].to_flat_array).to eq([0,0,0])
67
+ expect(n[1,0..2].to_flat_array).to eq([3,4,5])
68
+ expect(n[2,0..2].to_flat_array).to eq([6,7,8])
69
69
  end
70
70
 
71
71
  step "set a second row of entries" do
72
72
  n[2,0..2] = 0
73
- n[2,0..2].to_flat_array.should == [0,0,0]
74
- n[1,0..2].to_flat_array.should == [3,4,5]
73
+ expect(n[2,0..2].to_flat_array).to eq([0,0,0])
74
+ expect(n[1,0..2].to_flat_array).to eq([3,4,5])
75
75
  end
76
76
 
77
77
  step "reset both rows of entries" do
78
78
  n[0,0..2] = [0,1,2]
79
79
  n[2,0..2] = [6,7,8]
80
- n.should == @m
80
+ expect(n).to eq(@m)
81
81
  end
82
82
  end
83
83
 
@@ -89,62 +89,62 @@ describe "Set slice operation" do
89
89
  m[0..1,0..1] = 100
90
90
 
91
91
  if stype == :yale
92
- m.yale_ija.should == [4, 6, 8, 10, 1, 2, 0, 2, 0, 1]
93
- m.yale_a.should == [100, 100, 8, 0, 100, 2, 100, 5, 6, 7]
92
+ expect(m.yale_ija).to eq([4, 6, 8, 10, 1, 2, 0, 2, 0, 1])
93
+ expect(m.yale_a).to eq([100, 100, 8, 0, 100, 2, 100, 5, 6, 7])
94
94
  end
95
95
 
96
- m[0..1,0..1].should == slice_result_a
97
- m[2,0..1].should == @m[2,0..1]
98
- m[0..1,2].should == @m[0..1,2]
96
+ expect(m[0..1,0..1]).to eq(slice_result_a)
97
+ expect(m[2,0..1]).to eq(@m[2,0..1])
98
+ expect(m[0..1,2]).to eq(@m[0..1,2])
99
99
  end
100
100
 
101
101
  step "set upper left-hand 2x2 corner to 0" do
102
102
  m[0..1,0..1] = 0
103
103
  if stype == :yale
104
- [4,5,6,8,2,2,0,1].should == m.yale_ija
105
- [0,0,8,0,2,5,6,7].should == m.yale_a
104
+ expect([4,5,6,8,2,2,0,1]).to eq(m.yale_ija)
105
+ expect([0,0,8,0,2,5,6,7]).to eq(m.yale_a)
106
106
  end
107
107
 
108
- m[0..1,0..1].should == slice_result_b
108
+ expect(m[0..1,0..1]).to eq(slice_result_b)
109
109
  end
110
110
 
111
111
  m = @m.clone
112
112
  step "set lower left-hand 2x2 corner to 100" do
113
113
  m[1..2,0..1] = 100
114
- m[1..2,0..1].should == slice_result_a
115
- m[0,0..1].should == @m[0,0..1]
116
- m[1..2,2].should == @m[1..2,2]
114
+ expect(m[1..2,0..1]).to eq(slice_result_a)
115
+ expect(m[0,0..1]).to eq(@m[0,0..1])
116
+ expect(m[1..2,2]).to eq(@m[1..2,2])
117
117
  end
118
118
 
119
119
  step "set lower left-hand 2x2 corner to 0" do
120
120
  m[1..2,0..1] = 0
121
- m[1..2,0..1].should == slice_result_b
121
+ expect(m[1..2,0..1]).to eq(slice_result_b)
122
122
  end
123
123
 
124
124
  m = @m.clone
125
125
  step "set lower right-hand 2x2 corner to 100" do
126
126
  m[1..2,1..2] = 100
127
- m[1..2,1..2].should == slice_result_a
128
- m[0,1..2].should == @m[0,1..2]
129
- m[1..2,0].should == @m[1..2,0]
127
+ expect(m[1..2,1..2]).to eq(slice_result_a)
128
+ expect(m[0,1..2]).to eq(@m[0,1..2])
129
+ expect(m[1..2,0]).to eq(@m[1..2,0])
130
130
  end
131
131
 
132
132
  step "set lower right-hand 2x2 corner to 0" do
133
133
  m[1..2,1..2] = 0
134
- m[1..2,1..2].should == slice_result_b
134
+ expect(m[1..2,1..2]).to eq(slice_result_b)
135
135
  end
136
136
 
137
137
  m = @m.clone
138
138
  step "set upper right-hand 2x2 corner to 100" do
139
139
  m[0..1,1..2] = 100
140
- m[0..1,1..2].should == slice_result_a
141
- m[2,1..2].should == @m[2,1..2]
142
- m[0..1,0].should == @m[0..1,0]
140
+ expect(m[0..1,1..2]).to eq(slice_result_a)
141
+ expect(m[2,1..2]).to eq(@m[2,1..2])
142
+ expect(m[0..1,0]).to eq(@m[0..1,0])
143
143
  end
144
144
 
145
145
  step "set upper right-hand 2x2 corner to 0" do
146
146
  m[0..1,1..2] = 0
147
- m[0..1,1..2].should == slice_result_b
147
+ expect(m[0..1,1..2]).to eq(slice_result_b)
148
148
  end
149
149
  end
150
150
 
@@ -152,7 +152,7 @@ describe "Set slice operation" do
152
152
  x = NMatrix.new(4, stype: :yale, dtype: :int16)
153
153
  x.extend NMatrix::YaleFunctions if stype == :yale
154
154
  x[1..3,1..3] = @m
155
- x.to_flat_array.should == [0,0,0,0, 0,0,1,2, 0,3,4,5, 0,6,7,8]
155
+ expect(x.to_flat_array).to eq([0,0,0,0, 0,0,1,2, 0,3,4,5, 0,6,7,8])
156
156
  end
157
157
 
158
158
  end
@@ -39,43 +39,43 @@ describe "Statistical functions" do
39
39
  end
40
40
 
41
41
  it "behaves like Enumerable#reduce with no argument to reduce" do
42
- @nm_1d.reduce_along_dim(0) { |acc, el| acc + el }.to_f.should eq 11 unless stype == :yale
43
- @nm_2d.reduce_along_dim(1) { |acc, el| acc + el }.should eq NMatrix.new([2,1], [1.0, 5.0], stype: stype)
42
+ expect(@nm_1d.reduce_along_dim(0) { |acc, el| acc + el }.to_f).to eq 11 unless stype == :yale
43
+ expect(@nm_2d.reduce_along_dim(1) { |acc, el| acc + el }).to eq NMatrix.new([2,1], [1.0, 5.0], stype: stype)
44
44
  end
45
45
 
46
46
  it "should calculate the mean along the specified dimension" do
47
47
  unless stype == :yale then
48
48
  puts @nm_1d.mean
49
- @nm_1d.mean.should eq NMatrix.new([1], [2.2], stype: stype, dtype: :float64)
49
+ expect(@nm_1d.mean).to eq NMatrix.new([1], [2.2], stype: stype, dtype: :float64)
50
50
  end
51
- @nm_2d.mean.should eq NMatrix[[1.0,2.0], stype: stype]
52
- @nm_2d.mean(1).should eq NMatrix[[0.5], [2.5], stype: stype]
51
+ expect(@nm_2d.mean).to eq NMatrix[[1.0,2.0], stype: stype]
52
+ expect(@nm_2d.mean(1)).to eq NMatrix[[0.5], [2.5], stype: stype]
53
53
  end
54
54
 
55
55
  it "should calculate the minimum along the specified dimension" do
56
- @nm_1d.min.should eq 0.0 unless stype == :yale
57
- @nm_2d.min.should eq NMatrix[[0.0, 1.0], stype: stype]
58
- @nm_2d.min(1).should eq NMatrix[[0.0], [2.0], stype: stype]
56
+ expect(@nm_1d.min).to eq 0.0 unless stype == :yale
57
+ expect(@nm_2d.min).to eq NMatrix[[0.0, 1.0], stype: stype]
58
+ expect(@nm_2d.min(1)).to eq NMatrix[[0.0], [2.0], stype: stype]
59
59
  end
60
60
 
61
61
  it "should calculate the maximum along the specified dimension" do
62
- @nm_1d.max.should eq 5.0 unless stype == :yale
63
- @nm_2d.max.should eq NMatrix[[2.0, 3.0], stype: stype]
62
+ expect(@nm_1d.max).to eq 5.0 unless stype == :yale
63
+ expect(@nm_2d.max).to eq NMatrix[[2.0, 3.0], stype: stype]
64
64
  end
65
65
 
66
66
  it "should calculate the variance along the specified dimension" do
67
- @nm_1d.variance.should eq NMatrix[3.7, stype: stype] unless stype == :yale
68
- @nm_2d.variance(1).should eq NMatrix[[0.5], [0.5], stype: stype]
67
+ expect(@nm_1d.variance).to eq NMatrix[3.7, stype: stype] unless stype == :yale
68
+ expect(@nm_2d.variance(1)).to eq NMatrix[[0.5], [0.5], stype: stype]
69
69
  end
70
70
 
71
71
  it "should calculate the sum along the specified dimension" do
72
- @nm_1d.sum.should eq NMatrix[11.0, stype: stype] unless stype == :yale
73
- @nm_2d.sum.should eq NMatrix[[2.0, 4.0], stype: stype]
72
+ expect(@nm_1d.sum).to eq NMatrix[11.0, stype: stype] unless stype == :yale
73
+ expect(@nm_2d.sum).to eq NMatrix[[2.0, 4.0], stype: stype]
74
74
  end
75
75
 
76
76
  it "should calculate the standard deviation along the specified dimension" do
77
- @nm_1d.std.should eq NMatrix[Math.sqrt(3.7), stype: stype] unless stype == :yale
78
- @nm_2d.std(1).should eq NMatrix[[Math.sqrt(0.5)], [Math.sqrt(0.5)], stype: stype]
77
+ expect(@nm_1d.std).to eq NMatrix[Math.sqrt(3.7), stype: stype] unless stype == :yale
78
+ expect(@nm_2d.std(1)).to eq NMatrix[[Math.sqrt(0.5)], [Math.sqrt(0.5)], stype: stype]
79
79
  end
80
80
 
81
81
  it "should raise an ArgumentError when any invalid dimension is provided" do
@@ -84,9 +84,9 @@ describe "Statistical functions" do
84
84
  end
85
85
 
86
86
  it "should convert to float if it contains only a single element" do
87
- NMatrix[4.0, stype: stype].to_f.should eq 4.0 unless stype == :yale
88
- NMatrix[[[[4.0]]], stype: stype].to_f.should eq 4.0 unless stype == :yale
89
- NMatrix[[4.0], stype: stype].to_f.should eq 4.0
87
+ expect(NMatrix[4.0, stype: stype].to_f).to eq 4.0 unless stype == :yale
88
+ expect(NMatrix[[[[4.0]]], stype: stype].to_f).to eq 4.0 unless stype == :yale
89
+ expect(NMatrix[[4.0], stype: stype].to_f).to eq 4.0
90
90
  end
91
91
 
92
92
  it "should raise an index error if it contains more than a single element" do
@@ -96,8 +96,8 @@ describe "Statistical functions" do
96
96
 
97
97
  it "should map a block to all elements" do
98
98
  #binding.pry if stype == :list
99
- @nm_1d.map { |e| e ** 2 }.should eq NMatrix[25.0,0.0,1.0,4.0,9.0, stype: stype] unless stype == :yale
100
- @nm_2d.map { |e| e ** 2 }.should eq NMatrix[[0.0,1.0],[4.0,9.0], stype: stype]
99
+ expect(@nm_1d.map { |e| e ** 2 }).to eq NMatrix[25.0,0.0,1.0,4.0,9.0, stype: stype] unless stype == :yale
100
+ expect(@nm_2d.map { |e| e ** 2 }).to eq NMatrix[[0.0,1.0],[4.0,9.0], stype: stype]
101
101
  end
102
102
 
103
103
  it "should map! a block to all elements in place" do
@@ -105,39 +105,39 @@ describe "Statistical functions" do
105
105
  unless stype == :yale then
106
106
  expected1 = @nm_1d.map &fct
107
107
  @nm_1d.map! &fct
108
- @nm_1d.should eq expected1
108
+ expect(@nm_1d).to eq expected1
109
109
  end
110
110
  expected2 = @nm_2d.map &fct
111
111
  @nm_2d.map! &fct
112
- @nm_2d.should eq expected2
112
+ expect(@nm_2d).to eq expected2
113
113
  end
114
114
 
115
115
  it "should return an enumerator for map without a block" do
116
- @nm_2d.map.should be_a Enumerator
116
+ expect(@nm_2d.map).to be_a Enumerator
117
117
  end
118
118
 
119
119
  it "should return an enumerator for reduce without a block" do
120
- @nm_2d.reduce_along_dim(0).should be_a Enumerator
120
+ expect(@nm_2d.reduce_along_dim(0)).to be_a Enumerator
121
121
  end
122
122
 
123
123
  it "should return an enumerator for each_along_dim without a block" do
124
- @nm_2d.each_along_dim(0).should be_a Enumerator
124
+ expect(@nm_2d.each_along_dim(0)).to be_a Enumerator
125
125
  end
126
126
 
127
127
  it "should iterate correctly for map without a block" do
128
128
  en = @nm_1d.map unless stype == :yale
129
- en.each { |e| e**2 }.should eq @nm_1d.map { |e| e**2 } unless stype == :yale
129
+ expect(en.each { |e| e**2 }).to eq @nm_1d.map { |e| e**2 } unless stype == :yale
130
130
  en = @nm_2d.map
131
- en.each { |e| e**2 }.should eq @nm_2d.map { |e| e**2 }
131
+ expect(en.each { |e| e**2 }).to eq @nm_2d.map { |e| e**2 }
132
132
  end
133
133
 
134
134
  it "should iterate correctly for reduce without a block" do
135
135
  unless stype == :yale then
136
136
  en = @nm_1d.reduce_along_dim(0, 1.0)
137
- en.each { |a, e| a+e }.to_f.should eq 12
137
+ expect(en.each { |a, e| a+e }.to_f).to eq 12
138
138
  end
139
139
  en = @nm_2d.reduce_along_dim(1, 1.0)
140
- en.each { |a, e| a+e }.should eq NMatrix[[2.0],[6.0], stype: stype]
140
+ expect(en.each { |a, e| a+e }).to eq NMatrix[[2.0],[6.0], stype: stype]
141
141
  end
142
142
 
143
143
  it "should iterate correctly for each_along_dim without a block" do
@@ -145,31 +145,31 @@ describe "Statistical functions" do
145
145
  res = NMatrix.zeros_like(@nm_1d[0...1])
146
146
  en = @nm_1d.each_along_dim(0)
147
147
  en.each { |e| res += e }
148
- res.to_f.should eq 11
148
+ expect(res.to_f).to eq 11
149
149
  end
150
150
  res = NMatrix.zeros_like (@nm_2d[0...2, 0])
151
151
  en = @nm_2d.each_along_dim(1)
152
152
  en.each { |e| res += e }
153
- res.should eq NMatrix[[1.0], [5.0], stype: stype]
153
+ expect(res).to eq NMatrix[[1.0], [5.0], stype: stype]
154
154
  end
155
155
 
156
156
  it "should yield matrices of matching dtype for each_along_dim" do
157
157
  m = NMatrix.new([2,3], [1,2,3,3,4,5], dtype: :complex128, stype: stype)
158
158
  m.each_along_dim(1) do |sub_m|
159
- sub_m.dtype.should eq :complex128
159
+ expect(sub_m.dtype).to eq :complex128
160
160
  end
161
161
  end
162
162
 
163
163
  it "should reduce to a matrix of matching dtype for reduce_along_dim" do
164
164
  m = NMatrix.new([2,3], [1,2,3,3,4,5], dtype: :complex128, stype: stype)
165
165
  m.reduce_along_dim(1) do |acc, sub_m|
166
- sub_m.dtype.should eq :complex128
166
+ expect(sub_m.dtype).to eq :complex128
167
167
  acc
168
168
  end
169
169
 
170
170
  m = NMatrix.new([2,3], [1,2,3,3,4,5], dtype: :complex128, stype: stype)
171
171
  m.reduce_along_dim(1, 0.0) do |acc, sub_m|
172
- sub_m.dtype.should eq :complex128
172
+ expect(sub_m.dtype).to eq :complex128
173
173
  acc
174
174
  end
175
175
  end
@@ -177,30 +177,30 @@ describe "Statistical functions" do
177
177
  it "should allow overriding the dtype for reduce_along_dim" do
178
178
  m = NMatrix[[1,2,3], [3,4,5], dtype: :complex128]
179
179
  m.reduce_along_dim(1, 0.0, :float64) do |acc, sub_m|
180
- acc.dtype.should eq :float64
180
+ expect(acc.dtype).to eq :float64
181
181
  acc
182
182
  end
183
183
 
184
184
  m = NMatrix[[1,2,3], [3,4,5], dtype: :complex128, stype: stype]
185
185
  m.reduce_along_dim(1, nil, :float64) do |acc, sub_m|
186
- acc.dtype.should eq :float64
186
+ expect(acc.dtype).to eq :float64
187
187
  acc
188
188
  end
189
189
  end
190
190
 
191
191
  it "should convert integer dtypes to float when calculating mean" do
192
192
  m = NMatrix[[1,2,3], [3,4,5], dtype: :int32, stype: stype]
193
- m.mean(0).dtype.should eq :float64
193
+ expect(m.mean(0).dtype).to eq :float64
194
194
  end
195
195
 
196
196
  it "should convert integer dtypes to float when calculating variance" do
197
197
  m = NMatrix[[1,2,3], [3,4,5], dtype: :int32, stype: stype]
198
- m.variance(0).dtype.should eq :float64
198
+ expect(m.variance(0).dtype).to eq :float64
199
199
  end
200
200
 
201
201
  it "should convert integer dtypes to float when calculating standard deviation" do
202
202
  m = NMatrix[[1,2,3], [3,4,5], dtype: :int32, stype: stype]
203
- m.std(0).dtype.should eq :float64
203
+ expect(m.std(0).dtype).to eq :float64
204
204
  end
205
205
  end
206
206
  end