numo-linalg 0.1.0 → 0.1.1
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/README.md +7 -7
- data/ext/numo/linalg/blas/gen/cogen.rb +2 -4
- data/ext/numo/linalg/blas/gen/decl.rb +1 -1
- data/ext/numo/linalg/blas/gen/erbln.rb +132 -0
- data/ext/numo/linalg/blas/gen/erbpp2.rb +7 -2
- data/ext/numo/linalg/lapack/gen/cogen.rb +2 -3
- data/lib/numo/linalg/autoloader.rb +142 -0
- data/lib/numo/linalg/function.rb +3 -3
- data/lib/numo/linalg/version.rb +1 -1
- data/numo-linalg.gemspec +1 -1
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a9f783654dbe1c2f8ca4dbeef4030053d8e8c92a99f1ccf0fa0ecd551c90f90
|
4
|
+
data.tar.gz: 46f3558e6bd86db15fb0d3ab9558e1f4e565ca844db500684b9eaac0e6ec57c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1c478c9f017babd63b40dcea4eeb6ca9222226f680cc6870b01c1f305f54080ab7c035ead34c39d9f70aa431c6b2d9c9ec1be0642f7bab66eea32ee97c39363
|
7
|
+
data.tar.gz: d55a4aa11afffbb51486007df3c80b221a3e90e990e86b76eadc996d560abf8d3e16df62aa25e3f65f050175dca8d45d5b791c1dc4b2b2c3ac66031da0c70c7b
|
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# Numo::Linalg : Linear Algebra library with BLAS/LAPACK binding to Numo::NArray
|
2
2
|
|
3
|
-
[](http://mybinder.org/repo/ruby-numo/linalg)
|
4
|
-
[](https://travis-ci.org/ruby-numo/linalg)
|
3
|
+
[](http://mybinder.org/repo/ruby-numo/numo-linalg)
|
4
|
+
[](https://travis-ci.org/ruby-numo/numo-linalg)
|
5
5
|
|
6
|
-
[GitHub](https://github.com/ruby-numo/linalg) |
|
7
|
-
[RubyGems](https://
|
6
|
+
[GitHub](https://github.com/ruby-numo/numo-linalg) |
|
7
|
+
[RubyGems](https://rubygems.org/gems/numo-linalg)
|
8
8
|
|
9
9
|
Under development!
|
10
10
|
|
@@ -49,7 +49,7 @@ This desgin allows you to change backend libraries without re-compiling.
|
|
49
49
|
* [Intel MKL](https://software.intel.com/intel-mkl)
|
50
50
|
|
51
51
|
* Note that the performance depends on the backend library as shown in
|
52
|
-
[benchmark](https://github.com/ruby-numo/linalg/tree/master/bench).
|
52
|
+
[benchmark](https://github.com/ruby-numo/numo-linalg/tree/master/bench).
|
53
53
|
|
54
54
|
* Install Numo::Linalg
|
55
55
|
|
@@ -60,7 +60,7 @@ $ gem install numo-linalg
|
|
60
60
|
or
|
61
61
|
|
62
62
|
```shell
|
63
|
-
$ git clone https://github.com/ruby-numo/linalg.git
|
63
|
+
$ git clone https://github.com/ruby-numo/numo-linalg.git
|
64
64
|
$ cd linalg
|
65
65
|
$ rake build
|
66
66
|
$ gem install pkg/numo-linalg-*.gem
|
@@ -74,7 +74,7 @@ $ gem install pkg/numo-linalg-*.gem
|
|
74
74
|
require "numo/linalg"
|
75
75
|
```
|
76
76
|
|
77
|
-
* Read also instruction for [Selecting Backend Library](https://github.com/ruby-numo/linalg/tree/master/doc/select-backend.md).
|
77
|
+
* Read also instruction for [Selecting Backend Library](https://github.com/ruby-numo/numo-linalg/tree/master/doc/select-backend.md).
|
78
78
|
|
79
79
|
## Authors
|
80
80
|
|
@@ -1,14 +1,12 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
|
3
3
|
pwd = File.dirname(__FILE__)
|
4
|
-
#libpath = File.absolute_path(File.dirname(__FILE__))+"/../../../../lib"
|
5
|
-
#$LOAD_PATH.unshift libpath
|
6
4
|
|
7
5
|
require_relative "./decl"
|
8
6
|
|
9
7
|
while true
|
10
8
|
if ARGV[0] == "-l"
|
11
|
-
|
9
|
+
$line_number = true
|
12
10
|
ARGV.shift
|
13
11
|
elsif ARGV[0] == "-o"
|
14
12
|
ARGV.shift
|
@@ -31,12 +29,12 @@ erb_dir = ["../tmpl"]
|
|
31
29
|
erb_dir.map!{|d| File.join(pwd,d)}
|
32
30
|
|
33
31
|
code = DefLib.new do
|
32
|
+
set line_number: $line_number
|
34
33
|
set erb_dir: erb_dir
|
35
34
|
set erb_suffix: ".c"
|
36
35
|
set ns_var: "mN"
|
37
36
|
|
38
37
|
set file_name: $output || ""
|
39
|
-
#set include_files: ["numo/types/#{type_name}.h"]
|
40
38
|
set lib_name: "numo_linalg_blas_"+blas_char
|
41
39
|
|
42
40
|
def_module do
|
@@ -0,0 +1,132 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
class ErbPP
|
4
|
+
|
5
|
+
class CountLnString < String
|
6
|
+
|
7
|
+
def initialize(filename)
|
8
|
+
@filename = filename
|
9
|
+
@lnchar = "\n"
|
10
|
+
@buf = ""
|
11
|
+
@str = ""
|
12
|
+
@countln = 1
|
13
|
+
@current = 1
|
14
|
+
super("\n"+report_line)
|
15
|
+
end
|
16
|
+
|
17
|
+
def report_line
|
18
|
+
"#line #{@current} \"#{@filename}\"\n"
|
19
|
+
end
|
20
|
+
|
21
|
+
def concat0(s)
|
22
|
+
ln(caller[0])
|
23
|
+
@buf.concat(s)
|
24
|
+
@str.concat(s)
|
25
|
+
end
|
26
|
+
|
27
|
+
def concat1(s)
|
28
|
+
ln(caller[0])
|
29
|
+
@buf.concat(s)
|
30
|
+
end
|
31
|
+
|
32
|
+
def ln(status=nil)
|
33
|
+
case status
|
34
|
+
when /:(\d+):/
|
35
|
+
n = $1.to_i
|
36
|
+
else
|
37
|
+
n = status.to_i
|
38
|
+
end
|
39
|
+
return if n == @current
|
40
|
+
if @current != @countln || @postpone
|
41
|
+
if /\A\s*\z/ =~ @str || /\A#line / =~ @buf
|
42
|
+
@postpone = true
|
43
|
+
elsif @in_comment
|
44
|
+
@postpone = false
|
45
|
+
else
|
46
|
+
if self[-1] != "\n"
|
47
|
+
concat("\n")
|
48
|
+
end
|
49
|
+
concat(report_line)
|
50
|
+
@postpone = false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
concat(@buf)
|
54
|
+
|
55
|
+
b = @buf.gsub(/".*?(?<!\\)"/,'""')
|
56
|
+
/^.*(\/\*)(.*?)$/ =~ b
|
57
|
+
x = $2
|
58
|
+
/^.*(\*\/)(.*?)$/ =~ b
|
59
|
+
y = $2
|
60
|
+
if x
|
61
|
+
if y
|
62
|
+
if x.size < y.size
|
63
|
+
#:in_comment
|
64
|
+
@in_comment = true
|
65
|
+
else
|
66
|
+
#:out_comment
|
67
|
+
@in_comment = false
|
68
|
+
end
|
69
|
+
else
|
70
|
+
#:in_comment
|
71
|
+
@in_comment = true
|
72
|
+
end
|
73
|
+
else
|
74
|
+
if y
|
75
|
+
#:out_comment
|
76
|
+
@in_comment = false
|
77
|
+
else
|
78
|
+
#:keep
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
@countln = @current + @buf.count(@lnchar)
|
83
|
+
@current = n
|
84
|
+
@buf = ""
|
85
|
+
@str = ""
|
86
|
+
end
|
87
|
+
|
88
|
+
def d(s)
|
89
|
+
p [s, [x,y], r]
|
90
|
+
r
|
91
|
+
end
|
92
|
+
|
93
|
+
def final
|
94
|
+
ln(caller[0])
|
95
|
+
concat(@buf)
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
class ERBLN
|
101
|
+
|
102
|
+
def initialize(str, filename, trim_mode=nil, eoutvar='_erbout')
|
103
|
+
@filename = filename
|
104
|
+
compiler = ERB::Compiler.new(trim_mode)
|
105
|
+
set_eoutvar(compiler, eoutvar)
|
106
|
+
@src, @enc = *compiler.compile(str)
|
107
|
+
end
|
108
|
+
|
109
|
+
def set_eoutvar(compiler, eoutvar = '_erbout')
|
110
|
+
compiler.put_cmd = "#{eoutvar}.concat0"
|
111
|
+
compiler.insert_cmd = "#{eoutvar}.concat1"
|
112
|
+
compiler.pre_cmd = ["#{eoutvar} = CountLnString.new(#{@filename.inspect})"]
|
113
|
+
compiler.post_cmd = ["#{eoutvar}.final"]
|
114
|
+
end
|
115
|
+
|
116
|
+
def run(b)
|
117
|
+
print self.result(b)
|
118
|
+
end
|
119
|
+
|
120
|
+
def result(b)
|
121
|
+
#open("tmpout","a") do |f|
|
122
|
+
# f.puts "\n#file:#{@filename}"
|
123
|
+
# f.puts @src
|
124
|
+
#end
|
125
|
+
eval(@src, b, (@filename || '(erb)'), 0)
|
126
|
+
end
|
127
|
+
|
128
|
+
#require "fileutils"
|
129
|
+
#FileUtils.rm_f("tmpout")
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "erb"
|
2
|
+
require_relative "erbln"
|
2
3
|
|
3
4
|
class ErbPP
|
4
5
|
|
@@ -66,8 +67,12 @@ class ErbPP
|
|
66
67
|
Dir.glob(x).each do |dir|
|
67
68
|
path = File.join(dir,file)
|
68
69
|
if File.exist?(path)
|
69
|
-
|
70
|
-
|
70
|
+
if get(:line_number)
|
71
|
+
erb = ERBLN.new(File.read(path), path, trim_mode)
|
72
|
+
else
|
73
|
+
erb = ERB.new(File.read(path), safe_level, trim_mode)
|
74
|
+
erb.filename = path
|
75
|
+
end
|
71
76
|
return erb
|
72
77
|
end
|
73
78
|
end
|
@@ -1,14 +1,12 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
|
3
3
|
pwd = File.dirname(__FILE__)
|
4
|
-
#libpath = File.absolute_path(File.dirname(__FILE__))+"/../../../../lib"
|
5
|
-
#$LOAD_PATH.unshift libpath
|
6
4
|
|
7
5
|
require_relative "../../blas/gen/decl"
|
8
6
|
|
9
7
|
while true
|
10
8
|
if ARGV[0] == "-l"
|
11
|
-
|
9
|
+
$line_number = true
|
12
10
|
ARGV.shift
|
13
11
|
elsif ARGV[0] == "-o"
|
14
12
|
ARGV.shift
|
@@ -31,6 +29,7 @@ erb_dir = ["../tmpl"]
|
|
31
29
|
erb_dir.map!{|d| File.join(pwd,d)}
|
32
30
|
|
33
31
|
code = DefLib.new do
|
32
|
+
set line_number: $line_number
|
34
33
|
set erb_dir: erb_dir
|
35
34
|
set erb_suffix: ".c"
|
36
35
|
set ns_var: "mN"
|
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'fiddle'
|
2
|
+
require 'rbconfig'
|
3
|
+
require 'numo/linalg/linalg'
|
4
|
+
|
5
|
+
module Numo
|
6
|
+
module Linalg
|
7
|
+
module Autoloader
|
8
|
+
|
9
|
+
@@libs = nil
|
10
|
+
|
11
|
+
module_function
|
12
|
+
|
13
|
+
def libs
|
14
|
+
@@libs
|
15
|
+
end
|
16
|
+
|
17
|
+
# Load backend libraries for Numo::Linalg automatically.
|
18
|
+
#
|
19
|
+
# @return [String] name of loaded backend library (mkl/openblas/lapack)
|
20
|
+
def load_library
|
21
|
+
mkl_dirs = ['/opt/intel/lib', '/opt/intel/lib64', '/opt/intel/mkl/lib', '/opt/intel/mkl/lib64']
|
22
|
+
openblas_dirs = ['/opt/openblas/lib', '/opt/openblas/lib64', '/usr/local/opt/openblas/lib']
|
23
|
+
atlas_dirs = ['/opt/atlas/lib', '/opt/atlas/lib64',
|
24
|
+
'/usr/lib/atlas', '/usr/lib64/atlas', '/usr/local/opt/atlas/lib']
|
25
|
+
lapacke_dirs = ['/opt/lapack/lib', '/opt/lapack/lib64', '/opt/local/lib/lapack',
|
26
|
+
'/usr/local/opt/lapack/lib']
|
27
|
+
opt_dirs = ['/opt/local/lib', '/opt/local/lib64', '/opt/lib', '/opt/lib64']
|
28
|
+
base_dirs = ['/usr/local/lib', '/usr/local/lib64', '/usr/lib', '/usr/lib64']
|
29
|
+
base_dirs.unshift(*ENV['LD_LIBRARY_PATH'].split(':')) unless ENV['LD_LIBRARY_PATH'].nil?
|
30
|
+
|
31
|
+
mkl_libs = find_mkl_libs([*base_dirs, *opt_dirs, *mkl_dirs])
|
32
|
+
openblas_libs = find_openblas_libs([*base_dirs, *opt_dirs, *openblas_dirs])
|
33
|
+
atlas_libs = find_atlas_libs([*base_dirs, *opt_dirs, *atlas_dirs, *lapacke_dirs])
|
34
|
+
lapack_libs = find_lapack_libs([*base_dirs, *opt_dirs, *lapacke_dirs])
|
35
|
+
|
36
|
+
@@libs = nil
|
37
|
+
if !mkl_libs.value?(nil)
|
38
|
+
open_mkl_libs(mkl_libs)
|
39
|
+
@@libs = mkl_libs.values
|
40
|
+
'mkl'
|
41
|
+
elsif !openblas_libs.value?(nil)
|
42
|
+
open_openblas_libs(openblas_libs)
|
43
|
+
@@libs = openblas_libs.values.uniq
|
44
|
+
'openblas'
|
45
|
+
elsif !atlas_libs.value?(nil)
|
46
|
+
open_atlas_libs(atlas_libs)
|
47
|
+
@@libs = atlas_libs.values.uniq
|
48
|
+
'atlas'
|
49
|
+
elsif !lapack_libs.value?(nil)
|
50
|
+
open_lapack_libs(lapack_libs)
|
51
|
+
@@libs = lapack_libs.values.uniq
|
52
|
+
'lapack'
|
53
|
+
else
|
54
|
+
raise 'cannot find MKL/OpenBLAS/ATLAS/BLAS-LAPACK library'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def detect_library_extension
|
59
|
+
case RbConfig::CONFIG['host_os']
|
60
|
+
when /mswin|msys|mingw|cygwin/
|
61
|
+
'dll'
|
62
|
+
when /darwin|mac os/
|
63
|
+
'dylib'
|
64
|
+
else
|
65
|
+
'so'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def find_libs(lib_names, lib_dirs)
|
70
|
+
lib_ext = detect_library_extension
|
71
|
+
lib_arr = lib_names.map do |l|
|
72
|
+
[l.to_sym, lib_dirs.map { |d| "#{d}/lib#{l}.#{lib_ext}" }
|
73
|
+
.keep_if { |f| File.exist?(f) }.first]
|
74
|
+
end
|
75
|
+
Hash[*lib_arr.flatten]
|
76
|
+
end
|
77
|
+
|
78
|
+
def find_mkl_libs(lib_dirs)
|
79
|
+
lib_names = %w[iomp5 mkl_core mkl_intel_thread mkl_intel_lp64]
|
80
|
+
find_libs(lib_names, lib_dirs)
|
81
|
+
end
|
82
|
+
|
83
|
+
def find_openblas_libs(lib_dirs)
|
84
|
+
lib_names = %w[openblas lapacke]
|
85
|
+
openblas_libs = find_libs(lib_names, lib_dirs)
|
86
|
+
openblas_libs[:lapacke] = openblas_libs[:openblas] if openblas_libs[:lapacke].nil?
|
87
|
+
openblas_libs
|
88
|
+
end
|
89
|
+
|
90
|
+
def find_atlas_libs(lib_dirs)
|
91
|
+
lib_names = %w[tatlas atlas satlas cblas lapacke]
|
92
|
+
atlas_libs = find_libs(lib_names, lib_dirs)
|
93
|
+
atlas_libs[:atlas] = atlas_libs[:tatlas] unless atlas_libs[:tatlas].nil?
|
94
|
+
atlas_libs[:atlas] = atlas_libs[:satlas] if atlas_libs[:atlas].nil?
|
95
|
+
atlas_libs[:cblas] = atlas_libs[:atlas] if atlas_libs[:cblas].nil?
|
96
|
+
atlas_libs.delete(:tatlas)
|
97
|
+
atlas_libs.delete(:satlas)
|
98
|
+
atlas_libs
|
99
|
+
end
|
100
|
+
|
101
|
+
def find_lapack_libs(lib_dirs)
|
102
|
+
lib_names = %w[blas cblas lapack lapacke]
|
103
|
+
lapack_libs = find_libs(lib_names, lib_dirs)
|
104
|
+
lapack_libs[:cblas] = lapack_libs[:blas] if lapack_libs[:cblas].nil?
|
105
|
+
lapack_libs
|
106
|
+
end
|
107
|
+
|
108
|
+
def open_mkl_libs(mkl_libs)
|
109
|
+
Fiddle.dlopen(mkl_libs[:iomp5])
|
110
|
+
Fiddle.dlopen(mkl_libs[:mkl_core])
|
111
|
+
Fiddle.dlopen(mkl_libs[:mkl_intel_thread])
|
112
|
+
Fiddle.dlopen(mkl_libs[:mkl_intel_lp64])
|
113
|
+
Numo::Linalg::Blas.dlopen(mkl_libs[:mkl_intel_lp64])
|
114
|
+
Numo::Linalg::Lapack.dlopen(mkl_libs[:mkl_intel_lp64])
|
115
|
+
end
|
116
|
+
|
117
|
+
def open_openblas_libs(openblas_libs)
|
118
|
+
Numo::Linalg::Blas.dlopen(openblas_libs[:openblas])
|
119
|
+
Numo::Linalg::Lapack.dlopen(openblas_libs[:lapacke])
|
120
|
+
end
|
121
|
+
|
122
|
+
def open_atlas_libs(atlas_libs)
|
123
|
+
Fiddle.dlopen(atlas_libs[:atlas])
|
124
|
+
Numo::Linalg::Blas.dlopen(atlas_libs[:cblas])
|
125
|
+
Numo::Linalg::Lapack.dlopen(atlas_libs[:lapacke])
|
126
|
+
end
|
127
|
+
|
128
|
+
def open_lapack_libs(lapack_libs)
|
129
|
+
Fiddle.dlopen(lapack_libs[:blas])
|
130
|
+
Fiddle.dlopen(lapack_libs[:lapack])
|
131
|
+
Numo::Linalg::Blas.dlopen(lapack_libs[:cblas])
|
132
|
+
Numo::Linalg::Lapack.dlopen(lapack_libs[:lapacke])
|
133
|
+
end
|
134
|
+
|
135
|
+
private_class_method :detect_library_extension,
|
136
|
+
:find_libs, :find_mkl_libs, :find_openblas_libs, :find_atlas_libs, :find_lapack_libs,
|
137
|
+
:open_mkl_libs, :open_openblas_libs, :open_atlas_libs, :open_lapack_libs
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
Numo::Linalg::Autoloader.load_library
|
data/lib/numo/linalg/function.rb
CHANGED
@@ -992,17 +992,17 @@ module Numo; module Linalg
|
|
992
992
|
end
|
993
993
|
end
|
994
994
|
|
995
|
-
private
|
996
|
-
|
997
995
|
# @!visibility private
|
998
996
|
def _make_complex_eigvecs(w, vin) # :nodoc:
|
999
997
|
v = w.class.cast(vin)
|
1000
998
|
# broadcast to vin.shape
|
1001
|
-
m = (w.imag > 0 | Bit.zeros(*vin.shape)).where
|
999
|
+
m = ((w.imag > 0) | Bit.zeros(*vin.shape)).where
|
1002
1000
|
v[m].imag = vin[m+1]
|
1003
1001
|
v[m+1] = v[m].conj
|
1004
1002
|
v
|
1005
1003
|
end
|
1006
1004
|
|
1005
|
+
private_class_method :_make_complex_eigvecs
|
1006
|
+
|
1007
1007
|
end
|
1008
1008
|
end
|
data/lib/numo/linalg/version.rb
CHANGED
data/numo-linalg.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numo-linalg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro TANAKA
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-01-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -43,16 +43,16 @@ dependencies:
|
|
43
43
|
name: numo-narray
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 0.9.0
|
48
|
+
version: 0.9.0.7
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.9.0
|
55
|
+
version: 0.9.0.7
|
56
56
|
description: Ruby/Numo Linear Algebra library with interface to BLAS/LAPACK.
|
57
57
|
email:
|
58
58
|
- masa16.tanaka@gmail.com
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- ext/numo/linalg/blas/gen/cogen.rb
|
74
74
|
- ext/numo/linalg/blas/gen/decl.rb
|
75
75
|
- ext/numo/linalg/blas/gen/desc.rb
|
76
|
+
- ext/numo/linalg/blas/gen/erbln.rb
|
76
77
|
- ext/numo/linalg/blas/gen/erbpp2.rb
|
77
78
|
- ext/numo/linalg/blas/gen/replace_cblas_h.rb
|
78
79
|
- ext/numo/linalg/blas/gen/spec.rb
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- ext/numo/linalg/lapack/tmpl/trf.c
|
136
137
|
- ext/numo/linalg/numo_linalg.h
|
137
138
|
- lib/numo/linalg.rb
|
139
|
+
- lib/numo/linalg/autoloader.rb
|
138
140
|
- lib/numo/linalg/function.rb
|
139
141
|
- lib/numo/linalg/linalg.rb
|
140
142
|
- lib/numo/linalg/loader.rb
|