nmatrix-gemv 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +29 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +14 -0
  5. data/Gemfile +7 -0
  6. data/README.md +29 -0
  7. data/Rakefile +225 -0
  8. data/ext/nmatrix_gemv/binary_format.txt +53 -0
  9. data/ext/nmatrix_gemv/data/complex.h +399 -0
  10. data/ext/nmatrix_gemv/data/data.cpp +298 -0
  11. data/ext/nmatrix_gemv/data/data.h +771 -0
  12. data/ext/nmatrix_gemv/data/meta.h +70 -0
  13. data/ext/nmatrix_gemv/data/rational.h +436 -0
  14. data/ext/nmatrix_gemv/data/ruby_object.h +471 -0
  15. data/ext/nmatrix_gemv/extconf.rb +254 -0
  16. data/ext/nmatrix_gemv/math.cpp +1639 -0
  17. data/ext/nmatrix_gemv/math/asum.h +143 -0
  18. data/ext/nmatrix_gemv/math/geev.h +82 -0
  19. data/ext/nmatrix_gemv/math/gemm.h +271 -0
  20. data/ext/nmatrix_gemv/math/gemv.h +212 -0
  21. data/ext/nmatrix_gemv/math/ger.h +96 -0
  22. data/ext/nmatrix_gemv/math/gesdd.h +80 -0
  23. data/ext/nmatrix_gemv/math/gesvd.h +78 -0
  24. data/ext/nmatrix_gemv/math/getf2.h +86 -0
  25. data/ext/nmatrix_gemv/math/getrf.h +240 -0
  26. data/ext/nmatrix_gemv/math/getri.h +108 -0
  27. data/ext/nmatrix_gemv/math/getrs.h +129 -0
  28. data/ext/nmatrix_gemv/math/idamax.h +86 -0
  29. data/ext/nmatrix_gemv/math/inc.h +47 -0
  30. data/ext/nmatrix_gemv/math/laswp.h +165 -0
  31. data/ext/nmatrix_gemv/math/long_dtype.h +52 -0
  32. data/ext/nmatrix_gemv/math/math.h +1069 -0
  33. data/ext/nmatrix_gemv/math/nrm2.h +181 -0
  34. data/ext/nmatrix_gemv/math/potrs.h +129 -0
  35. data/ext/nmatrix_gemv/math/rot.h +141 -0
  36. data/ext/nmatrix_gemv/math/rotg.h +115 -0
  37. data/ext/nmatrix_gemv/math/scal.h +73 -0
  38. data/ext/nmatrix_gemv/math/swap.h +73 -0
  39. data/ext/nmatrix_gemv/math/trsm.h +387 -0
  40. data/ext/nmatrix_gemv/nm_memory.h +60 -0
  41. data/ext/nmatrix_gemv/nmatrix_gemv.cpp +90 -0
  42. data/ext/nmatrix_gemv/nmatrix_gemv.h +374 -0
  43. data/ext/nmatrix_gemv/ruby_constants.cpp +153 -0
  44. data/ext/nmatrix_gemv/ruby_constants.h +107 -0
  45. data/ext/nmatrix_gemv/ruby_nmatrix.c +84 -0
  46. data/ext/nmatrix_gemv/ttable_helper.rb +122 -0
  47. data/ext/nmatrix_gemv/types.h +54 -0
  48. data/ext/nmatrix_gemv/util/util.h +78 -0
  49. data/lib/nmatrix-gemv.rb +43 -0
  50. data/lib/nmatrix_gemv/blas.rb +85 -0
  51. data/lib/nmatrix_gemv/nmatrix_gemv.rb +35 -0
  52. data/lib/nmatrix_gemv/rspec.rb +75 -0
  53. data/nmatrix-gemv.gemspec +31 -0
  54. data/spec/blas_spec.rb +154 -0
  55. data/spec/spec_helper.rb +128 -0
  56. metadata +186 -0
@@ -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