nmatrix-gemv 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +29 -0
- data/.rspec +2 -0
- data/.travis.yml +14 -0
- data/Gemfile +7 -0
- data/README.md +29 -0
- data/Rakefile +225 -0
- data/ext/nmatrix_gemv/binary_format.txt +53 -0
- data/ext/nmatrix_gemv/data/complex.h +399 -0
- data/ext/nmatrix_gemv/data/data.cpp +298 -0
- data/ext/nmatrix_gemv/data/data.h +771 -0
- data/ext/nmatrix_gemv/data/meta.h +70 -0
- data/ext/nmatrix_gemv/data/rational.h +436 -0
- data/ext/nmatrix_gemv/data/ruby_object.h +471 -0
- data/ext/nmatrix_gemv/extconf.rb +254 -0
- data/ext/nmatrix_gemv/math.cpp +1639 -0
- data/ext/nmatrix_gemv/math/asum.h +143 -0
- data/ext/nmatrix_gemv/math/geev.h +82 -0
- data/ext/nmatrix_gemv/math/gemm.h +271 -0
- data/ext/nmatrix_gemv/math/gemv.h +212 -0
- data/ext/nmatrix_gemv/math/ger.h +96 -0
- data/ext/nmatrix_gemv/math/gesdd.h +80 -0
- data/ext/nmatrix_gemv/math/gesvd.h +78 -0
- data/ext/nmatrix_gemv/math/getf2.h +86 -0
- data/ext/nmatrix_gemv/math/getrf.h +240 -0
- data/ext/nmatrix_gemv/math/getri.h +108 -0
- data/ext/nmatrix_gemv/math/getrs.h +129 -0
- data/ext/nmatrix_gemv/math/idamax.h +86 -0
- data/ext/nmatrix_gemv/math/inc.h +47 -0
- data/ext/nmatrix_gemv/math/laswp.h +165 -0
- data/ext/nmatrix_gemv/math/long_dtype.h +52 -0
- data/ext/nmatrix_gemv/math/math.h +1069 -0
- data/ext/nmatrix_gemv/math/nrm2.h +181 -0
- data/ext/nmatrix_gemv/math/potrs.h +129 -0
- data/ext/nmatrix_gemv/math/rot.h +141 -0
- data/ext/nmatrix_gemv/math/rotg.h +115 -0
- data/ext/nmatrix_gemv/math/scal.h +73 -0
- data/ext/nmatrix_gemv/math/swap.h +73 -0
- data/ext/nmatrix_gemv/math/trsm.h +387 -0
- data/ext/nmatrix_gemv/nm_memory.h +60 -0
- data/ext/nmatrix_gemv/nmatrix_gemv.cpp +90 -0
- data/ext/nmatrix_gemv/nmatrix_gemv.h +374 -0
- data/ext/nmatrix_gemv/ruby_constants.cpp +153 -0
- data/ext/nmatrix_gemv/ruby_constants.h +107 -0
- data/ext/nmatrix_gemv/ruby_nmatrix.c +84 -0
- data/ext/nmatrix_gemv/ttable_helper.rb +122 -0
- data/ext/nmatrix_gemv/types.h +54 -0
- data/ext/nmatrix_gemv/util/util.h +78 -0
- data/lib/nmatrix-gemv.rb +43 -0
- data/lib/nmatrix_gemv/blas.rb +85 -0
- data/lib/nmatrix_gemv/nmatrix_gemv.rb +35 -0
- data/lib/nmatrix_gemv/rspec.rb +75 -0
- data/nmatrix-gemv.gemspec +31 -0
- data/spec/blas_spec.rb +154 -0
- data/spec/spec_helper.rb +128 -0
- metadata +186 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
# = NMatrix
|
2
|
+
#
|
3
|
+
# A linear algebra library for scientific computation in Ruby.
|
4
|
+
# NMatrix is part of SciRuby.
|
5
|
+
#
|
6
|
+
# NMatrix was originally inspired by and derived from NArray, by
|
7
|
+
# Masahiro Tanaka: http://narray.rubyforge.org
|
8
|
+
#
|
9
|
+
# == Copyright Information
|
10
|
+
#
|
11
|
+
# SciRuby is Copyright (c) 2010 - 2014, Ruby Science Foundation
|
12
|
+
# NMatrix is Copyright (c) 2012 - 2014, John Woods and the Ruby Science Foundation
|
13
|
+
#
|
14
|
+
# Please see LICENSE.txt for additional copyright notices.
|
15
|
+
#
|
16
|
+
# == Contributing
|
17
|
+
#
|
18
|
+
# By contributing source code to SciRuby, you agree to be bound by
|
19
|
+
# our Contributor Agreement:
|
20
|
+
#
|
21
|
+
# * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
|
22
|
+
#
|
23
|
+
# == spec_helper.rb
|
24
|
+
#
|
25
|
+
# Common data and helper functions for testing.
|
26
|
+
|
27
|
+
require "rspec/longrun"
|
28
|
+
#require "narray/narray"
|
29
|
+
|
30
|
+
require "./lib/nmatrix_gemv"
|
31
|
+
require "./lib/nmatrix_gemv/rspec"
|
32
|
+
|
33
|
+
MATRIX43A_ARRAY = [14.0, 9.0, 3.0, 2.0, 11.0, 15.0, 0.0, 12.0, 17.0, 5.0, 2.0, 3.0]
|
34
|
+
MATRIX32A_ARRAY = [12.0, 25.0, 9.0, 10.0, 8.0, 5.0]
|
35
|
+
|
36
|
+
COMPLEX_MATRIX43A_ARRAY = MATRIX43A_ARRAY.zip(MATRIX43A_ARRAY.reverse).collect { |ary| Complex(ary[0], ary[1]) }
|
37
|
+
COMPLEX_MATRIX32A_ARRAY = MATRIX32A_ARRAY.zip(MATRIX32A_ARRAY.reverse).collect { |ary| Complex(ary[0], -ary[1]) }
|
38
|
+
|
39
|
+
RATIONAL_MATRIX43A_ARRAY = MATRIX43A_ARRAY.collect { |x| x.to_r }
|
40
|
+
RATIONAL_MATRIX32A_ARRAY = MATRIX32A_ARRAY.collect { |x| x.to_r }
|
41
|
+
|
42
|
+
def create_matrix(stype) #:nodoc:
|
43
|
+
m = NMatrix.new([3,3], 0, dtype: :int32, stype: stype, default: 0)
|
44
|
+
|
45
|
+
m[0,0] = 0
|
46
|
+
m[0,1] = 1
|
47
|
+
m[0,2] = 2
|
48
|
+
m[1,0] = 3
|
49
|
+
m[1,1] = 4
|
50
|
+
m[1,2] = 5
|
51
|
+
m[2,0] = 6
|
52
|
+
m[2,1] = 7
|
53
|
+
m[2,2] = 8
|
54
|
+
|
55
|
+
m
|
56
|
+
end
|
57
|
+
|
58
|
+
def create_rectangular_matrix(stype) #:nodoc:
|
59
|
+
m = NMatrix.new([5,6], 0, dtype: :int32, stype: stype, default: 0)
|
60
|
+
|
61
|
+
m[0,0] = 1
|
62
|
+
m[0,1] = 2
|
63
|
+
m[0,2] = 3
|
64
|
+
m[0,3] = 4
|
65
|
+
m[0,4] = 5
|
66
|
+
m[0,5] = 0
|
67
|
+
|
68
|
+
m[1,0] = 6
|
69
|
+
m[1,1] = 7
|
70
|
+
m[1,2] = 8
|
71
|
+
m[1,3] = 9
|
72
|
+
m[1,4] = 0
|
73
|
+
m[1,5] = 10
|
74
|
+
|
75
|
+
m[2,0] = 11
|
76
|
+
m[2,1] = 12
|
77
|
+
m[2,2] = 13
|
78
|
+
m[2,3] = 0
|
79
|
+
m[2,4] = 14
|
80
|
+
m[2,5] = 15
|
81
|
+
|
82
|
+
# skip row 3 -- all 0
|
83
|
+
m[3,0] = m[3,1] = m[3,2] = m[3,3] = m[3,4] = m[3,5] = 0
|
84
|
+
|
85
|
+
m[4,0] = 16
|
86
|
+
m[4,1] = 0
|
87
|
+
m[4,2] = 17
|
88
|
+
m[4,3] = 18
|
89
|
+
m[4,4] = 19
|
90
|
+
m[4,5] = 20
|
91
|
+
|
92
|
+
m
|
93
|
+
end
|
94
|
+
|
95
|
+
def create_vector(stype) #:nodoc:
|
96
|
+
m = stype == :yale ? NVector.new(stype, 10, :int32) : NVector.new(stype, 10, 0, :int32)
|
97
|
+
|
98
|
+
m[0] = 1
|
99
|
+
m[1] = 2
|
100
|
+
m[2] = 3
|
101
|
+
m[3] = 4
|
102
|
+
m[4] = 5
|
103
|
+
m[5] = 6
|
104
|
+
m[6] = 7
|
105
|
+
m[7] = 8
|
106
|
+
m[8] = 9
|
107
|
+
m[9] = 10
|
108
|
+
|
109
|
+
m
|
110
|
+
end
|
111
|
+
|
112
|
+
# Stupid but independent comparison for slice_spec
|
113
|
+
def nm_eql(n, m) #:nodoc:
|
114
|
+
if n.shape != m.shape
|
115
|
+
false
|
116
|
+
else # NMatrix
|
117
|
+
n.shape[0].times do |i|
|
118
|
+
n.shape[1].times do |j|
|
119
|
+
if n[i,j] != m[i,j]
|
120
|
+
puts "n[#{i},#{j}] != m[#{i},#{j}] (#{n[i,j]} != #{m[i,j]})"
|
121
|
+
return false
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
true
|
127
|
+
end
|
128
|
+
|
metadata
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nmatrix-gemv
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Terence Ng
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rdoc
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-longrun
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake-compiler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.8.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.8.1
|
97
|
+
description: provide gemv function to NMatrix, just require 'nmatrix-gemv' in file
|
98
|
+
to use.
|
99
|
+
email:
|
100
|
+
- pheotiman@gmail.com
|
101
|
+
executables: []
|
102
|
+
extensions:
|
103
|
+
- ext/nmatrix_gemv/extconf.rb
|
104
|
+
extra_rdoc_files: []
|
105
|
+
files:
|
106
|
+
- .gitignore
|
107
|
+
- .rspec
|
108
|
+
- .travis.yml
|
109
|
+
- Gemfile
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
112
|
+
- ext/nmatrix_gemv/binary_format.txt
|
113
|
+
- ext/nmatrix_gemv/data/complex.h
|
114
|
+
- ext/nmatrix_gemv/data/data.cpp
|
115
|
+
- ext/nmatrix_gemv/data/data.h
|
116
|
+
- ext/nmatrix_gemv/data/meta.h
|
117
|
+
- ext/nmatrix_gemv/data/rational.h
|
118
|
+
- ext/nmatrix_gemv/data/ruby_object.h
|
119
|
+
- ext/nmatrix_gemv/extconf.rb
|
120
|
+
- ext/nmatrix_gemv/math.cpp
|
121
|
+
- ext/nmatrix_gemv/math/asum.h
|
122
|
+
- ext/nmatrix_gemv/math/geev.h
|
123
|
+
- ext/nmatrix_gemv/math/gemm.h
|
124
|
+
- ext/nmatrix_gemv/math/gemv.h
|
125
|
+
- ext/nmatrix_gemv/math/ger.h
|
126
|
+
- ext/nmatrix_gemv/math/gesdd.h
|
127
|
+
- ext/nmatrix_gemv/math/gesvd.h
|
128
|
+
- ext/nmatrix_gemv/math/getf2.h
|
129
|
+
- ext/nmatrix_gemv/math/getrf.h
|
130
|
+
- ext/nmatrix_gemv/math/getri.h
|
131
|
+
- ext/nmatrix_gemv/math/getrs.h
|
132
|
+
- ext/nmatrix_gemv/math/idamax.h
|
133
|
+
- ext/nmatrix_gemv/math/inc.h
|
134
|
+
- ext/nmatrix_gemv/math/laswp.h
|
135
|
+
- ext/nmatrix_gemv/math/long_dtype.h
|
136
|
+
- ext/nmatrix_gemv/math/math.h
|
137
|
+
- ext/nmatrix_gemv/math/nrm2.h
|
138
|
+
- ext/nmatrix_gemv/math/potrs.h
|
139
|
+
- ext/nmatrix_gemv/math/rot.h
|
140
|
+
- ext/nmatrix_gemv/math/rotg.h
|
141
|
+
- ext/nmatrix_gemv/math/scal.h
|
142
|
+
- ext/nmatrix_gemv/math/swap.h
|
143
|
+
- ext/nmatrix_gemv/math/trsm.h
|
144
|
+
- ext/nmatrix_gemv/nm_memory.h
|
145
|
+
- ext/nmatrix_gemv/nmatrix_gemv.cpp
|
146
|
+
- ext/nmatrix_gemv/nmatrix_gemv.h
|
147
|
+
- ext/nmatrix_gemv/ruby_constants.cpp
|
148
|
+
- ext/nmatrix_gemv/ruby_constants.h
|
149
|
+
- ext/nmatrix_gemv/ruby_nmatrix.c
|
150
|
+
- ext/nmatrix_gemv/ttable_helper.rb
|
151
|
+
- ext/nmatrix_gemv/types.h
|
152
|
+
- ext/nmatrix_gemv/util/util.h
|
153
|
+
- lib/nmatrix-gemv.rb
|
154
|
+
- lib/nmatrix_gemv/blas.rb
|
155
|
+
- lib/nmatrix_gemv/nmatrix_gemv.rb
|
156
|
+
- lib/nmatrix_gemv/rspec.rb
|
157
|
+
- nmatrix-gemv.gemspec
|
158
|
+
- spec/blas_spec.rb
|
159
|
+
- spec/spec_helper.rb
|
160
|
+
homepage: http://sciruby.com
|
161
|
+
licenses:
|
162
|
+
- BSD 2-clause
|
163
|
+
metadata: {}
|
164
|
+
post_install_message:
|
165
|
+
rdoc_options: []
|
166
|
+
require_paths:
|
167
|
+
- lib
|
168
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '1.9'
|
173
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
requirements: []
|
179
|
+
rubyforge_project:
|
180
|
+
rubygems_version: 2.0.4
|
181
|
+
signing_key:
|
182
|
+
specification_version: 4
|
183
|
+
summary: blas gemv function interface for NMatrix
|
184
|
+
test_files:
|
185
|
+
- spec/blas_spec.rb
|
186
|
+
- spec/spec_helper.rb
|