numo-liblinear 0.5.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 25a456af8f35df53f449634445d25b92acbd3b78
4
- data.tar.gz: 803d29787ecbe7c9f97c98924315c45ae8a8eba0
2
+ SHA256:
3
+ metadata.gz: 3c7b3a307060c75a2b5580fdf89083fd8dccd1423b8ad9d615d5546d21c6f437
4
+ data.tar.gz: 86d810729c58f5725f6ce3cfb7cd56d6b65218071754802649b28bfe06dfbb10
5
5
  SHA512:
6
- metadata.gz: a4cc867afc83ea85f816113136b31454edfacd5eb8471341492dd3bf3e618e1ac95a144f58a024625d0c35cc17e726085c43d7a69c4e36acb058b5348cd68846
7
- data.tar.gz: 559931664558ca8979493254037dd275bd1e5d5b892f2a9d53f4d4c1e1bc805faf9466c88787ae31fc8103bdd58f5b7bb277f2d3fb9934b37d5d5d739d9d51a5
6
+ metadata.gz: f8ddcafa60ffa41c891312c470a44661cec27d5ed8cdbb9bb9efb7a0989e2399176ae37f5f645f0bc3911906fd29e790638d56b7234a59b8345af5005fa7c931
7
+ data.tar.gz: 27ebaf6df54989ba885dfce945aeee8e77fbbe29eef756e42b3ed3db9de0147ecc1cbdb36d572d9f9dceb406e5dac5b42302c7a96713d6dd14351673319a44d6
@@ -0,0 +1,28 @@
1
+ name: build
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby: [ '2.6', '2.7', '3.0' ]
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Checkout submodule
15
+ shell: bash
16
+ run: |
17
+ auth_header="$(git config --local --get http.https://github.com/.extraheader)"
18
+ git submodule sync --recursive
19
+ git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
20
+ - name: Set up Ruby ${{ matrix.ruby }}
21
+ uses: actions/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby }}
24
+ - name: Build and test with Rake
25
+ run: |
26
+ gem install --no-document bundler
27
+ bundle install --jobs 4 --retry 3
28
+ bundle exec rake
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "ext/numo/liblinear/liblinear"]
2
+ path = ext/numo/liblinear/liblinear
3
+ url = https://github.com/cjlin1/liblinear
data/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ # 1.2.0
2
+ - Add type declaration file: sig/numo/liblinear.rbs
3
+
4
+ # 1.1.2
5
+ - Add GC guard to model saving and loading methods.
6
+ - Fix size specification to memcpy function.
7
+
8
+ # 1.1.1
9
+ - Add GC guard codes.
10
+ - Fix some configuration files.
11
+
12
+ # 1.1.0
13
+ - Update bundled LIBLINEAR version to 2.4.1.
14
+ - Support one-class SVM implemented on LIBLINEAR ver. 2.4.0.
15
+
16
+ # 1.0.0
17
+ ## Breaking change
18
+ - For easy installation, Numo::LIBLINEAR bundles LIBLINEAR codes.
19
+ There is no need to install LIBLINEAR in advance to use Numo::LIBLINEAR.
20
+
1
21
  # 0.5.0
2
22
  - Fix to use LIBLINEAR sparce vector representation for internal processing.
3
23
 
data/Gemfile CHANGED
@@ -2,3 +2,10 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in numo-liblinear.gemspec
4
4
  gemspec
5
+
6
+ gem 'bundler', '~> 2.0'
7
+ gem 'rake', '~> 13.0'
8
+ gem 'rake-compiler', '~> 1.0'
9
+ gem 'rspec', '~> 3.0'
10
+ gem 'rbs', '~> 1.2'
11
+ gem 'steep', '~> 0.44'
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2019 Atsushi Tatsuma
1
+ Copyright (c) 2019-2021 Atsushi Tatsuma
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Numo::Liblinear
2
2
 
3
- [![Build Status](https://travis-ci.org/yoshoku/numo-liblinear.svg?branch=master)](https://travis-ci.org/yoshoku/numo-liblinear)
3
+ [![Build Status](https://github.com/yoshoku/numo-liblinear/workflows/build/badge.svg)](https://github.com/yoshoku/numo-liblinear/actions?query=workflow%3Abuild)
4
4
  [![Gem Version](https://badge.fury.io/rb/numo-liblinear.svg)](https://badge.fury.io/rb/numo-liblinear)
5
- [![BSD 3-Clause License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/yoshoku/numo-liblinear/blob/master/LICENSE.txt)
6
- [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](https://www.rubydoc.info/gems/numo-liblinear/0.4.0)
5
+ [![BSD 3-Clause License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/yoshoku/numo-liblinear/blob/main/LICENSE.txt)
6
+ [![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](https://yoshoku.github.io/numo-liblinear/doc/)
7
7
 
8
8
  Numo::Liblinear is a Ruby gem binding to the [LIBLINEAR](https://www.csie.ntu.edu.tw/~cjlin/liblinear/) library.
9
9
  LIBLINEAR is one of the famous libraries for large-scale regularized linear classification and regression.
@@ -15,15 +15,7 @@ Note: There are other useful Ruby gems binding to LIBLINEAR:
15
15
  [liblinear-ruby-swig](https://github.com/tomz/liblinear-ruby-swig) by Tom Zeng.
16
16
 
17
17
  ## Installation
18
- Numo::Liblinear does not bundle LIBLINEAR. You need to install LIBLINEAR in advance along your environment.
19
-
20
- macOS:
21
-
22
- $ brew install liblinear
23
-
24
- Ubuntu:
25
-
26
- $ sudo apt-get install liblinear-dev
18
+ Numo::Liblinear bundles LIBLINEAR. There is no need to install LIBLINEAR in advance.
27
19
 
28
20
  Add this line to your application's Gemfile:
29
21
 
@@ -170,17 +162,12 @@ param = {
170
162
  weight: # [Numo::DFloat] Weight values
171
163
  Numo::DFloat[0.4, 0.4, 0.2],
172
164
  p: 0.1, # [Float] Sensitiveness of loss of support vector regression
165
+ nu: 0.5, # [Float] one-class SVM approximates the fraction of data as outliers
173
166
  verbose: false, # [Boolean] Whether to output learning process message
174
167
  random_seed: 1 # [Integer/Nil] Random seed
175
168
  }
176
169
  ```
177
170
 
178
- ## Development
179
-
180
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
181
-
182
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
183
-
184
171
  ## Contributing
185
172
 
186
173
  Bug reports and pull requests are welcome on GitHub at https://github.com/yoshoku/numo-liblinear.
@@ -189,4 +176,4 @@ This project is intended to be a safe, welcoming space for collaboration, and co
189
176
  ## Code of Conduct
190
177
 
191
178
  Everyone interacting in the Numo::Liblinear project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow
192
- the [code of conduct](https://github.com/yoshoku/numo-liblinear/blob/master/CODE_OF_CONDUCT.md).
179
+ the [code of conduct](https://github.com/yoshoku/numo-liblinear/blob/main/CODE_OF_CONDUCT.md).
data/Steepfile ADDED
@@ -0,0 +1,20 @@
1
+ target :lib do
2
+ signature "sig"
3
+ #
4
+ check "lib" # Directory name
5
+ # check "Gemfile" # File name
6
+ # check "app/models/**/*.rb" # Glob
7
+ # # ignore "lib/templates/*.rb"
8
+ #
9
+ # # library "pathname", "set" # Standard libraries
10
+ # library "numo-narray" # Gems
11
+ end
12
+
13
+ # target :spec do
14
+ # signature "sig", "sig-private"
15
+ #
16
+ # check "spec"
17
+ #
18
+ # # library "pathname", "set" # Standard libraries
19
+ # # library "rspec"
20
+ # end
@@ -27,6 +27,8 @@ int* nary_to_int_vec(VALUE vec_val)
27
27
  vec_pt = (int32_t*)na_get_pointer_for_read(vec_val);
28
28
  for (i = 0; i < n_elements; i++) { vec[i] = (int)vec_pt[i]; }
29
29
 
30
+ RB_GC_GUARD(vec_val);
31
+
30
32
  return vec;
31
33
  }
32
34
 
@@ -56,6 +58,8 @@ double* nary_to_dbl_vec(VALUE vec_val)
56
58
  vec_pt = (double*)na_get_pointer_for_read(vec_val);
57
59
  memcpy(vec, vec_pt, n_elements * sizeof(double));
58
60
 
61
+ RB_GC_GUARD(vec_val);
62
+
59
63
  return vec;
60
64
  }
61
65
 
@@ -98,6 +102,8 @@ double** nary_to_dbl_mat(VALUE mat_val)
98
102
  }
99
103
  }
100
104
 
105
+ RB_GC_GUARD(mat_val);
106
+
101
107
  return mat;
102
108
  }
103
109
 
@@ -26,14 +26,13 @@ if RUBY_PLATFORM =~ /mswin|cygwin|mingw/
26
26
  end
27
27
  end
28
28
 
29
- unless have_header('linear.h')
30
- puts 'linear.h not found.'
31
- exit(1)
32
- end
29
+ $LDFLAGS << ' -lstdc++ '
33
30
 
34
- unless have_library('linear')
35
- puts 'liblinear not found.'
36
- exit(1)
37
- end
31
+ $srcs = Dir.glob("#{$srcdir}/*.c").map { |path| File.basename(path) }
32
+ $srcs.concat(%w[linear.cpp newton.cpp daxpy.c ddot.c dnrm2.c dscal.c])
33
+
34
+ $INCFLAGS << " -I$(srcdir)/liblinear"
35
+ $VPATH << "$(srcdir)/liblinear"
36
+ $VPATH << "$(srcdir)/liblinear/blas"
38
37
 
39
38
  create_makefile('numo/liblinear/liblinearext')
@@ -0,0 +1,25 @@
1
+ /* blas.h -- C header file for BLAS Ver 1.0 */
2
+ /* Jesse Bennett March 23, 2000 */
3
+
4
+ /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed."
5
+
6
+ - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
7
+
8
+ #ifndef BLAS_INCLUDE
9
+ #define BLAS_INCLUDE
10
+
11
+ /* Data types specific to BLAS implementation */
12
+ typedef struct { float r, i; } fcomplex;
13
+ typedef struct { double r, i; } dcomplex;
14
+ typedef int blasbool;
15
+
16
+ #include "blasp.h" /* Prototypes for all BLAS functions */
17
+
18
+ #define FALSE 0
19
+ #define TRUE 1
20
+
21
+ /* Macro functions */
22
+ #define MIN(a,b) ((a) <= (b) ? (a) : (b))
23
+ #define MAX(a,b) ((a) >= (b) ? (a) : (b))
24
+
25
+ #endif
@@ -0,0 +1,438 @@
1
+ /* blasp.h -- C prototypes for BLAS Ver 1.0 */
2
+ /* Jesse Bennett March 23, 2000 */
3
+
4
+ /* Functions listed in alphabetical order */
5
+
6
+ #ifdef __cplusplus
7
+ extern "C" {
8
+ #endif
9
+
10
+ #ifdef F2C_COMPAT
11
+
12
+ void cdotc_(fcomplex *dotval, int *n, fcomplex *cx, int *incx,
13
+ fcomplex *cy, int *incy);
14
+
15
+ void cdotu_(fcomplex *dotval, int *n, fcomplex *cx, int *incx,
16
+ fcomplex *cy, int *incy);
17
+
18
+ double sasum_(int *n, float *sx, int *incx);
19
+
20
+ double scasum_(int *n, fcomplex *cx, int *incx);
21
+
22
+ double scnrm2_(int *n, fcomplex *x, int *incx);
23
+
24
+ double sdot_(int *n, float *sx, int *incx, float *sy, int *incy);
25
+
26
+ double snrm2_(int *n, float *x, int *incx);
27
+
28
+ void zdotc_(dcomplex *dotval, int *n, dcomplex *cx, int *incx,
29
+ dcomplex *cy, int *incy);
30
+
31
+ void zdotu_(dcomplex *dotval, int *n, dcomplex *cx, int *incx,
32
+ dcomplex *cy, int *incy);
33
+
34
+ #else
35
+
36
+ fcomplex cdotc_(int *n, fcomplex *cx, int *incx, fcomplex *cy, int *incy);
37
+
38
+ fcomplex cdotu_(int *n, fcomplex *cx, int *incx, fcomplex *cy, int *incy);
39
+
40
+ float sasum_(int *n, float *sx, int *incx);
41
+
42
+ float scasum_(int *n, fcomplex *cx, int *incx);
43
+
44
+ float scnrm2_(int *n, fcomplex *x, int *incx);
45
+
46
+ float sdot_(int *n, float *sx, int *incx, float *sy, int *incy);
47
+
48
+ float snrm2_(int *n, float *x, int *incx);
49
+
50
+ dcomplex zdotc_(int *n, dcomplex *cx, int *incx, dcomplex *cy, int *incy);
51
+
52
+ dcomplex zdotu_(int *n, dcomplex *cx, int *incx, dcomplex *cy, int *incy);
53
+
54
+ #endif
55
+
56
+ /* Remaining functions listed in alphabetical order */
57
+
58
+ int caxpy_(int *n, fcomplex *ca, fcomplex *cx, int *incx, fcomplex *cy,
59
+ int *incy);
60
+
61
+ int ccopy_(int *n, fcomplex *cx, int *incx, fcomplex *cy, int *incy);
62
+
63
+ int cgbmv_(char *trans, int *m, int *n, int *kl, int *ku,
64
+ fcomplex *alpha, fcomplex *a, int *lda, fcomplex *x, int *incx,
65
+ fcomplex *beta, fcomplex *y, int *incy);
66
+
67
+ int cgemm_(char *transa, char *transb, int *m, int *n, int *k,
68
+ fcomplex *alpha, fcomplex *a, int *lda, fcomplex *b, int *ldb,
69
+ fcomplex *beta, fcomplex *c, int *ldc);
70
+
71
+ int cgemv_(char *trans, int *m, int *n, fcomplex *alpha, fcomplex *a,
72
+ int *lda, fcomplex *x, int *incx, fcomplex *beta, fcomplex *y,
73
+ int *incy);
74
+
75
+ int cgerc_(int *m, int *n, fcomplex *alpha, fcomplex *x, int *incx,
76
+ fcomplex *y, int *incy, fcomplex *a, int *lda);
77
+
78
+ int cgeru_(int *m, int *n, fcomplex *alpha, fcomplex *x, int *incx,
79
+ fcomplex *y, int *incy, fcomplex *a, int *lda);
80
+
81
+ int chbmv_(char *uplo, int *n, int *k, fcomplex *alpha, fcomplex *a,
82
+ int *lda, fcomplex *x, int *incx, fcomplex *beta, fcomplex *y,
83
+ int *incy);
84
+
85
+ int chemm_(char *side, char *uplo, int *m, int *n, fcomplex *alpha,
86
+ fcomplex *a, int *lda, fcomplex *b, int *ldb, fcomplex *beta,
87
+ fcomplex *c, int *ldc);
88
+
89
+ int chemv_(char *uplo, int *n, fcomplex *alpha, fcomplex *a, int *lda,
90
+ fcomplex *x, int *incx, fcomplex *beta, fcomplex *y, int *incy);
91
+
92
+ int cher_(char *uplo, int *n, float *alpha, fcomplex *x, int *incx,
93
+ fcomplex *a, int *lda);
94
+
95
+ int cher2_(char *uplo, int *n, fcomplex *alpha, fcomplex *x, int *incx,
96
+ fcomplex *y, int *incy, fcomplex *a, int *lda);
97
+
98
+ int cher2k_(char *uplo, char *trans, int *n, int *k, fcomplex *alpha,
99
+ fcomplex *a, int *lda, fcomplex *b, int *ldb, float *beta,
100
+ fcomplex *c, int *ldc);
101
+
102
+ int cherk_(char *uplo, char *trans, int *n, int *k, float *alpha,
103
+ fcomplex *a, int *lda, float *beta, fcomplex *c, int *ldc);
104
+
105
+ int chpmv_(char *uplo, int *n, fcomplex *alpha, fcomplex *ap, fcomplex *x,
106
+ int *incx, fcomplex *beta, fcomplex *y, int *incy);
107
+
108
+ int chpr_(char *uplo, int *n, float *alpha, fcomplex *x, int *incx,
109
+ fcomplex *ap);
110
+
111
+ int chpr2_(char *uplo, int *n, fcomplex *alpha, fcomplex *x, int *incx,
112
+ fcomplex *y, int *incy, fcomplex *ap);
113
+
114
+ int crotg_(fcomplex *ca, fcomplex *cb, float *c, fcomplex *s);
115
+
116
+ int cscal_(int *n, fcomplex *ca, fcomplex *cx, int *incx);
117
+
118
+ int csscal_(int *n, float *sa, fcomplex *cx, int *incx);
119
+
120
+ int cswap_(int *n, fcomplex *cx, int *incx, fcomplex *cy, int *incy);
121
+
122
+ int csymm_(char *side, char *uplo, int *m, int *n, fcomplex *alpha,
123
+ fcomplex *a, int *lda, fcomplex *b, int *ldb, fcomplex *beta,
124
+ fcomplex *c, int *ldc);
125
+
126
+ int csyr2k_(char *uplo, char *trans, int *n, int *k, fcomplex *alpha,
127
+ fcomplex *a, int *lda, fcomplex *b, int *ldb, fcomplex *beta,
128
+ fcomplex *c, int *ldc);
129
+
130
+ int csyrk_(char *uplo, char *trans, int *n, int *k, fcomplex *alpha,
131
+ fcomplex *a, int *lda, fcomplex *beta, fcomplex *c, int *ldc);
132
+
133
+ int ctbmv_(char *uplo, char *trans, char *diag, int *n, int *k,
134
+ fcomplex *a, int *lda, fcomplex *x, int *incx);
135
+
136
+ int ctbsv_(char *uplo, char *trans, char *diag, int *n, int *k,
137
+ fcomplex *a, int *lda, fcomplex *x, int *incx);
138
+
139
+ int ctpmv_(char *uplo, char *trans, char *diag, int *n, fcomplex *ap,
140
+ fcomplex *x, int *incx);
141
+
142
+ int ctpsv_(char *uplo, char *trans, char *diag, int *n, fcomplex *ap,
143
+ fcomplex *x, int *incx);
144
+
145
+ int ctrmm_(char *side, char *uplo, char *transa, char *diag, int *m,
146
+ int *n, fcomplex *alpha, fcomplex *a, int *lda, fcomplex *b,
147
+ int *ldb);
148
+
149
+ int ctrmv_(char *uplo, char *trans, char *diag, int *n, fcomplex *a,
150
+ int *lda, fcomplex *x, int *incx);
151
+
152
+ int ctrsm_(char *side, char *uplo, char *transa, char *diag, int *m,
153
+ int *n, fcomplex *alpha, fcomplex *a, int *lda, fcomplex *b,
154
+ int *ldb);
155
+
156
+ int ctrsv_(char *uplo, char *trans, char *diag, int *n, fcomplex *a,
157
+ int *lda, fcomplex *x, int *incx);
158
+
159
+ int daxpy_(int *n, double *sa, double *sx, int *incx, double *sy,
160
+ int *incy);
161
+
162
+ int dcopy_(int *n, double *sx, int *incx, double *sy, int *incy);
163
+
164
+ int dgbmv_(char *trans, int *m, int *n, int *kl, int *ku,
165
+ double *alpha, double *a, int *lda, double *x, int *incx,
166
+ double *beta, double *y, int *incy);
167
+
168
+ int dgemm_(char *transa, char *transb, int *m, int *n, int *k,
169
+ double *alpha, double *a, int *lda, double *b, int *ldb,
170
+ double *beta, double *c, int *ldc);
171
+
172
+ int dgemv_(char *trans, int *m, int *n, double *alpha, double *a,
173
+ int *lda, double *x, int *incx, double *beta, double *y,
174
+ int *incy);
175
+
176
+ int dger_(int *m, int *n, double *alpha, double *x, int *incx,
177
+ double *y, int *incy, double *a, int *lda);
178
+
179
+ int drot_(int *n, double *sx, int *incx, double *sy, int *incy,
180
+ double *c, double *s);
181
+
182
+ int drotg_(double *sa, double *sb, double *c, double *s);
183
+
184
+ int dsbmv_(char *uplo, int *n, int *k, double *alpha, double *a,
185
+ int *lda, double *x, int *incx, double *beta, double *y,
186
+ int *incy);
187
+
188
+ int dscal_(int *n, double *sa, double *sx, int *incx);
189
+
190
+ int dspmv_(char *uplo, int *n, double *alpha, double *ap, double *x,
191
+ int *incx, double *beta, double *y, int *incy);
192
+
193
+ int dspr_(char *uplo, int *n, double *alpha, double *x, int *incx,
194
+ double *ap);
195
+
196
+ int dspr2_(char *uplo, int *n, double *alpha, double *x, int *incx,
197
+ double *y, int *incy, double *ap);
198
+
199
+ int dswap_(int *n, double *sx, int *incx, double *sy, int *incy);
200
+
201
+ int dsymm_(char *side, char *uplo, int *m, int *n, double *alpha,
202
+ double *a, int *lda, double *b, int *ldb, double *beta,
203
+ double *c, int *ldc);
204
+
205
+ int dsymv_(char *uplo, int *n, double *alpha, double *a, int *lda,
206
+ double *x, int *incx, double *beta, double *y, int *incy);
207
+
208
+ int dsyr_(char *uplo, int *n, double *alpha, double *x, int *incx,
209
+ double *a, int *lda);
210
+
211
+ int dsyr2_(char *uplo, int *n, double *alpha, double *x, int *incx,
212
+ double *y, int *incy, double *a, int *lda);
213
+
214
+ int dsyr2k_(char *uplo, char *trans, int *n, int *k, double *alpha,
215
+ double *a, int *lda, double *b, int *ldb, double *beta,
216
+ double *c, int *ldc);
217
+
218
+ int dsyrk_(char *uplo, char *trans, int *n, int *k, double *alpha,
219
+ double *a, int *lda, double *beta, double *c, int *ldc);
220
+
221
+ int dtbmv_(char *uplo, char *trans, char *diag, int *n, int *k,
222
+ double *a, int *lda, double *x, int *incx);
223
+
224
+ int dtbsv_(char *uplo, char *trans, char *diag, int *n, int *k,
225
+ double *a, int *lda, double *x, int *incx);
226
+
227
+ int dtpmv_(char *uplo, char *trans, char *diag, int *n, double *ap,
228
+ double *x, int *incx);
229
+
230
+ int dtpsv_(char *uplo, char *trans, char *diag, int *n, double *ap,
231
+ double *x, int *incx);
232
+
233
+ int dtrmm_(char *side, char *uplo, char *transa, char *diag, int *m,
234
+ int *n, double *alpha, double *a, int *lda, double *b,
235
+ int *ldb);
236
+
237
+ int dtrmv_(char *uplo, char *trans, char *diag, int *n, double *a,
238
+ int *lda, double *x, int *incx);
239
+
240
+ int dtrsm_(char *side, char *uplo, char *transa, char *diag, int *m,
241
+ int *n, double *alpha, double *a, int *lda, double *b,
242
+ int *ldb);
243
+
244
+ int dtrsv_(char *uplo, char *trans, char *diag, int *n, double *a,
245
+ int *lda, double *x, int *incx);
246
+
247
+
248
+ int saxpy_(int *n, float *sa, float *sx, int *incx, float *sy, int *incy);
249
+
250
+ int scopy_(int *n, float *sx, int *incx, float *sy, int *incy);
251
+
252
+ int sgbmv_(char *trans, int *m, int *n, int *kl, int *ku,
253
+ float *alpha, float *a, int *lda, float *x, int *incx,
254
+ float *beta, float *y, int *incy);
255
+
256
+ int sgemm_(char *transa, char *transb, int *m, int *n, int *k,
257
+ float *alpha, float *a, int *lda, float *b, int *ldb,
258
+ float *beta, float *c, int *ldc);
259
+
260
+ int sgemv_(char *trans, int *m, int *n, float *alpha, float *a,
261
+ int *lda, float *x, int *incx, float *beta, float *y,
262
+ int *incy);
263
+
264
+ int sger_(int *m, int *n, float *alpha, float *x, int *incx,
265
+ float *y, int *incy, float *a, int *lda);
266
+
267
+ int srot_(int *n, float *sx, int *incx, float *sy, int *incy,
268
+ float *c, float *s);
269
+
270
+ int srotg_(float *sa, float *sb, float *c, float *s);
271
+
272
+ int ssbmv_(char *uplo, int *n, int *k, float *alpha, float *a,
273
+ int *lda, float *x, int *incx, float *beta, float *y,
274
+ int *incy);
275
+
276
+ int sscal_(int *n, float *sa, float *sx, int *incx);
277
+
278
+ int sspmv_(char *uplo, int *n, float *alpha, float *ap, float *x,
279
+ int *incx, float *beta, float *y, int *incy);
280
+
281
+ int sspr_(char *uplo, int *n, float *alpha, float *x, int *incx,
282
+ float *ap);
283
+
284
+ int sspr2_(char *uplo, int *n, float *alpha, float *x, int *incx,
285
+ float *y, int *incy, float *ap);
286
+
287
+ int sswap_(int *n, float *sx, int *incx, float *sy, int *incy);
288
+
289
+ int ssymm_(char *side, char *uplo, int *m, int *n, float *alpha,
290
+ float *a, int *lda, float *b, int *ldb, float *beta,
291
+ float *c, int *ldc);
292
+
293
+ int ssymv_(char *uplo, int *n, float *alpha, float *a, int *lda,
294
+ float *x, int *incx, float *beta, float *y, int *incy);
295
+
296
+ int ssyr_(char *uplo, int *n, float *alpha, float *x, int *incx,
297
+ float *a, int *lda);
298
+
299
+ int ssyr2_(char *uplo, int *n, float *alpha, float *x, int *incx,
300
+ float *y, int *incy, float *a, int *lda);
301
+
302
+ int ssyr2k_(char *uplo, char *trans, int *n, int *k, float *alpha,
303
+ float *a, int *lda, float *b, int *ldb, float *beta,
304
+ float *c, int *ldc);
305
+
306
+ int ssyrk_(char *uplo, char *trans, int *n, int *k, float *alpha,
307
+ float *a, int *lda, float *beta, float *c, int *ldc);
308
+
309
+ int stbmv_(char *uplo, char *trans, char *diag, int *n, int *k,
310
+ float *a, int *lda, float *x, int *incx);
311
+
312
+ int stbsv_(char *uplo, char *trans, char *diag, int *n, int *k,
313
+ float *a, int *lda, float *x, int *incx);
314
+
315
+ int stpmv_(char *uplo, char *trans, char *diag, int *n, float *ap,
316
+ float *x, int *incx);
317
+
318
+ int stpsv_(char *uplo, char *trans, char *diag, int *n, float *ap,
319
+ float *x, int *incx);
320
+
321
+ int strmm_(char *side, char *uplo, char *transa, char *diag, int *m,
322
+ int *n, float *alpha, float *a, int *lda, float *b,
323
+ int *ldb);
324
+
325
+ int strmv_(char *uplo, char *trans, char *diag, int *n, float *a,
326
+ int *lda, float *x, int *incx);
327
+
328
+ int strsm_(char *side, char *uplo, char *transa, char *diag, int *m,
329
+ int *n, float *alpha, float *a, int *lda, float *b,
330
+ int *ldb);
331
+
332
+ int strsv_(char *uplo, char *trans, char *diag, int *n, float *a,
333
+ int *lda, float *x, int *incx);
334
+
335
+ int zaxpy_(int *n, dcomplex *ca, dcomplex *cx, int *incx, dcomplex *cy,
336
+ int *incy);
337
+
338
+ int zcopy_(int *n, dcomplex *cx, int *incx, dcomplex *cy, int *incy);
339
+
340
+ int zdscal_(int *n, double *sa, dcomplex *cx, int *incx);
341
+
342
+ int zgbmv_(char *trans, int *m, int *n, int *kl, int *ku,
343
+ dcomplex *alpha, dcomplex *a, int *lda, dcomplex *x, int *incx,
344
+ dcomplex *beta, dcomplex *y, int *incy);
345
+
346
+ int zgemm_(char *transa, char *transb, int *m, int *n, int *k,
347
+ dcomplex *alpha, dcomplex *a, int *lda, dcomplex *b, int *ldb,
348
+ dcomplex *beta, dcomplex *c, int *ldc);
349
+
350
+ int zgemv_(char *trans, int *m, int *n, dcomplex *alpha, dcomplex *a,
351
+ int *lda, dcomplex *x, int *incx, dcomplex *beta, dcomplex *y,
352
+ int *incy);
353
+
354
+ int zgerc_(int *m, int *n, dcomplex *alpha, dcomplex *x, int *incx,
355
+ dcomplex *y, int *incy, dcomplex *a, int *lda);
356
+
357
+ int zgeru_(int *m, int *n, dcomplex *alpha, dcomplex *x, int *incx,
358
+ dcomplex *y, int *incy, dcomplex *a, int *lda);
359
+
360
+ int zhbmv_(char *uplo, int *n, int *k, dcomplex *alpha, dcomplex *a,
361
+ int *lda, dcomplex *x, int *incx, dcomplex *beta, dcomplex *y,
362
+ int *incy);
363
+
364
+ int zhemm_(char *side, char *uplo, int *m, int *n, dcomplex *alpha,
365
+ dcomplex *a, int *lda, dcomplex *b, int *ldb, dcomplex *beta,
366
+ dcomplex *c, int *ldc);
367
+
368
+ int zhemv_(char *uplo, int *n, dcomplex *alpha, dcomplex *a, int *lda,
369
+ dcomplex *x, int *incx, dcomplex *beta, dcomplex *y, int *incy);
370
+
371
+ int zher_(char *uplo, int *n, double *alpha, dcomplex *x, int *incx,
372
+ dcomplex *a, int *lda);
373
+
374
+ int zher2_(char *uplo, int *n, dcomplex *alpha, dcomplex *x, int *incx,
375
+ dcomplex *y, int *incy, dcomplex *a, int *lda);
376
+
377
+ int zher2k_(char *uplo, char *trans, int *n, int *k, dcomplex *alpha,
378
+ dcomplex *a, int *lda, dcomplex *b, int *ldb, double *beta,
379
+ dcomplex *c, int *ldc);
380
+
381
+ int zherk_(char *uplo, char *trans, int *n, int *k, double *alpha,
382
+ dcomplex *a, int *lda, double *beta, dcomplex *c, int *ldc);
383
+
384
+ int zhpmv_(char *uplo, int *n, dcomplex *alpha, dcomplex *ap, dcomplex *x,
385
+ int *incx, dcomplex *beta, dcomplex *y, int *incy);
386
+
387
+ int zhpr_(char *uplo, int *n, double *alpha, dcomplex *x, int *incx,
388
+ dcomplex *ap);
389
+
390
+ int zhpr2_(char *uplo, int *n, dcomplex *alpha, dcomplex *x, int *incx,
391
+ dcomplex *y, int *incy, dcomplex *ap);
392
+
393
+ int zrotg_(dcomplex *ca, dcomplex *cb, double *c, dcomplex *s);
394
+
395
+ int zscal_(int *n, dcomplex *ca, dcomplex *cx, int *incx);
396
+
397
+ int zswap_(int *n, dcomplex *cx, int *incx, dcomplex *cy, int *incy);
398
+
399
+ int zsymm_(char *side, char *uplo, int *m, int *n, dcomplex *alpha,
400
+ dcomplex *a, int *lda, dcomplex *b, int *ldb, dcomplex *beta,
401
+ dcomplex *c, int *ldc);
402
+
403
+ int zsyr2k_(char *uplo, char *trans, int *n, int *k, dcomplex *alpha,
404
+ dcomplex *a, int *lda, dcomplex *b, int *ldb, dcomplex *beta,
405
+ dcomplex *c, int *ldc);
406
+
407
+ int zsyrk_(char *uplo, char *trans, int *n, int *k, dcomplex *alpha,
408
+ dcomplex *a, int *lda, dcomplex *beta, dcomplex *c, int *ldc);
409
+
410
+ int ztbmv_(char *uplo, char *trans, char *diag, int *n, int *k,
411
+ dcomplex *a, int *lda, dcomplex *x, int *incx);
412
+
413
+ int ztbsv_(char *uplo, char *trans, char *diag, int *n, int *k,
414
+ dcomplex *a, int *lda, dcomplex *x, int *incx);
415
+
416
+ int ztpmv_(char *uplo, char *trans, char *diag, int *n, dcomplex *ap,
417
+ dcomplex *x, int *incx);
418
+
419
+ int ztpsv_(char *uplo, char *trans, char *diag, int *n, dcomplex *ap,
420
+ dcomplex *x, int *incx);
421
+
422
+ int ztrmm_(char *side, char *uplo, char *transa, char *diag, int *m,
423
+ int *n, dcomplex *alpha, dcomplex *a, int *lda, dcomplex *b,
424
+ int *ldb);
425
+
426
+ int ztrmv_(char *uplo, char *trans, char *diag, int *n, dcomplex *a,
427
+ int *lda, dcomplex *x, int *incx);
428
+
429
+ int ztrsm_(char *side, char *uplo, char *transa, char *diag, int *m,
430
+ int *n, dcomplex *alpha, dcomplex *a, int *lda, dcomplex *b,
431
+ int *ldb);
432
+
433
+ int ztrsv_(char *uplo, char *trans, char *diag, int *n, dcomplex *a,
434
+ int *lda, dcomplex *x, int *incx);
435
+
436
+ #ifdef __cplusplus
437
+ }
438
+ #endif