nmatrix 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/History.txt +102 -10
- data/README.rdoc +24 -32
- data/Rakefile +1 -1
- data/ext/nmatrix/data/complex.h +9 -0
- data/ext/nmatrix/data/data.cpp +78 -4
- data/ext/nmatrix/data/data.h +86 -54
- data/ext/nmatrix/data/rational.h +2 -0
- data/ext/nmatrix/data/ruby_object.h +38 -8
- data/ext/nmatrix/extconf.rb +13 -7
- data/ext/nmatrix/nmatrix.cpp +262 -139
- data/ext/nmatrix/nmatrix.h +11 -4
- data/ext/nmatrix/storage/common.cpp +20 -13
- data/ext/nmatrix/storage/common.h +18 -12
- data/ext/nmatrix/storage/dense.cpp +122 -192
- data/ext/nmatrix/storage/dense.h +4 -2
- data/ext/nmatrix/storage/list.cpp +467 -636
- data/ext/nmatrix/storage/list.h +6 -3
- data/ext/nmatrix/storage/storage.cpp +83 -46
- data/ext/nmatrix/storage/storage.h +7 -7
- data/ext/nmatrix/storage/yale.cpp +621 -361
- data/ext/nmatrix/storage/yale.h +21 -9
- data/ext/nmatrix/ttable_helper.rb +27 -31
- data/ext/nmatrix/types.h +1 -1
- data/ext/nmatrix/util/math.cpp +9 -10
- data/ext/nmatrix/util/sl_list.cpp +1 -7
- data/ext/nmatrix/util/sl_list.h +0 -118
- data/lib/nmatrix/blas.rb +59 -18
- data/lib/nmatrix/monkeys.rb +0 -52
- data/lib/nmatrix/nmatrix.rb +136 -9
- data/lib/nmatrix/nvector.rb +33 -0
- data/lib/nmatrix/shortcuts.rb +95 -16
- data/lib/nmatrix/version.rb +1 -1
- data/lib/nmatrix/yale_functions.rb +25 -19
- data/spec/blas_spec.rb +1 -19
- data/spec/elementwise_spec.rb +132 -17
- data/spec/lapack_spec.rb +0 -3
- data/spec/nmatrix_list_spec.rb +18 -0
- data/spec/nmatrix_spec.rb +44 -18
- data/spec/nmatrix_yale_spec.rb +1 -3
- data/spec/shortcuts_spec.rb +26 -36
- data/spec/slice_spec.rb +2 -4
- metadata +2 -2
data/spec/nmatrix_yale_spec.rb
CHANGED
@@ -57,9 +57,7 @@ describe NMatrix do
|
|
57
57
|
n[0,1] = 1
|
58
58
|
m = NMatrix.new(:yale, [2,2], :float64)
|
59
59
|
m[0,1] = -1
|
60
|
-
|
61
|
-
r[0,1] = 0
|
62
|
-
(n+m).should == r
|
60
|
+
(n+m).should == NMatrix.new(:yale, [2,2], :float64)
|
63
61
|
end
|
64
62
|
|
65
63
|
it "sets diagonal values" do
|
data/spec/shortcuts_spec.rb
CHANGED
@@ -51,6 +51,21 @@ describe NMatrix do
|
|
51
51
|
m.should.eql? identity3
|
52
52
|
end
|
53
53
|
|
54
|
+
it "diag() creates a matrix with pre-supplied diagonal" do
|
55
|
+
arr = [1,2,3,4]
|
56
|
+
m = NMatrix.diag(arr)
|
57
|
+
m.is_a?(NMatrix).should be_true
|
58
|
+
end
|
59
|
+
|
60
|
+
it "diagonals() contains the seeded values on the diagonal" do
|
61
|
+
arr = [1,2,3,4]
|
62
|
+
m = NMatrix.diagonals(arr)
|
63
|
+
m[0,0].should eq(arr[0])
|
64
|
+
m[1,1].should eq(arr[1])
|
65
|
+
m[2,2].should eq(arr[2])
|
66
|
+
m[3,3].should eq(arr[3])
|
67
|
+
end
|
68
|
+
|
54
69
|
it "random() creates a matrix of random numbers" do
|
55
70
|
m = NMatrix.random(2)
|
56
71
|
|
@@ -201,12 +216,7 @@ describe "NVector" do
|
|
201
216
|
|
202
217
|
it "seq() creates a vector of integers, sequentially" do
|
203
218
|
v = NVector.seq(7)
|
204
|
-
|
205
|
-
|
206
|
-
v.each do |elem|
|
207
|
-
elem.should == i
|
208
|
-
i += 1
|
209
|
-
end
|
219
|
+
v.should == NVector.new(7, [0, 1, 2, 3, 4, 5, 6], :int64)
|
210
220
|
end
|
211
221
|
|
212
222
|
it "seq() only accepts integers as dimension" do
|
@@ -218,52 +228,32 @@ describe "NVector" do
|
|
218
228
|
|
219
229
|
it "indgen() creates a vector of integers as well as seq()" do
|
220
230
|
v = NVector.indgen(7)
|
221
|
-
|
222
|
-
|
223
|
-
v.each do |elem|
|
224
|
-
elem.should == i
|
225
|
-
i += 1
|
226
|
-
end
|
231
|
+
v.should == NVector.new(7, [0, 1, 2, 3, 4, 5, 6], :int64)
|
227
232
|
end
|
228
233
|
|
229
234
|
it "findgen creates a vector of floats, sequentially" do
|
230
235
|
v = NVector.findgen(2)
|
231
|
-
|
232
|
-
2.times do |i|
|
233
|
-
(v[i]/10).should be_within(Float::EPSILON).of(i.to_f/10)
|
234
|
-
end
|
236
|
+
v.should == NVector.new(2, [0.0, 1.0], :float32)
|
235
237
|
end
|
236
238
|
|
237
239
|
it "bindgen() creates a vector of bytes, sequentially" do
|
238
|
-
v = NVector.bindgen(
|
239
|
-
|
240
|
-
|
241
|
-
v.each do |elem|
|
242
|
-
elem.should == i
|
243
|
-
i += 1
|
244
|
-
end
|
240
|
+
v = NVector.bindgen(4)
|
241
|
+
v.should == NVector.new(4, [0, 1, 2, 3], :byte)
|
245
242
|
end
|
246
243
|
|
247
244
|
it "cindgen() creates a vector of complexes, sequentially" do
|
248
245
|
v = NVector.cindgen(2)
|
249
|
-
|
250
|
-
|
251
|
-
2.times do |i|
|
252
|
-
v[i].real.should be_within(Float::EPSILON).of(value)
|
253
|
-
v[i].imag.should be_within(Float::EPSILON).of(0.0)
|
254
|
-
value += 1
|
255
|
-
end
|
246
|
+
v.should == NVector.new(2, [Complex(0.0, 0.0), Complex(1.0, 0.0)], :complex64)
|
256
247
|
end
|
257
248
|
|
258
|
-
|
259
249
|
it "linspace() creates a vector with n values equally spaced between a and b" do
|
260
250
|
v = NVector.linspace(0, 2, 5)
|
261
|
-
|
251
|
+
v.should == NVector.new(5, [0, 0.5, 1.0, 1.5, 2.0], :float64)
|
252
|
+
end
|
262
253
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
end
|
254
|
+
it "logspace() creates a vector with n values logarithmically spaced between decades 10^a and 10^b" do
|
255
|
+
v = NVector.logspace(0, 3, 4)
|
256
|
+
v.should == NVector.new(4, [1, 10, 100, 1000], :float64)
|
267
257
|
end
|
268
258
|
end
|
269
259
|
|
data/spec/slice_spec.rb
CHANGED
@@ -157,8 +157,6 @@ describe "Slice operation" do
|
|
157
157
|
@m[0,1].should eql(-9)
|
158
158
|
end
|
159
159
|
|
160
|
-
it 'should set value from NMatrix'
|
161
|
-
|
162
160
|
it 'should slice again' do
|
163
161
|
n = @m[1..2, 1..2]
|
164
162
|
nm_eql(n[1,0..1], NVector.new(2, [7,8], :int32).transpose).should be_true
|
@@ -224,11 +222,11 @@ describe "Slice operation" do
|
|
224
222
|
(N[[0,0,0]] + @m[1,0..2]).should eq N[[3, 4, 5]]
|
225
223
|
end
|
226
224
|
|
227
|
-
it "scalar adds to slices" do
|
225
|
+
it "scalar adds to slices" do
|
228
226
|
(@m[1,0..2]+1).should eq N[[4, 5, 6]]
|
229
227
|
end
|
230
228
|
|
231
|
-
it "compares slices to scalars" do
|
229
|
+
it "compares slices to scalars" do
|
232
230
|
(@m[1, 0..2] > 2).each { |e| (e != 0).should be_true }
|
233
231
|
end
|
234
232
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nmatrix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Woods
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-08-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rdoc
|