linalg 1.0.2
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 +7 -0
- data/LICENSE +24 -0
- data/ext/g2c_typedefs.h +5 -0
- data/ext/lapack/extconf.rb +309 -0
- data/ext/lapack/include/BLAS.h +154 -0
- data/ext/lapack/include/LAPACK.h +1314 -0
- data/ext/lapack/main.c +49 -0
- data/ext/lapack/rb_lapack.h +36 -0
- data/ext/lapack/rb_lapack_c.c +11614 -0
- data/ext/lapack/rb_lapack_d.c +12663 -0
- data/ext/lapack/rb_lapack_s.c +12649 -0
- data/ext/lapack/rb_lapack_x.c +208 -0
- data/ext/lapack/rb_lapack_z.c +11614 -0
- data/ext/linalg/dcomplex.c +359 -0
- data/ext/linalg/dcomplex.h +40 -0
- data/ext/linalg/ddata.c +194 -0
- data/ext/linalg/extconf.rb +324 -0
- data/ext/linalg/linalg.c +55 -0
- data/ext/linalg/linalg.h +21 -0
- data/ext/linalg/xdata.c +21 -0
- data/ext/linalg/xdata.h +33 -0
- data/ext/linalg/xmatrix.c.tmpl +1630 -0
- data/ext/linalg/xmatrix.h.tmpl +77 -0
- data/ext/linalg/xmatrixc.c.tmpl +138 -0
- data/ext/linalg/xmatrixr.c.tmpl +130 -0
- data/lib/lapack.rb +87 -0
- data/lib/linalg.rb +9 -0
- data/lib/linalg/dcomplex.rb +17 -0
- data/lib/linalg/dmatrix.rb +29 -0
- data/lib/linalg/dmatrix/alias.rb +32 -0
- data/lib/linalg/dmatrix/cholesky.rb +52 -0
- data/lib/linalg/dmatrix/cond.rb +80 -0
- data/lib/linalg/dmatrix/det.rb +36 -0
- data/lib/linalg/dmatrix/eigen.rb +153 -0
- data/lib/linalg/dmatrix/fit.rb +281 -0
- data/lib/linalg/dmatrix/inverse.rb +78 -0
- data/lib/linalg/dmatrix/lu.rb +120 -0
- data/lib/linalg/dmatrix/main.rb +244 -0
- data/lib/linalg/dmatrix/norms.rb +88 -0
- data/lib/linalg/dmatrix/nullspace.rb +114 -0
- data/lib/linalg/dmatrix/qr.rb +129 -0
- data/lib/linalg/dmatrix/schur.rb +88 -0
- data/lib/linalg/dmatrix/solve.rb +78 -0
- data/lib/linalg/dmatrix/svd.rb +125 -0
- data/lib/linalg/exception.rb +32 -0
- data/lib/linalg/iterators.rb +221 -0
- data/lib/linalg/math.rb +23 -0
- data/lib/linalg/scomplex.rb +15 -0
- data/lib/linalg/version.rb +3 -0
- data/lib/linalg/xdata.rb +123 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 90308570ba2bd52acca9489497ecf195ac1dccda
|
4
|
+
data.tar.gz: 98273ca4701588085a03034fc04fd286289770c0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 86139429d64a55b96f1d3c509797bc1b189e3e75e4c30629dce989b7284d5f706bbea878fcbe99bd90c96df88f9a7e2db825c52167ae145b9db699b78f544298
|
7
|
+
data.tar.gz: 78239441788657d0ea82dcc46ac891ac5fbbb5e78c59c1ab9f8c311fb8d4cdce182dbd9213b966003ac5282f5f7c927c6d62cfd017d0c6de9b1dd45e76e8e7c6
|
data/LICENSE
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
"linalg -- Ruby Linear Algebra Package" is copyrighted free software
|
3
|
+
by James M. Lawrence. Distributed under the MIT license.
|
4
|
+
|
5
|
+
Copyright (c) 2004-2008 James M. Lawrence
|
6
|
+
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
+
a copy of this software and associated documentation files (the
|
9
|
+
"Software"), to deal in the Software without restriction, including
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
13
|
+
the following conditions:
|
14
|
+
|
15
|
+
The above copyright notice and this permission notice shall be
|
16
|
+
included in all copies or substantial portions of the Software.
|
17
|
+
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/ext/g2c_typedefs.h
ADDED
@@ -0,0 +1,309 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2004-2008 by James M. Lawrence
|
3
|
+
#
|
4
|
+
# See LICENSE
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'mkmf'
|
8
|
+
require 'enumerator'
|
9
|
+
|
10
|
+
module Enumerable
|
11
|
+
def map_with_index
|
12
|
+
arr = []
|
13
|
+
each_with_index { |e, i|
|
14
|
+
arr << yield(e, i)
|
15
|
+
}
|
16
|
+
arr
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Integer
|
21
|
+
def enum
|
22
|
+
enum_for(:times)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
module GenerateHeader
|
27
|
+
def self.write(dir, outname, version = nil)
|
28
|
+
outname = File.expand_path(outname)
|
29
|
+
Dir.chdir(dir) {
|
30
|
+
Dir.glob('*.P') { |f| File.unlink(f) }
|
31
|
+
if system("f2c -R -P -\!c *.f")
|
32
|
+
File.open(outname, "w") { |outfile|
|
33
|
+
macro = File.basename(outname.upcase.gsub(".","_"))
|
34
|
+
outfile.puts "#ifndef #{macro}"
|
35
|
+
outfile.puts "#define #{macro}"
|
36
|
+
outfile.puts "/* version #{version} */ " if version
|
37
|
+
outfile.puts "/* generated #{Time.now} */"
|
38
|
+
outfile.puts
|
39
|
+
Dir.glob('*.P') { |pname|
|
40
|
+
File.open(pname) { |pfile|
|
41
|
+
pfile.each { |line|
|
42
|
+
next unless line =~ %r!^extern!
|
43
|
+
|
44
|
+
# I don't understand why f2c inserts these ftnlen params
|
45
|
+
while line.gsub!(%r!, ftnlen [a-z]+_len\)!, ")") ; end
|
46
|
+
|
47
|
+
outfile.write line
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
outfile.puts
|
53
|
+
outfile.puts "#endif"
|
54
|
+
}
|
55
|
+
end
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
module ScanHeader
|
61
|
+
extend self
|
62
|
+
|
63
|
+
def ctype_canonical_form(ctype)
|
64
|
+
ctype.gsub(%r!\*!, " * ").gsub(%r!\s+!, " ").strip
|
65
|
+
end
|
66
|
+
|
67
|
+
def parse_prototype(s, argnames = true)
|
68
|
+
func, args = s.strip.gsub(%r!\s+!, " ").split(%r![\(\)]!)
|
69
|
+
ret, name =
|
70
|
+
func.
|
71
|
+
strip.
|
72
|
+
match(%r!^(\w[*\s\w]*[*\s])(\w+)$!).
|
73
|
+
captures
|
74
|
+
desc = {}
|
75
|
+
desc[:name] = name
|
76
|
+
desc[:return] = ctype_canonical_form(ret)
|
77
|
+
desc[:args] = []
|
78
|
+
unless args == "" or args.strip == "void"
|
79
|
+
args.split(",").each { |arg|
|
80
|
+
arg.sub!(%r!\w+\s*$!, "") if argnames
|
81
|
+
desc[:args].push(ctype_canonical_form(arg))
|
82
|
+
}
|
83
|
+
end
|
84
|
+
desc
|
85
|
+
end
|
86
|
+
|
87
|
+
def scan_header_io(io, ppdefs = nil)
|
88
|
+
s = io.read
|
89
|
+
s.gsub!(%r!^\s*\#.*$!, "")
|
90
|
+
s.gsub!(%r!//.*$!, "")
|
91
|
+
s.gsub!(%r!/\*.*?\*/!m, "")
|
92
|
+
if ppdefs
|
93
|
+
s.gsub!(%r!\w+!) { |word|
|
94
|
+
if ppdefs[word]
|
95
|
+
ppdefs[word]
|
96
|
+
else
|
97
|
+
word
|
98
|
+
end
|
99
|
+
}
|
100
|
+
end
|
101
|
+
s.scan(%r!\w[*\w\s]*?\w+\s*\(.*?\)\s*\;!m) { |func|
|
102
|
+
yield parse_prototype(func)
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
def scan_header(header, ppdefs = nil, &block)
|
107
|
+
File.open(header) { |file|
|
108
|
+
scan_header_io(file, ppdefs, &block)
|
109
|
+
}
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
module FunctionDB
|
114
|
+
def self.read
|
115
|
+
db = {}
|
116
|
+
|
117
|
+
cppdefs = {
|
118
|
+
"extern" => "",
|
119
|
+
|
120
|
+
# these are in f2c.h
|
121
|
+
"C_f" => "void",
|
122
|
+
"Z_f" => "void",
|
123
|
+
}
|
124
|
+
|
125
|
+
["include/LAPACK.h", "include/BLAS.h"].each { |filename|
|
126
|
+
print "reading #{filename}..."
|
127
|
+
ScanHeader.scan_header(filename, cppdefs) { |desc|
|
128
|
+
db[desc[:name]] = desc
|
129
|
+
}
|
130
|
+
puts "ok"
|
131
|
+
}
|
132
|
+
|
133
|
+
db
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
module Lapack_c
|
138
|
+
extend self
|
139
|
+
|
140
|
+
def write(db)
|
141
|
+
{
|
142
|
+
|
143
|
+
:s => /^s/,
|
144
|
+
:d => /^d/,
|
145
|
+
:c => /^c/,
|
146
|
+
:z => /^z/,
|
147
|
+
:x => /^[^sdcz]/,
|
148
|
+
|
149
|
+
}.each_pair { |letter, regex|
|
150
|
+
part = {}
|
151
|
+
db.keys.grep(regex).each { |key|
|
152
|
+
part[key] = db.delete(key)
|
153
|
+
}
|
154
|
+
|
155
|
+
write_file(part,
|
156
|
+
"rb_lapack_#{letter}",
|
157
|
+
"define_lapack_#{letter}")
|
158
|
+
}
|
159
|
+
end
|
160
|
+
|
161
|
+
def write_file(db, filename, funcname)
|
162
|
+
File.open("#{filename}.c", "w+") { |file|
|
163
|
+
file.puts %{#include "rb_lapack.h"\n\n}
|
164
|
+
db.keys.sort.each { |func|
|
165
|
+
Lapack_c.write_function(db[func], file)
|
166
|
+
}
|
167
|
+
|
168
|
+
file.puts "void #{funcname}()\n{\n"
|
169
|
+
|
170
|
+
db.keys.sort.each { |func|
|
171
|
+
file.puts <<EOS
|
172
|
+
rb_define_singleton_method(rb_cLapack,
|
173
|
+
"#{func.sub(%r!_$!, "")}",
|
174
|
+
#{Lapack_c.rbname(func)},
|
175
|
+
#{-1}) ;
|
176
|
+
EOS
|
177
|
+
}
|
178
|
+
|
179
|
+
file.puts "\n}"
|
180
|
+
}
|
181
|
+
end
|
182
|
+
|
183
|
+
def rbname(name)
|
184
|
+
"rb_" + name.sub(%r!_$!, "")
|
185
|
+
end
|
186
|
+
|
187
|
+
def write_function(desc, out)
|
188
|
+
rbname = rbname(desc[:name])
|
189
|
+
args = ['int argc', 'VALUE *argv', 'VALUE self']
|
190
|
+
conv = desc[:args].map { |type|
|
191
|
+
"to_" + case type
|
192
|
+
when %r!^(\w+)$!
|
193
|
+
$1
|
194
|
+
when %r!^(\w+)\s*\*$!
|
195
|
+
"#{$1}_ptr"
|
196
|
+
else
|
197
|
+
raise "unknown arg type in #{desc[:name]}: '#{type}'"
|
198
|
+
end.gsub(" ","_")
|
199
|
+
}
|
200
|
+
assign = desc[:args].map_with_index { |type, i|
|
201
|
+
"#{type} p#{i} = (#{type})NUM2ULONG(rb_funcall(v#{i}, #{conv[i]}, 0))"
|
202
|
+
}
|
203
|
+
ftncall = desc[:name] + "(" + desc[:args].size.enum.inject("") { |acc, i|
|
204
|
+
acc + "p#{i}, "
|
205
|
+
}.chop.chop + ")"
|
206
|
+
ret = if desc[:return] =~ %r!^void$!i
|
207
|
+
"#{ftncall} ; return Qnil ;"
|
208
|
+
else
|
209
|
+
"return " +
|
210
|
+
case desc[:return]
|
211
|
+
when %r!(^real$|^doublereal$)!
|
212
|
+
"rb_float_new((double)"
|
213
|
+
when %r!(^int|^logical$)!
|
214
|
+
"LONG2NUM((long)"
|
215
|
+
else
|
216
|
+
raise "unknown type return type in #{desc[:name]}: #{desc[:return]}"
|
217
|
+
end +
|
218
|
+
"#{ftncall})"
|
219
|
+
end
|
220
|
+
define_values = []
|
221
|
+
(0..desc[:args].size).map do |j|
|
222
|
+
define_values << "VALUE v#{j};"
|
223
|
+
end
|
224
|
+
|
225
|
+
out.puts <<EOS
|
226
|
+
VALUE #{rbname}(#{args.join(",")})
|
227
|
+
{
|
228
|
+
#{define_values.join("\n ") }
|
229
|
+
rb_scan_args(argc, argv, "#{desc[:args].size}*", #{(0..desc[:args].size).map{ |j| "&v#{j}" }.join(', ') });
|
230
|
+
#{assign.join(" ;\n ")} ;
|
231
|
+
|
232
|
+
#{ret} ;
|
233
|
+
}
|
234
|
+
|
235
|
+
EOS
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
module PullCode
|
240
|
+
def self.pull(sofile, *reps)
|
241
|
+
`nm -D #{sofile}`.each { |line|
|
242
|
+
line =~ %r!U (\w+)!
|
243
|
+
next unless $1
|
244
|
+
func = $1
|
245
|
+
reps.each { |d|
|
246
|
+
d = d.sub %r!/$!, ""
|
247
|
+
[
|
248
|
+
"#{d}/#{func}.c",
|
249
|
+
d + "/" + func.sub(%r!_$!, "") + ".c",
|
250
|
+
].each { |fname|
|
251
|
+
if FileTest.exist? fname
|
252
|
+
FileUtils.cp fname, "."
|
253
|
+
puts "-->copied #{fname}"
|
254
|
+
break
|
255
|
+
end
|
256
|
+
}
|
257
|
+
}
|
258
|
+
}
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
module Main
|
263
|
+
extend self
|
264
|
+
|
265
|
+
def genheader(*args)
|
266
|
+
GenerateHeader.write(*args)
|
267
|
+
end
|
268
|
+
|
269
|
+
def pull(*args)
|
270
|
+
PullCode.pull(*args)
|
271
|
+
end
|
272
|
+
|
273
|
+
def write_c
|
274
|
+
db = FunctionDB.read
|
275
|
+
Lapack_c.write(db)
|
276
|
+
end
|
277
|
+
|
278
|
+
def config
|
279
|
+
unless have_header("f2c.h") and
|
280
|
+
have_library("blas") and
|
281
|
+
have_library("lapack")
|
282
|
+
puts "A full LAPACK installation was not found."
|
283
|
+
exit(-1)
|
284
|
+
end
|
285
|
+
|
286
|
+
$distcleanfiles = [
|
287
|
+
"rb_lapack_s.c",
|
288
|
+
"rb_lapack_d.c",
|
289
|
+
"rb_lapack_c.c",
|
290
|
+
"rb_lapack_z.c",
|
291
|
+
"rb_lapack_x.c",
|
292
|
+
]
|
293
|
+
end
|
294
|
+
|
295
|
+
def create
|
296
|
+
create_makefile("lapack")
|
297
|
+
end
|
298
|
+
|
299
|
+
STDOUT.sync = true
|
300
|
+
action = ARGV.shift
|
301
|
+
|
302
|
+
if action
|
303
|
+
send(action, *ARGV)
|
304
|
+
else
|
305
|
+
config
|
306
|
+
write_c
|
307
|
+
create
|
308
|
+
end
|
309
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (c) 2004-2008 by James M. Lawrence
|
3
|
+
*
|
4
|
+
* See LICENSE
|
5
|
+
*
|
6
|
+
*/
|
7
|
+
#ifndef BLAS_H
|
8
|
+
#define BLAS_H
|
9
|
+
/* version 20031025 */
|
10
|
+
/* generated Fri Jun 04 05:58:15 EDT 2004-2008 */
|
11
|
+
|
12
|
+
extern int caxpy_(integer *n, complex *ca, complex *cx, integer *incx, complex *cy, integer *incy);
|
13
|
+
extern int ccopy_(integer *n, complex *cx, integer *incx, complex *cy, integer *incy);
|
14
|
+
extern C_f cdotc_(complex * ret_val, integer *n, complex *cx, integer *incx, complex *cy, integer *incy);
|
15
|
+
extern C_f cdotu_(complex * ret_val, integer *n, complex *cx, integer *incx, complex *cy, integer *incy);
|
16
|
+
extern int cgbmv_(char *trans, integer *m, integer *n, integer *kl, integer *ku, complex *alpha, complex *a, integer *lda, complex *x, integer *incx, complex *beta, complex *y, integer *incy);
|
17
|
+
extern int cgemm_(char *transa, char *transb, integer *m, integer *n, integer *k, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb, complex *beta, complex *c__, integer *ldc);
|
18
|
+
extern int cgemv_(char *trans, integer *m, integer *n, complex *alpha, complex *a, integer *lda, complex *x, integer *incx, complex *beta, complex *y, integer *incy);
|
19
|
+
extern int cgerc_(integer *m, integer *n, complex *alpha, complex *x, integer *incx, complex *y, integer *incy, complex *a, integer *lda);
|
20
|
+
extern int cgeru_(integer *m, integer *n, complex *alpha, complex *x, integer *incx, complex *y, integer *incy, complex *a, integer *lda);
|
21
|
+
extern int chbmv_(char *uplo, integer *n, integer *k, complex *alpha, complex *a, integer *lda, complex *x, integer *incx, complex *beta, complex *y, integer *incy);
|
22
|
+
extern int chemm_(char *side, char *uplo, integer *m, integer *n, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb, complex *beta, complex *c__, integer *ldc);
|
23
|
+
extern int chemv_(char *uplo, integer *n, complex *alpha, complex *a, integer *lda, complex *x, integer *incx, complex *beta, complex *y, integer *incy);
|
24
|
+
extern int cher_(char *uplo, integer *n, real *alpha, complex *x, integer *incx, complex *a, integer *lda);
|
25
|
+
extern int cher2_(char *uplo, integer *n, complex *alpha, complex *x, integer *incx, complex *y, integer *incy, complex *a, integer *lda);
|
26
|
+
extern int cher2k_(char *uplo, char *trans, integer *n, integer *k, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb, real *beta, complex *c__, integer *ldc);
|
27
|
+
extern int cherk_(char *uplo, char *trans, integer *n, integer *k, real *alpha, complex *a, integer *lda, real *beta, complex *c__, integer *ldc);
|
28
|
+
extern int chpmv_(char *uplo, integer *n, complex *alpha, complex *ap, complex *x, integer *incx, complex *beta, complex *y, integer *incy);
|
29
|
+
extern int chpr_(char *uplo, integer *n, real *alpha, complex *x, integer *incx, complex *ap);
|
30
|
+
extern int chpr2_(char *uplo, integer *n, complex *alpha, complex *x, integer *incx, complex *y, integer *incy, complex *ap);
|
31
|
+
extern int crotg_(complex *ca, complex *cb, real *c__, complex *s);
|
32
|
+
extern int cscal_(integer *n, complex *ca, complex *cx, integer *incx);
|
33
|
+
extern int csscal_(integer *n, real *sa, complex *cx, integer *incx);
|
34
|
+
extern int cswap_(integer *n, complex *cx, integer *incx, complex *cy, integer *incy);
|
35
|
+
extern int csymm_(char *side, char *uplo, integer *m, integer *n, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb, complex *beta, complex *c__, integer *ldc);
|
36
|
+
extern int csyr2k_(char *uplo, char *trans, integer *n, integer *k, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb, complex *beta, complex *c__, integer *ldc);
|
37
|
+
extern int csyrk_(char *uplo, char *trans, integer *n, integer *k, complex *alpha, complex *a, integer *lda, complex *beta, complex *c__, integer *ldc);
|
38
|
+
extern int ctbmv_(char *uplo, char *trans, char *diag, integer *n, integer *k, complex *a, integer *lda, complex *x, integer *incx);
|
39
|
+
extern int ctbsv_(char *uplo, char *trans, char *diag, integer *n, integer *k, complex *a, integer *lda, complex *x, integer *incx);
|
40
|
+
extern int ctpmv_(char *uplo, char *trans, char *diag, integer *n, complex *ap, complex *x, integer *incx);
|
41
|
+
extern int ctpsv_(char *uplo, char *trans, char *diag, integer *n, complex *ap, complex *x, integer *incx);
|
42
|
+
extern int ctrmm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb);
|
43
|
+
extern int ctrmv_(char *uplo, char *trans, char *diag, integer *n, complex *a, integer *lda, complex *x, integer *incx);
|
44
|
+
extern int ctrsm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, complex *alpha, complex *a, integer *lda, complex *b, integer *ldb);
|
45
|
+
extern int ctrsv_(char *uplo, char *trans, char *diag, integer *n, complex *a, integer *lda, complex *x, integer *incx);
|
46
|
+
extern doublereal dasum_(integer *n, doublereal *dx, integer *incx);
|
47
|
+
extern int daxpy_(integer *n, doublereal *da, doublereal *dx, integer *incx, doublereal *dy, integer *incy);
|
48
|
+
extern doublereal dcabs1_(doublecomplex *z__);
|
49
|
+
extern int dcopy_(integer *n, doublereal *dx, integer *incx, doublereal *dy, integer *incy);
|
50
|
+
extern doublereal ddot_(integer *n, doublereal *dx, integer *incx, doublereal *dy, integer *incy);
|
51
|
+
extern int dgbmv_(char *trans, integer *m, integer *n, integer *kl, integer *ku, doublereal *alpha, doublereal *a, integer *lda, doublereal *x, integer *incx, doublereal *beta, doublereal *y, integer *incy);
|
52
|
+
extern int dgemm_(char *transa, char *transb, integer *m, integer *n, integer *k, doublereal *alpha, doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal *beta, doublereal *c__, integer *ldc);
|
53
|
+
extern int dgemv_(char *trans, integer *m, integer *n, doublereal *alpha, doublereal *a, integer *lda, doublereal *x, integer *incx, doublereal *beta, doublereal *y, integer *incy);
|
54
|
+
extern int dger_(integer *m, integer *n, doublereal *alpha, doublereal *x, integer *incx, doublereal *y, integer *incy, doublereal *a, integer *lda);
|
55
|
+
extern doublereal dnrm2_(integer *n, doublereal *x, integer *incx);
|
56
|
+
extern int drot_(integer *n, doublereal *dx, integer *incx, doublereal *dy, integer *incy, doublereal *c__, doublereal *s);
|
57
|
+
extern int drotg_(doublereal *da, doublereal *db, doublereal *c__, doublereal *s);
|
58
|
+
extern int dsbmv_(char *uplo, integer *n, integer *k, doublereal *alpha, doublereal *a, integer *lda, doublereal *x, integer *incx, doublereal *beta, doublereal *y, integer *incy);
|
59
|
+
extern int dscal_(integer *n, doublereal *da, doublereal *dx, integer *incx);
|
60
|
+
extern int dspmv_(char *uplo, integer *n, doublereal *alpha, doublereal *ap, doublereal *x, integer *incx, doublereal *beta, doublereal *y, integer *incy);
|
61
|
+
extern int dspr_(char *uplo, integer *n, doublereal *alpha, doublereal *x, integer *incx, doublereal *ap);
|
62
|
+
extern int dspr2_(char *uplo, integer *n, doublereal *alpha, doublereal *x, integer *incx, doublereal *y, integer *incy, doublereal *ap);
|
63
|
+
extern int dswap_(integer *n, doublereal *dx, integer *incx, doublereal *dy, integer *incy);
|
64
|
+
extern int dsymm_(char *side, char *uplo, integer *m, integer *n, doublereal *alpha, doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal *beta, doublereal *c__, integer *ldc);
|
65
|
+
extern int dsymv_(char *uplo, integer *n, doublereal *alpha, doublereal *a, integer *lda, doublereal *x, integer *incx, doublereal *beta, doublereal *y, integer *incy);
|
66
|
+
extern int dsyr_(char *uplo, integer *n, doublereal *alpha, doublereal *x, integer *incx, doublereal *a, integer *lda);
|
67
|
+
extern int dsyr2_(char *uplo, integer *n, doublereal *alpha, doublereal *x, integer *incx, doublereal *y, integer *incy, doublereal *a, integer *lda);
|
68
|
+
extern int dsyr2k_(char *uplo, char *trans, integer *n, integer *k, doublereal *alpha, doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal *beta, doublereal *c__, integer *ldc);
|
69
|
+
extern int dsyrk_(char *uplo, char *trans, integer *n, integer *k, doublereal *alpha, doublereal *a, integer *lda, doublereal *beta, doublereal *c__, integer *ldc);
|
70
|
+
extern int dtbmv_(char *uplo, char *trans, char *diag, integer *n, integer *k, doublereal *a, integer *lda, doublereal *x, integer *incx);
|
71
|
+
extern int dtbsv_(char *uplo, char *trans, char *diag, integer *n, integer *k, doublereal *a, integer *lda, doublereal *x, integer *incx);
|
72
|
+
extern int dtpmv_(char *uplo, char *trans, char *diag, integer *n, doublereal *ap, doublereal *x, integer *incx);
|
73
|
+
extern int dtpsv_(char *uplo, char *trans, char *diag, integer *n, doublereal *ap, doublereal *x, integer *incx);
|
74
|
+
extern int dtrmm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, doublereal *alpha, doublereal *a, integer *lda, doublereal *b, integer *ldb);
|
75
|
+
extern int dtrmv_(char *uplo, char *trans, char *diag, integer *n, doublereal *a, integer *lda, doublereal *x, integer *incx);
|
76
|
+
extern int dtrsm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, doublereal *alpha, doublereal *a, integer *lda, doublereal *b, integer *ldb);
|
77
|
+
extern int dtrsv_(char *uplo, char *trans, char *diag, integer *n, doublereal *a, integer *lda, doublereal *x, integer *incx);
|
78
|
+
extern doublereal dzasum_(integer *n, doublecomplex *zx, integer *incx);
|
79
|
+
extern doublereal dznrm2_(integer *n, doublecomplex *x, integer *incx);
|
80
|
+
extern integer icamax_(integer *n, complex *cx, integer *incx);
|
81
|
+
extern integer idamax_(integer *n, doublereal *dx, integer *incx);
|
82
|
+
extern integer isamax_(integer *n, real *sx, integer *incx);
|
83
|
+
extern integer izamax_(integer *n, doublecomplex *zx, integer *incx);
|
84
|
+
extern logical lsame_(char *ca, char *cb);
|
85
|
+
extern real sasum_(integer *n, real *sx, integer *incx);
|
86
|
+
extern int saxpy_(integer *n, real *sa, real *sx, integer *incx, real *sy, integer *incy);
|
87
|
+
extern real scasum_(integer *n, complex *cx, integer *incx);
|
88
|
+
extern real scnrm2_(integer *n, complex *x, integer *incx);
|
89
|
+
extern int scopy_(integer *n, real *sx, integer *incx, real *sy, integer *incy);
|
90
|
+
extern real sdot_(integer *n, real *sx, integer *incx, real *sy, integer *incy);
|
91
|
+
extern int sgbmv_(char *trans, integer *m, integer *n, integer *kl, integer *ku, real *alpha, real *a, integer *lda, real *x, integer *incx, real *beta, real *y, integer *incy);
|
92
|
+
extern int sgemm_(char *transa, char *transb, integer *m, integer *n, integer *k, real *alpha, real *a, integer *lda, real *b, integer *ldb, real *beta, real *c__, integer *ldc);
|
93
|
+
extern int sgemv_(char *trans, integer *m, integer *n, real *alpha, real *a, integer *lda, real *x, integer *incx, real *beta, real *y, integer *incy);
|
94
|
+
extern int sger_(integer *m, integer *n, real *alpha, real *x, integer *incx, real *y, integer *incy, real *a, integer *lda);
|
95
|
+
extern real snrm2_(integer *n, real *x, integer *incx);
|
96
|
+
extern int srot_(integer *n, real *sx, integer *incx, real *sy, integer *incy, real *c__, real *s);
|
97
|
+
extern int srotg_(real *sa, real *sb, real *c__, real *s);
|
98
|
+
extern int ssbmv_(char *uplo, integer *n, integer *k, real *alpha, real *a, integer *lda, real *x, integer *incx, real *beta, real *y, integer *incy);
|
99
|
+
extern int sscal_(integer *n, real *sa, real *sx, integer *incx);
|
100
|
+
extern int sspmv_(char *uplo, integer *n, real *alpha, real *ap, real *x, integer *incx, real *beta, real *y, integer *incy);
|
101
|
+
extern int sspr_(char *uplo, integer *n, real *alpha, real *x, integer *incx, real *ap);
|
102
|
+
extern int sspr2_(char *uplo, integer *n, real *alpha, real *x, integer *incx, real *y, integer *incy, real *ap);
|
103
|
+
extern int sswap_(integer *n, real *sx, integer *incx, real *sy, integer *incy);
|
104
|
+
extern int ssymm_(char *side, char *uplo, integer *m, integer *n, real *alpha, real *a, integer *lda, real *b, integer *ldb, real *beta, real *c__, integer *ldc);
|
105
|
+
extern int ssymv_(char *uplo, integer *n, real *alpha, real *a, integer *lda, real *x, integer *incx, real *beta, real *y, integer *incy);
|
106
|
+
extern int ssyr_(char *uplo, integer *n, real *alpha, real *x, integer *incx, real *a, integer *lda);
|
107
|
+
extern int ssyr2_(char *uplo, integer *n, real *alpha, real *x, integer *incx, real *y, integer *incy, real *a, integer *lda);
|
108
|
+
extern int ssyr2k_(char *uplo, char *trans, integer *n, integer *k, real *alpha, real *a, integer *lda, real *b, integer *ldb, real *beta, real *c__, integer *ldc);
|
109
|
+
extern int ssyrk_(char *uplo, char *trans, integer *n, integer *k, real *alpha, real *a, integer *lda, real *beta, real *c__, integer *ldc);
|
110
|
+
extern int stbmv_(char *uplo, char *trans, char *diag, integer *n, integer *k, real *a, integer *lda, real *x, integer *incx);
|
111
|
+
extern int stbsv_(char *uplo, char *trans, char *diag, integer *n, integer *k, real *a, integer *lda, real *x, integer *incx);
|
112
|
+
extern int stpmv_(char *uplo, char *trans, char *diag, integer *n, real *ap, real *x, integer *incx);
|
113
|
+
extern int stpsv_(char *uplo, char *trans, char *diag, integer *n, real *ap, real *x, integer *incx);
|
114
|
+
extern int strmm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, real *alpha, real *a, integer *lda, real *b, integer *ldb);
|
115
|
+
extern int strmv_(char *uplo, char *trans, char *diag, integer *n, real *a, integer *lda, real *x, integer *incx);
|
116
|
+
extern int strsm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, real *alpha, real *a, integer *lda, real *b, integer *ldb);
|
117
|
+
extern int strsv_(char *uplo, char *trans, char *diag, integer *n, real *a, integer *lda, real *x, integer *incx);
|
118
|
+
extern int xerbla_(char *srname, integer *info);
|
119
|
+
extern int zaxpy_(integer *n, doublecomplex *za, doublecomplex *zx, integer *incx, doublecomplex *zy, integer *incy);
|
120
|
+
extern int zcopy_(integer *n, doublecomplex *zx, integer *incx, doublecomplex *zy, integer *incy);
|
121
|
+
extern Z_f zdotc_(doublecomplex * ret_val, integer *n, doublecomplex *zx, integer *incx, doublecomplex *zy, integer *incy);
|
122
|
+
extern Z_f zdotu_(doublecomplex * ret_val, integer *n, doublecomplex *zx, integer *incx, doublecomplex *zy, integer *incy);
|
123
|
+
extern int zdscal_(integer *n, doublereal *da, doublecomplex *zx, integer *incx);
|
124
|
+
extern int zgbmv_(char *trans, integer *m, integer *n, integer *kl, integer *ku, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx, doublecomplex *beta, doublecomplex *y, integer *incy);
|
125
|
+
extern int zgemm_(char *transa, char *transb, integer *m, integer *n, integer *k, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, doublecomplex *beta, doublecomplex *c__, integer *ldc);
|
126
|
+
extern int zgemv_(char *trans, integer *m, integer *n, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx, doublecomplex *beta, doublecomplex *y, integer *incy);
|
127
|
+
extern int zgerc_(integer *m, integer *n, doublecomplex *alpha, doublecomplex *x, integer *incx, doublecomplex *y, integer *incy, doublecomplex *a, integer *lda);
|
128
|
+
extern int zgeru_(integer *m, integer *n, doublecomplex *alpha, doublecomplex *x, integer *incx, doublecomplex *y, integer *incy, doublecomplex *a, integer *lda);
|
129
|
+
extern int zhbmv_(char *uplo, integer *n, integer *k, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx, doublecomplex *beta, doublecomplex *y, integer *incy);
|
130
|
+
extern int zhemm_(char *side, char *uplo, integer *m, integer *n, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, doublecomplex *beta, doublecomplex *c__, integer *ldc);
|
131
|
+
extern int zhemv_(char *uplo, integer *n, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx, doublecomplex *beta, doublecomplex *y, integer *incy);
|
132
|
+
extern int zher_(char *uplo, integer *n, doublereal *alpha, doublecomplex *x, integer *incx, doublecomplex *a, integer *lda);
|
133
|
+
extern int zher2_(char *uplo, integer *n, doublecomplex *alpha, doublecomplex *x, integer *incx, doublecomplex *y, integer *incy, doublecomplex *a, integer *lda);
|
134
|
+
extern int zher2k_(char *uplo, char *trans, integer *n, integer *k, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, doublereal *beta, doublecomplex *c__, integer *ldc);
|
135
|
+
extern int zherk_(char *uplo, char *trans, integer *n, integer *k, doublereal *alpha, doublecomplex *a, integer *lda, doublereal *beta, doublecomplex *c__, integer *ldc);
|
136
|
+
extern int zhpmv_(char *uplo, integer *n, doublecomplex *alpha, doublecomplex *ap, doublecomplex *x, integer *incx, doublecomplex *beta, doublecomplex *y, integer *incy);
|
137
|
+
extern int zhpr_(char *uplo, integer *n, doublereal *alpha, doublecomplex *x, integer *incx, doublecomplex *ap);
|
138
|
+
extern int zhpr2_(char *uplo, integer *n, doublecomplex *alpha, doublecomplex *x, integer *incx, doublecomplex *y, integer *incy, doublecomplex *ap);
|
139
|
+
extern int zrotg_(doublecomplex *ca, doublecomplex *cb, doublereal *c__, doublecomplex *s);
|
140
|
+
extern int zscal_(integer *n, doublecomplex *za, doublecomplex *zx, integer *incx);
|
141
|
+
extern int zswap_(integer *n, doublecomplex *zx, integer *incx, doublecomplex *zy, integer *incy);
|
142
|
+
extern int zsymm_(char *side, char *uplo, integer *m, integer *n, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, doublecomplex *beta, doublecomplex *c__, integer *ldc);
|
143
|
+
extern int zsyr2k_(char *uplo, char *trans, integer *n, integer *k, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, doublecomplex *beta, doublecomplex *c__, integer *ldc);
|
144
|
+
extern int zsyrk_(char *uplo, char *trans, integer *n, integer *k, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *beta, doublecomplex *c__, integer *ldc);
|
145
|
+
extern int ztbmv_(char *uplo, char *trans, char *diag, integer *n, integer *k, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx);
|
146
|
+
extern int ztbsv_(char *uplo, char *trans, char *diag, integer *n, integer *k, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx);
|
147
|
+
extern int ztpmv_(char *uplo, char *trans, char *diag, integer *n, doublecomplex *ap, doublecomplex *x, integer *incx);
|
148
|
+
extern int ztpsv_(char *uplo, char *trans, char *diag, integer *n, doublecomplex *ap, doublecomplex *x, integer *incx);
|
149
|
+
extern int ztrmm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb);
|
150
|
+
extern int ztrmv_(char *uplo, char *trans, char *diag, integer *n, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx);
|
151
|
+
extern int ztrsm_(char *side, char *uplo, char *transa, char *diag, integer *m, integer *n, doublecomplex *alpha, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb);
|
152
|
+
extern int ztrsv_(char *uplo, char *trans, char *diag, integer *n, doublecomplex *a, integer *lda, doublecomplex *x, integer *incx);
|
153
|
+
|
154
|
+
#endif
|