nmatrix 0.1.0.rc1 → 0.1.0.rc2

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.
@@ -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