nmatrix 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +27 -0
- data/.rspec +2 -0
- data/Gemfile +3 -5
- data/Guardfile +6 -0
- data/History.txt +33 -0
- data/Manifest.txt +41 -38
- data/README.rdoc +88 -11
- data/Rakefile +35 -53
- data/ext/nmatrix/data/complex.h +372 -0
- data/ext/nmatrix/data/data.cpp +275 -0
- data/ext/nmatrix/data/data.h +707 -0
- data/ext/nmatrix/data/rational.h +421 -0
- data/ext/nmatrix/data/ruby_object.h +446 -0
- data/ext/nmatrix/extconf.rb +101 -51
- data/ext/nmatrix/new_extconf.rb +56 -0
- data/ext/nmatrix/nmatrix.cpp +1609 -0
- data/ext/nmatrix/nmatrix.h +265 -849
- data/ext/nmatrix/ruby_constants.cpp +134 -0
- data/ext/nmatrix/ruby_constants.h +103 -0
- data/ext/nmatrix/storage/common.cpp +70 -0
- data/ext/nmatrix/storage/common.h +170 -0
- data/ext/nmatrix/storage/dense.cpp +665 -0
- data/ext/nmatrix/storage/dense.h +116 -0
- data/ext/nmatrix/storage/list.cpp +1088 -0
- data/ext/nmatrix/storage/list.h +129 -0
- data/ext/nmatrix/storage/storage.cpp +658 -0
- data/ext/nmatrix/storage/storage.h +99 -0
- data/ext/nmatrix/storage/yale.cpp +1601 -0
- data/ext/nmatrix/storage/yale.h +208 -0
- data/ext/nmatrix/ttable_helper.rb +126 -0
- data/ext/nmatrix/{yale/smmp1_header.template.c → types.h} +36 -9
- data/ext/nmatrix/util/io.cpp +295 -0
- data/ext/nmatrix/util/io.h +117 -0
- data/ext/nmatrix/util/lapack.h +1175 -0
- data/ext/nmatrix/util/math.cpp +557 -0
- data/ext/nmatrix/util/math.h +1363 -0
- data/ext/nmatrix/util/sl_list.cpp +475 -0
- data/ext/nmatrix/util/sl_list.h +255 -0
- data/ext/nmatrix/util/util.h +78 -0
- data/lib/nmatrix/blas.rb +70 -0
- data/lib/nmatrix/io/mat5_reader.rb +567 -0
- data/lib/nmatrix/io/mat_reader.rb +162 -0
- data/lib/{string.rb → nmatrix/monkeys.rb} +49 -2
- data/lib/nmatrix/nmatrix.rb +199 -0
- data/lib/nmatrix/nvector.rb +103 -0
- data/lib/nmatrix/version.rb +27 -0
- data/lib/nmatrix.rb +22 -230
- data/nmatrix.gemspec +59 -0
- data/scripts/mac-brew-gcc.sh +47 -0
- data/spec/4x4_sparse.mat +0 -0
- data/spec/4x5_dense.mat +0 -0
- data/spec/blas_spec.rb +47 -0
- data/spec/elementwise_spec.rb +164 -0
- data/spec/io_spec.rb +60 -0
- data/spec/lapack_spec.rb +52 -0
- data/spec/math_spec.rb +96 -0
- data/spec/nmatrix_spec.rb +93 -89
- data/spec/nmatrix_yale_spec.rb +52 -36
- data/spec/nvector_spec.rb +1 -1
- data/spec/slice_spec.rb +257 -0
- data/spec/spec_helper.rb +51 -0
- data/spec/utm5940.mtx +83844 -0
- metadata +113 -71
- data/.autotest +0 -23
- data/.gemtest +0 -0
- data/ext/nmatrix/cblas.c +0 -150
- data/ext/nmatrix/dense/blas_header.template.c +0 -52
- data/ext/nmatrix/dense/elementwise.template.c +0 -107
- data/ext/nmatrix/dense/gemm.template.c +0 -159
- data/ext/nmatrix/dense/gemv.template.c +0 -130
- data/ext/nmatrix/dense/rationalmath.template.c +0 -68
- data/ext/nmatrix/dense.c +0 -307
- data/ext/nmatrix/depend +0 -18
- data/ext/nmatrix/generator/syntax_tree.rb +0 -481
- data/ext/nmatrix/generator.rb +0 -594
- data/ext/nmatrix/list.c +0 -774
- data/ext/nmatrix/nmatrix.c +0 -1977
- data/ext/nmatrix/rational.c +0 -98
- data/ext/nmatrix/yale/complexmath.template.c +0 -71
- data/ext/nmatrix/yale/elementwise.template.c +0 -46
- data/ext/nmatrix/yale/elementwise_op.template.c +0 -73
- data/ext/nmatrix/yale/numbmm.template.c +0 -94
- data/ext/nmatrix/yale/smmp1.template.c +0 -21
- data/ext/nmatrix/yale/smmp2.template.c +0 -43
- data/ext/nmatrix/yale/smmp2_header.template.c +0 -46
- data/ext/nmatrix/yale/sort_columns.template.c +0 -56
- data/ext/nmatrix/yale/symbmm.template.c +0 -54
- data/ext/nmatrix/yale/transp.template.c +0 -68
- data/ext/nmatrix/yale.c +0 -726
- data/lib/array.rb +0 -67
- data/spec/syntax_tree_spec.rb +0 -46
metadata
CHANGED
@@ -1,112 +1,156 @@
|
|
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.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Woods
|
9
|
+
- Chris Wailes
|
10
|
+
- Aleksey Timin
|
9
11
|
autorequire:
|
10
12
|
bindir: bin
|
11
13
|
cert_chain: []
|
12
|
-
date: 2012-
|
14
|
+
date: 2012-09-21 00:00:00.000000000 Z
|
13
15
|
dependencies:
|
14
16
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
17
|
+
name: rake
|
18
|
+
requirement: &75615060 !ruby/object:Gem::Requirement
|
17
19
|
none: false
|
18
20
|
requirements:
|
19
21
|
- - ~>
|
20
22
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
23
|
+
version: '0.9'
|
22
24
|
type: :development
|
23
25
|
prerelease: false
|
24
|
-
version_requirements: *
|
26
|
+
version_requirements: *75615060
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement: &
|
28
|
+
name: bundler
|
29
|
+
requirement: &75614870 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *75614870
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: rspec
|
40
|
+
requirement: &75614590 !ruby/object:Gem::Requirement
|
28
41
|
none: false
|
29
42
|
requirements:
|
30
43
|
- - ~>
|
31
44
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
45
|
+
version: 2.9.0
|
33
46
|
type: :development
|
34
47
|
prerelease: false
|
35
|
-
version_requirements: *
|
48
|
+
version_requirements: *75614590
|
36
49
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement: &
|
50
|
+
name: pry
|
51
|
+
requirement: &75614320 !ruby/object:Gem::Requirement
|
39
52
|
none: false
|
40
53
|
requirements:
|
41
54
|
- - ~>
|
42
55
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
56
|
+
version: 0.9.9
|
44
57
|
type: :development
|
45
58
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
59
|
+
version_requirements: *75614320
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: guard-rspec
|
62
|
+
requirement: &75614020 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: 0.7.0
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *75614020
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: rake-compiler
|
73
|
+
requirement: &75613790 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 0.8.1
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *75613790
|
82
|
+
description: NMatrix is an experimental linear algebra library for Ruby, written mostly
|
83
|
+
in C.
|
57
84
|
email:
|
58
85
|
- john.o.woods@gmail.com
|
59
86
|
executables: []
|
60
87
|
extensions:
|
61
88
|
- ext/nmatrix/extconf.rb
|
62
|
-
extra_rdoc_files:
|
63
|
-
- History.txt
|
64
|
-
- Manifest.txt
|
65
|
-
- README.rdoc
|
66
|
-
- LICENSE.txt
|
89
|
+
extra_rdoc_files: []
|
67
90
|
files:
|
68
|
-
- .
|
91
|
+
- .gitignore
|
92
|
+
- .rspec
|
93
|
+
- Gemfile
|
94
|
+
- Guardfile
|
69
95
|
- History.txt
|
96
|
+
- LICENSE.txt
|
70
97
|
- Manifest.txt
|
71
98
|
- README.rdoc
|
72
|
-
- LICENSE.txt
|
73
99
|
- Rakefile
|
74
|
-
-
|
100
|
+
- ext/nmatrix/data/complex.h
|
101
|
+
- ext/nmatrix/data/data.cpp
|
102
|
+
- ext/nmatrix/data/data.h
|
103
|
+
- ext/nmatrix/data/rational.h
|
104
|
+
- ext/nmatrix/data/ruby_object.h
|
105
|
+
- ext/nmatrix/extconf.rb
|
106
|
+
- ext/nmatrix/new_extconf.rb
|
107
|
+
- ext/nmatrix/nmatrix.cpp
|
108
|
+
- ext/nmatrix/nmatrix.h
|
109
|
+
- ext/nmatrix/ruby_constants.cpp
|
110
|
+
- ext/nmatrix/ruby_constants.h
|
111
|
+
- ext/nmatrix/storage/common.cpp
|
112
|
+
- ext/nmatrix/storage/common.h
|
113
|
+
- ext/nmatrix/storage/dense.cpp
|
114
|
+
- ext/nmatrix/storage/dense.h
|
115
|
+
- ext/nmatrix/storage/list.cpp
|
116
|
+
- ext/nmatrix/storage/list.h
|
117
|
+
- ext/nmatrix/storage/storage.cpp
|
118
|
+
- ext/nmatrix/storage/storage.h
|
119
|
+
- ext/nmatrix/storage/yale.cpp
|
120
|
+
- ext/nmatrix/storage/yale.h
|
121
|
+
- ext/nmatrix/ttable_helper.rb
|
122
|
+
- ext/nmatrix/types.h
|
123
|
+
- ext/nmatrix/util/io.cpp
|
124
|
+
- ext/nmatrix/util/io.h
|
125
|
+
- ext/nmatrix/util/lapack.h
|
126
|
+
- ext/nmatrix/util/math.cpp
|
127
|
+
- ext/nmatrix/util/math.h
|
128
|
+
- ext/nmatrix/util/sl_list.cpp
|
129
|
+
- ext/nmatrix/util/sl_list.h
|
130
|
+
- ext/nmatrix/util/util.h
|
131
|
+
- lib/nmatrix.rb
|
132
|
+
- lib/nmatrix/blas.rb
|
133
|
+
- lib/nmatrix/io/mat5_reader.rb
|
134
|
+
- lib/nmatrix/io/mat_reader.rb
|
135
|
+
- lib/nmatrix/monkeys.rb
|
136
|
+
- lib/nmatrix/nmatrix.rb
|
137
|
+
- lib/nmatrix/nvector.rb
|
138
|
+
- lib/nmatrix/version.rb
|
139
|
+
- nmatrix.gemspec
|
140
|
+
- scripts/mac-brew-gcc.sh
|
141
|
+
- spec/4x4_sparse.mat
|
142
|
+
- spec/4x5_dense.mat
|
143
|
+
- spec/blas_spec.rb
|
144
|
+
- spec/elementwise_spec.rb
|
145
|
+
- spec/io_spec.rb
|
146
|
+
- spec/lapack_spec.rb
|
147
|
+
- spec/math_spec.rb
|
75
148
|
- spec/nmatrix_spec.rb
|
76
149
|
- spec/nmatrix_yale_spec.rb
|
77
150
|
- spec/nvector_spec.rb
|
78
|
-
- spec/
|
79
|
-
-
|
80
|
-
-
|
81
|
-
- lib/string.rb
|
82
|
-
- ext/nmatrix/cblas.c
|
83
|
-
- ext/nmatrix/dense.c
|
84
|
-
- ext/nmatrix/depend
|
85
|
-
- ext/nmatrix/extconf.rb
|
86
|
-
- ext/nmatrix/generator.rb
|
87
|
-
- ext/nmatrix/list.c
|
88
|
-
- ext/nmatrix/nmatrix.c
|
89
|
-
- ext/nmatrix/nmatrix.h
|
90
|
-
- ext/nmatrix/rational.c
|
91
|
-
- ext/nmatrix/yale.c
|
92
|
-
- ext/nmatrix/generator/syntax_tree.rb
|
93
|
-
- ext/nmatrix/dense/blas_header.template.c
|
94
|
-
- ext/nmatrix/dense/elementwise.template.c
|
95
|
-
- ext/nmatrix/dense/gemm.template.c
|
96
|
-
- ext/nmatrix/dense/gemv.template.c
|
97
|
-
- ext/nmatrix/dense/rationalmath.template.c
|
98
|
-
- ext/nmatrix/yale/smmp1.template.c
|
99
|
-
- ext/nmatrix/yale/smmp2.template.c
|
100
|
-
- ext/nmatrix/yale/smmp1_header.template.c
|
101
|
-
- ext/nmatrix/yale/smmp2_header.template.c
|
102
|
-
- ext/nmatrix/yale/sort_columns.template.c
|
103
|
-
- ext/nmatrix/yale/symbmm.template.c
|
104
|
-
- ext/nmatrix/yale/numbmm.template.c
|
105
|
-
- ext/nmatrix/yale/transp.template.c
|
106
|
-
- ext/nmatrix/yale/complexmath.template.c
|
107
|
-
- ext/nmatrix/yale/elementwise.template.c
|
108
|
-
- ext/nmatrix/yale/elementwise_op.template.c
|
109
|
-
- .gemtest
|
151
|
+
- spec/slice_spec.rb
|
152
|
+
- spec/spec_helper.rb
|
153
|
+
- spec/utm5940.mtx
|
110
154
|
homepage: http://sciruby.com
|
111
155
|
licenses: []
|
112
156
|
post_install_message: ! "***********************************************************\nWelcome
|
@@ -120,9 +164,7 @@ post_install_message: ! "*******************************************************
|
|
120
164
|
explicit instructions for NMatrix and SciRuby should\nbe available on the SciRuby
|
121
165
|
website, sciruby.com, or\nthrough our mailing list (which can be found on our web-\nsite).\n\nThanks
|
122
166
|
for trying out NMatrix! Happy coding!\n\n***********************************************************\n"
|
123
|
-
rdoc_options:
|
124
|
-
- --main
|
125
|
-
- README.rdoc
|
167
|
+
rdoc_options: []
|
126
168
|
require_paths:
|
127
169
|
- lib
|
128
170
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -130,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
130
172
|
requirements:
|
131
173
|
- - ! '>='
|
132
174
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
175
|
+
version: 1.9.2
|
134
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
177
|
none: false
|
136
178
|
requirements:
|
@@ -139,12 +181,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
181
|
version: '0'
|
140
182
|
segments:
|
141
183
|
- 0
|
142
|
-
hash: -
|
184
|
+
hash: -1003602253
|
143
185
|
requirements: []
|
144
|
-
rubyforge_project:
|
186
|
+
rubyforge_project:
|
145
187
|
rubygems_version: 1.8.10
|
146
188
|
signing_key:
|
147
189
|
specification_version: 3
|
148
190
|
summary: NMatrix is an experimental linear algebra library for Ruby, written mostly
|
149
|
-
in C
|
191
|
+
in C.
|
150
192
|
test_files: []
|
data/.autotest
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'autotest/restart'
|
4
|
-
|
5
|
-
# Autotest.add_hook :initialize do |at|
|
6
|
-
# at.extra_files << "../some/external/dependency.rb"
|
7
|
-
#
|
8
|
-
# at.libs << ":../some/external"
|
9
|
-
#
|
10
|
-
# at.add_exception 'vendor'
|
11
|
-
#
|
12
|
-
# at.add_mapping(/dependency.rb/) do |f, _|
|
13
|
-
# at.files_matching(/test_.*rb$/)
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# %w(TestA TestB).each do |klass|
|
17
|
-
# at.extra_class_map[klass] = "test/test_misc.rb"
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
|
21
|
-
# Autotest.add_hook :run_command do |at|
|
22
|
-
# system "rake build"
|
23
|
-
# end
|
data/.gemtest
DELETED
File without changes
|
data/ext/nmatrix/cblas.c
DELETED
@@ -1,150 +0,0 @@
|
|
1
|
-
/////////////////////////////////////////////////////////////////////
|
2
|
-
// = NMatrix
|
3
|
-
//
|
4
|
-
// A linear algebra library for scientific computation in Ruby.
|
5
|
-
// NMatrix is part of SciRuby.
|
6
|
-
//
|
7
|
-
// NMatrix was originally inspired by and derived from NArray, by
|
8
|
-
// Masahiro Tanaka: http://narray.rubyforge.org
|
9
|
-
//
|
10
|
-
// == Copyright Information
|
11
|
-
//
|
12
|
-
// SciRuby is Copyright (c) 2010 - 2012, Ruby Science Foundation
|
13
|
-
// NMatrix is Copyright (c) 2012, Ruby Science Foundation
|
14
|
-
//
|
15
|
-
// Please see LICENSE.txt for additional copyright notices.
|
16
|
-
//
|
17
|
-
// == Contributing
|
18
|
-
//
|
19
|
-
// By contributing source code to SciRuby, you agree to be bound by
|
20
|
-
// our Contributor Agreement:
|
21
|
-
//
|
22
|
-
// * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
|
23
|
-
//
|
24
|
-
// == cblas.c
|
25
|
-
//
|
26
|
-
// Functions in this file allow us to call CBLAS functions using
|
27
|
-
// arrays of function pointers, by ensuring that each has the same
|
28
|
-
// signature.
|
29
|
-
|
30
|
-
#ifndef CBLAS_C
|
31
|
-
# define CBLAS_C
|
32
|
-
|
33
|
-
#include <cblas.h>
|
34
|
-
#include "nmatrix.h"
|
35
|
-
|
36
|
-
//extern const enum CBLAS_ORDER;
|
37
|
-
//extern const enum CBLAS_TRANSPOSE;
|
38
|
-
|
39
|
-
|
40
|
-
inline void cblas_r32gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
41
|
-
if (Order == CblasColMajor) r32gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.r[0], p.A, p.lda, p.B, p.ldb, p.beta.r[0], p.C, p.ldc);
|
42
|
-
else r32gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.r[0], p.B, p.ldb, p.A, p.lda, p.beta.r[0], p.C, p.ldc);
|
43
|
-
}
|
44
|
-
|
45
|
-
inline void cblas_r32gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
46
|
-
r32gemv(TransA, p.M, p.N, p.alpha.r[0], p.A, p.lda, p.B, p.ldb, p.beta.r[0], p.C, p.ldc);
|
47
|
-
}
|
48
|
-
|
49
|
-
inline void cblas_r64gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
50
|
-
if (Order == CblasColMajor) r64gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.ra[0], p.A, p.lda, p.B, p.ldb, p.beta.ra[0], p.C, p.ldc);
|
51
|
-
else r64gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.ra[0], p.B, p.ldb, p.A, p.lda, p.beta.ra[0], p.C, p.ldc);
|
52
|
-
}
|
53
|
-
|
54
|
-
inline void cblas_r64gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
55
|
-
r64gemv(TransA, p.M, p.N, p.alpha.ra[0], p.A, p.lda, p.B, p.ldb, p.beta.ra[0], p.C, p.ldc);
|
56
|
-
}
|
57
|
-
|
58
|
-
inline void cblas_r128gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
59
|
-
if (Order == CblasColMajor) r128gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.rat, p.A, p.lda, p.B, p.ldb, p.beta.rat, p.C, p.ldc);
|
60
|
-
else r128gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.rat, p.B, p.ldb, p.A, p.lda, p.beta.rat, p.C, p.ldc);
|
61
|
-
}
|
62
|
-
|
63
|
-
inline void cblas_r128gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
64
|
-
r128gemv(TransA, p.M, p.N, p.alpha.rat, p.A, p.lda, p.B, p.ldb, p.beta.rat, p.C, p.ldc);
|
65
|
-
}
|
66
|
-
|
67
|
-
inline void cblas_bgemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
68
|
-
bgemv(TransA, p.M, p.N, p.alpha.b[0], p.A, p.lda, p.B, p.ldb, p.beta.b[0], p.C, p.ldc);
|
69
|
-
}
|
70
|
-
|
71
|
-
inline void cblas_bgemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
72
|
-
if (Order == CblasColMajor) bgemm(TransA, TransB, p.M, p.N, p.K, p.alpha.b[0], p.A, p.lda, p.B, p.ldb, p.beta.b[0], p.C, p.ldc);
|
73
|
-
else bgemm(TransB, TransA, p.N, p.M, p.K, p.alpha.b[0], p.B, p.ldb, p.A, p.lda, p.beta.b[0], p.C, p.ldc);
|
74
|
-
}
|
75
|
-
|
76
|
-
inline void cblas_i8gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
77
|
-
i8gemv(TransA, p.M, p.N, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
78
|
-
}
|
79
|
-
|
80
|
-
inline void cblas_i8gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
81
|
-
if (Order == CblasColMajor) i8gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
82
|
-
else i8gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.i[0], p.B, p.ldb, p.A, p.lda, p.beta.i[0], p.C, p.ldc);
|
83
|
-
}
|
84
|
-
|
85
|
-
inline void cblas_i16gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
86
|
-
i16gemv(TransA, p.M, p.N, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
87
|
-
}
|
88
|
-
|
89
|
-
inline void cblas_i16gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
90
|
-
if (Order == CblasColMajor) i16gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
91
|
-
else i16gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.i[0], p.B, p.ldb, p.A, p.lda, p.beta.i[0], p.C, p.ldc);
|
92
|
-
}
|
93
|
-
|
94
|
-
inline void cblas_i32gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
95
|
-
i32gemv(TransA, p.M, p.N, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
96
|
-
}
|
97
|
-
|
98
|
-
inline void cblas_i32gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
99
|
-
if (Order == CblasColMajor) i32gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
100
|
-
else i32gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.i[0], p.B, p.ldb, p.A, p.lda, p.beta.i[0], p.C, p.ldc);
|
101
|
-
}
|
102
|
-
|
103
|
-
inline void cblas_i64gemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
104
|
-
i64gemv(TransA, p.M, p.N, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
105
|
-
}
|
106
|
-
|
107
|
-
inline void cblas_i64gemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
108
|
-
if (Order == CblasColMajor) i64gemm(TransA, TransB, p.M, p.N, p.K, p.alpha.i[0], p.A, p.lda, p.B, p.ldb, p.beta.i[0], p.C, p.ldc);
|
109
|
-
else i64gemm(TransB, TransA, p.N, p.M, p.K, p.alpha.i[0], p.B, p.ldb, p.A, p.lda, p.beta.i[0], p.C, p.ldc);
|
110
|
-
}
|
111
|
-
|
112
|
-
inline void cblas_vgemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
113
|
-
if (Order == CblasColMajor) vgemm(TransA, TransB, p.M, p.N, p.K, p.alpha.v[0], p.A, p.lda, p.B, p.ldb, p.beta.v[0], p.C, p.ldc);
|
114
|
-
else vgemm(TransB, TransA, p.N, p.M, p.K, p.alpha.v[0], p.B, p.ldb, p.A, p.lda, p.beta.v[0], p.C, p.ldc);
|
115
|
-
}
|
116
|
-
|
117
|
-
inline void cblas_sgemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
118
|
-
cblas_sgemv(Order, TransA, p.M, p.N, p.alpha.d[0], p.A, p.lda, p.B, p.ldb, p.beta.d[0], p.C, p.ldc);
|
119
|
-
}
|
120
|
-
|
121
|
-
inline void cblas_sgemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
122
|
-
cblas_sgemm(Order, TransA, TransB, p.M, p.N, p.K, p.alpha.d[0], p.A, p.lda, p.B, p.ldb, p.beta.d[0], p.C, p.ldc);
|
123
|
-
}
|
124
|
-
|
125
|
-
inline void cblas_dgemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
126
|
-
cblas_dgemv(Order, TransA, p.M, p.N, p.alpha.d[0], p.A, p.lda, p.B, p.ldb, p.beta.d[0], p.C, p.ldc);
|
127
|
-
}
|
128
|
-
|
129
|
-
inline void cblas_dgemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
130
|
-
cblas_dgemm(Order, TransA, TransB, p.M, p.N, p.K, p.alpha.d[0], p.A, p.lda, p.B, p.ldb, p.beta.d[0], p.C, p.ldc);
|
131
|
-
}
|
132
|
-
|
133
|
-
inline void cblas_cgemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
134
|
-
cblas_cgemv(Order, TransA, p.M, p.N, &(p.alpha.c), p.A, p.lda, p.B, p.ldb, &(p.beta.c), p.C, p.ldc);
|
135
|
-
}
|
136
|
-
|
137
|
-
inline void cblas_cgemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
138
|
-
cblas_cgemm(Order, TransA, TransB, p.M, p.N, p.K, &(p.alpha.c), p.A, p.lda, p.B, p.ldb, &(p.beta.c), p.C, p.ldc);
|
139
|
-
}
|
140
|
-
|
141
|
-
inline void cblas_zgemv_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, DENSE_PARAM p) {
|
142
|
-
cblas_zgemv(Order, TransA, p.M, p.N, &(p.alpha.z), p.A, p.lda, p.B, p.ldb, &(p.beta.z), p.C, p.ldc);
|
143
|
-
}
|
144
|
-
|
145
|
-
inline void cblas_zgemm_(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, DENSE_PARAM p) {
|
146
|
-
cblas_zgemm(Order, TransA, TransB, p.M, p.N, p.K, &(p.alpha.z), p.A, p.lda, p.B, p.ldb, &(p.beta.z), p.C, p.ldc);
|
147
|
-
}
|
148
|
-
|
149
|
-
|
150
|
-
#endif
|
@@ -1,52 +0,0 @@
|
|
1
|
-
/////////////////////////////////////////////////////////////////////
|
2
|
-
// = NMatrix
|
3
|
-
//
|
4
|
-
// A linear algebra library for scientific computation in Ruby.
|
5
|
-
// NMatrix is part of SciRuby.
|
6
|
-
//
|
7
|
-
// NMatrix was originally inspired by and derived from NArray, by
|
8
|
-
// Masahiro Tanaka: http://narray.rubyforge.org
|
9
|
-
//
|
10
|
-
// == Copyright Information
|
11
|
-
//
|
12
|
-
// SciRuby is Copyright (c) 2010 - 2012, Ruby Science Foundation
|
13
|
-
// NMatrix is Copyright (c) 2012, Ruby Science Foundation
|
14
|
-
//
|
15
|
-
// Please see LICENSE.txt for additional copyright notices.
|
16
|
-
//
|
17
|
-
// == Contributing
|
18
|
-
//
|
19
|
-
// By contributing source code to SciRuby, you agree to be bound by
|
20
|
-
// our Contributor Agreement:
|
21
|
-
//
|
22
|
-
// * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
|
23
|
-
//
|
24
|
-
// == blas.c
|
25
|
-
//
|
26
|
-
// blas.c is automatically generated by generator.rb. Do not modify
|
27
|
-
// it directly!
|
28
|
-
//
|
29
|
-
// This file contains C ports of BLAS functions that work on integer
|
30
|
-
// types and eventually rationals. You can find the original template
|
31
|
-
// in ext/nmatrix/blas/igemm.template.c.
|
32
|
-
//
|
33
|
-
// The port was accomplished using f2c (on dgemm.f) and a magnifying
|
34
|
-
// glass.
|
35
|
-
//
|
36
|
-
// Note that this is in no way comparable to ATLAS. Why?
|
37
|
-
// * We didn't test any options other than CblasNoTrans (for A and B)
|
38
|
-
// * It doesn't use any of that cool cross-over crap (e.g.,
|
39
|
-
// Strassen's algorithm)
|
40
|
-
// * It really hasn't been tested exhaustively in any way, shape, or
|
41
|
-
// form.
|
42
|
-
//
|
43
|
-
// This file also contains rational math helper functions so that the
|
44
|
-
// aforementioned port will work with rationals too. These are in
|
45
|
-
// ext/nmatrix/blas/rationalmath.template.c. They are derived from
|
46
|
-
// rational.c in Ruby 1.9.3.
|
47
|
-
|
48
|
-
#include "nmatrix.h"
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
@@ -1,107 +0,0 @@
|
|
1
|
-
|
2
|
-
int nm_d_%%TYPE_ABBREV%%_elementwise(const %%TYPE%%* A, const %%TYPE%%* B, %%TYPE%%* C, size_t n, enum NMatrix_Ops op)
|
3
|
-
{
|
4
|
-
size_t i;
|
5
|
-
//fprintf(stderr, "elementwise: n=%d, op=%c\n", n, op);
|
6
|
-
|
7
|
-
switch (op) {
|
8
|
-
case '+':
|
9
|
-
for (i = 0; i < n; ++i) {
|
10
|
-
%%TYPE C[i] = A[i] + B[i]%%
|
11
|
-
}
|
12
|
-
break;
|
13
|
-
case '-':
|
14
|
-
for (i = 0; i < n; ++i) {
|
15
|
-
%%TYPE C[i] = A[i] - B[i]%%
|
16
|
-
}
|
17
|
-
break;
|
18
|
-
case '*':
|
19
|
-
for (i = 0; i < n; ++i) {
|
20
|
-
%%TYPE C[i] = A[i] * B[i]%%
|
21
|
-
}
|
22
|
-
break;
|
23
|
-
case '/':
|
24
|
-
for (i = 0; i < n; ++i) {
|
25
|
-
%%TYPE C[i] = A[i] / B[i]%%
|
26
|
-
}
|
27
|
-
break;
|
28
|
-
case '%':
|
29
|
-
for (i = 0; i < n; ++i) {
|
30
|
-
%%TYPE C[i] = A[i] % B[i]%%
|
31
|
-
}
|
32
|
-
break;
|
33
|
-
case '!':
|
34
|
-
for (i = 0; i < n; ++i) {
|
35
|
-
%%TYPE C[i] = !A[i]%%
|
36
|
-
}
|
37
|
-
break;
|
38
|
-
case NM_OP_NEG:
|
39
|
-
for (i = 0; i < n; ++i) {
|
40
|
-
%%TYPE C[i] = -A[i]%%
|
41
|
-
}
|
42
|
-
break;
|
43
|
-
case NM_OP_EQEQ:
|
44
|
-
for (i = 0; i < n; ++i) {
|
45
|
-
%%TYPE C[i] = A[i] == B[i]%%
|
46
|
-
}
|
47
|
-
break;
|
48
|
-
case NM_OP_NEQ:
|
49
|
-
for (i = 0; i < n; ++i) {
|
50
|
-
%%TYPE C[i] = A[i] != B[i]%%
|
51
|
-
}
|
52
|
-
break;
|
53
|
-
case '>':
|
54
|
-
for (i = 0; i < n; ++i) {
|
55
|
-
%%TYPE C[i] = A[i] > B[i]%%
|
56
|
-
}
|
57
|
-
break;
|
58
|
-
case '<':
|
59
|
-
for (i = 0; i < n; ++i) {
|
60
|
-
%%TYPE C[i] = A[i] < B[i]%%
|
61
|
-
}
|
62
|
-
break;
|
63
|
-
case NM_OP_GTE:
|
64
|
-
for (i = 0; i < n; ++i) {
|
65
|
-
%%TYPE C[i] = A[i] >= B[i]%%
|
66
|
-
}
|
67
|
-
break;
|
68
|
-
case NM_OP_LTE:
|
69
|
-
for (i = 0; i < n; ++i) {
|
70
|
-
%%TYPE C[i] = A[i] <= B[i]%%
|
71
|
-
}
|
72
|
-
break;
|
73
|
-
case '~':
|
74
|
-
for (i = 0; i < n; ++i) {
|
75
|
-
%%TYPE C[i] = ~A[i]%%
|
76
|
-
}
|
77
|
-
break;
|
78
|
-
case '&':
|
79
|
-
for (i = 0; i < n; ++i) {
|
80
|
-
%%TYPE C[i] = A[i] & B[i]%%
|
81
|
-
}
|
82
|
-
break;
|
83
|
-
case '|':
|
84
|
-
for (i = 0; i < n; ++i) {
|
85
|
-
%%TYPE C[i] = A[i] | B[i]%%
|
86
|
-
}
|
87
|
-
break;
|
88
|
-
case '^':
|
89
|
-
for (i = 0; i < n; ++i) {
|
90
|
-
%%TYPE C[i] = A[i] ^ B[i]%%
|
91
|
-
}
|
92
|
-
break;
|
93
|
-
case NM_OP_LSH:
|
94
|
-
for (i = 0; i < n; ++i) {
|
95
|
-
%%TYPE C[i] = A[i] << B[i]%%
|
96
|
-
}
|
97
|
-
break;
|
98
|
-
case NM_OP_RSH:
|
99
|
-
for (i = 0; i < n; ++i) {
|
100
|
-
%%TYPE C[i] = A[i] >> B[i]%%
|
101
|
-
}
|
102
|
-
break;
|
103
|
-
default:
|
104
|
-
rb_raise(rb_eNotImpError, "Unrecognized element-wise operator");
|
105
|
-
}
|
106
|
-
return 0;
|
107
|
-
}
|