nmatrix-gemv 0.0.3

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