numo-linalg 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/README.md +80 -0
  4. data/Rakefile +18 -0
  5. data/ext/numo/linalg/blas/blas.c +352 -0
  6. data/ext/numo/linalg/blas/cblas.h +575 -0
  7. data/ext/numo/linalg/blas/cblas_t.h +563 -0
  8. data/ext/numo/linalg/blas/depend.erb +23 -0
  9. data/ext/numo/linalg/blas/extconf.rb +67 -0
  10. data/ext/numo/linalg/blas/gen/cogen.rb +72 -0
  11. data/ext/numo/linalg/blas/gen/decl.rb +203 -0
  12. data/ext/numo/linalg/blas/gen/desc.rb +8138 -0
  13. data/ext/numo/linalg/blas/gen/erbpp2.rb +339 -0
  14. data/ext/numo/linalg/blas/gen/replace_cblas_h.rb +27 -0
  15. data/ext/numo/linalg/blas/gen/spec.rb +93 -0
  16. data/ext/numo/linalg/blas/numo_blas.h +41 -0
  17. data/ext/numo/linalg/blas/tmpl/axpy.c +75 -0
  18. data/ext/numo/linalg/blas/tmpl/copy.c +57 -0
  19. data/ext/numo/linalg/blas/tmpl/def_c.c +3 -0
  20. data/ext/numo/linalg/blas/tmpl/def_d.c +3 -0
  21. data/ext/numo/linalg/blas/tmpl/def_s.c +3 -0
  22. data/ext/numo/linalg/blas/tmpl/def_z.c +3 -0
  23. data/ext/numo/linalg/blas/tmpl/dot.c +68 -0
  24. data/ext/numo/linalg/blas/tmpl/ger.c +114 -0
  25. data/ext/numo/linalg/blas/tmpl/init_class.c +20 -0
  26. data/ext/numo/linalg/blas/tmpl/init_module.c +12 -0
  27. data/ext/numo/linalg/blas/tmpl/lib.c +40 -0
  28. data/ext/numo/linalg/blas/tmpl/mm.c +214 -0
  29. data/ext/numo/linalg/blas/tmpl/module.c +9 -0
  30. data/ext/numo/linalg/blas/tmpl/mv.c +194 -0
  31. data/ext/numo/linalg/blas/tmpl/nrm2.c +79 -0
  32. data/ext/numo/linalg/blas/tmpl/rot.c +65 -0
  33. data/ext/numo/linalg/blas/tmpl/rotm.c +82 -0
  34. data/ext/numo/linalg/blas/tmpl/scal.c +69 -0
  35. data/ext/numo/linalg/blas/tmpl/sdsdot.c +77 -0
  36. data/ext/numo/linalg/blas/tmpl/set_prefix.c +16 -0
  37. data/ext/numo/linalg/blas/tmpl/swap.c +57 -0
  38. data/ext/numo/linalg/blas/tmpl/syr.c +102 -0
  39. data/ext/numo/linalg/blas/tmpl/syr2.c +110 -0
  40. data/ext/numo/linalg/blas/tmpl/syr2k.c +129 -0
  41. data/ext/numo/linalg/blas/tmpl/syrk.c +132 -0
  42. data/ext/numo/linalg/lapack/depend.erb +23 -0
  43. data/ext/numo/linalg/lapack/extconf.rb +45 -0
  44. data/ext/numo/linalg/lapack/gen/cogen.rb +74 -0
  45. data/ext/numo/linalg/lapack/gen/desc.rb +151278 -0
  46. data/ext/numo/linalg/lapack/gen/replace_lapacke_h.rb +32 -0
  47. data/ext/numo/linalg/lapack/gen/spec.rb +104 -0
  48. data/ext/numo/linalg/lapack/lapack.c +387 -0
  49. data/ext/numo/linalg/lapack/lapacke.h +16425 -0
  50. data/ext/numo/linalg/lapack/lapacke_config.h +119 -0
  51. data/ext/numo/linalg/lapack/lapacke_mangling.h +17 -0
  52. data/ext/numo/linalg/lapack/lapacke_t.h +10550 -0
  53. data/ext/numo/linalg/lapack/numo_lapack.h +42 -0
  54. data/ext/numo/linalg/lapack/tmpl/def_c.c +3 -0
  55. data/ext/numo/linalg/lapack/tmpl/def_d.c +7 -0
  56. data/ext/numo/linalg/lapack/tmpl/def_s.c +7 -0
  57. data/ext/numo/linalg/lapack/tmpl/def_z.c +3 -0
  58. data/ext/numo/linalg/lapack/tmpl/fact.c +179 -0
  59. data/ext/numo/linalg/lapack/tmpl/geev.c +123 -0
  60. data/ext/numo/linalg/lapack/tmpl/gels.c +232 -0
  61. data/ext/numo/linalg/lapack/tmpl/gesv.c +149 -0
  62. data/ext/numo/linalg/lapack/tmpl/gesvd.c +189 -0
  63. data/ext/numo/linalg/lapack/tmpl/ggev.c +138 -0
  64. data/ext/numo/linalg/lapack/tmpl/gqr.c +121 -0
  65. data/ext/numo/linalg/lapack/tmpl/init_class.c +20 -0
  66. data/ext/numo/linalg/lapack/tmpl/init_module.c +12 -0
  67. data/ext/numo/linalg/lapack/tmpl/lange.c +79 -0
  68. data/ext/numo/linalg/lapack/tmpl/lib.c +40 -0
  69. data/ext/numo/linalg/lapack/tmpl/module.c +9 -0
  70. data/ext/numo/linalg/lapack/tmpl/syev.c +91 -0
  71. data/ext/numo/linalg/lapack/tmpl/sygv.c +104 -0
  72. data/ext/numo/linalg/lapack/tmpl/trf.c +276 -0
  73. data/ext/numo/linalg/numo_linalg.h +115 -0
  74. data/lib/numo/linalg.rb +3 -0
  75. data/lib/numo/linalg/function.rb +1008 -0
  76. data/lib/numo/linalg/linalg.rb +7 -0
  77. data/lib/numo/linalg/loader.rb +174 -0
  78. data/lib/numo/linalg/use/atlas.rb +3 -0
  79. data/lib/numo/linalg/use/lapack.rb +3 -0
  80. data/lib/numo/linalg/use/mkl.rb +3 -0
  81. data/lib/numo/linalg/use/openblas.rb +3 -0
  82. data/lib/numo/linalg/version.rb +5 -0
  83. data/numo-linalg.gemspec +26 -0
  84. data/spec/lapack_spec.rb +13 -0
  85. metadata +172 -0
@@ -0,0 +1,575 @@
1
+ #ifndef CBLAS_H
2
+ #define CBLAS_H
3
+ #include <stddef.h>
4
+
5
+ /*
6
+ * Enumerated and derived types
7
+ */
8
+ #define CBLAS_INDEX size_t /* this may vary between platforms */
9
+
10
+ enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
11
+ enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
12
+ enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
13
+ enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
14
+ enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
15
+
16
+ #ifdef __cplusplus
17
+ extern "C" {
18
+ #endif
19
+
20
+ /*
21
+ * ===========================================================================
22
+ * Prototypes for level 1 BLAS functions (complex are recast as routines)
23
+ * ===========================================================================
24
+ */
25
+ float cblas_sdsdot(const int N, const float alpha, const float *X,
26
+ const int incX, const float *Y, const int incY);
27
+ double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
28
+ const int incY);
29
+ float cblas_sdot(const int N, const float *X, const int incX,
30
+ const float *Y, const int incY);
31
+ double cblas_ddot(const int N, const double *X, const int incX,
32
+ const double *Y, const int incY);
33
+
34
+ /*
35
+ * Functions having prefixes Z and C only
36
+ */
37
+ void cblas_cdotu_sub(const int N, const void *X, const int incX,
38
+ const void *Y, const int incY, void *dotu);
39
+ void cblas_cdotc_sub(const int N, const void *X, const int incX,
40
+ const void *Y, const int incY, void *dotc);
41
+
42
+ void cblas_zdotu_sub(const int N, const void *X, const int incX,
43
+ const void *Y, const int incY, void *dotu);
44
+ void cblas_zdotc_sub(const int N, const void *X, const int incX,
45
+ const void *Y, const int incY, void *dotc);
46
+
47
+
48
+ /*
49
+ * Functions having prefixes S D SC DZ
50
+ */
51
+ float cblas_snrm2(const int N, const float *X, const int incX);
52
+ float cblas_sasum(const int N, const float *X, const int incX);
53
+
54
+ double cblas_dnrm2(const int N, const double *X, const int incX);
55
+ double cblas_dasum(const int N, const double *X, const int incX);
56
+
57
+ float cblas_scnrm2(const int N, const void *X, const int incX);
58
+ float cblas_scasum(const int N, const void *X, const int incX);
59
+
60
+ double cblas_dznrm2(const int N, const void *X, const int incX);
61
+ double cblas_dzasum(const int N, const void *X, const int incX);
62
+
63
+
64
+ /*
65
+ * Functions having standard 4 prefixes (S D C Z)
66
+ */
67
+ CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX);
68
+ CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
69
+ CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX);
70
+ CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX);
71
+
72
+ /*
73
+ * ===========================================================================
74
+ * Prototypes for level 1 BLAS routines
75
+ * ===========================================================================
76
+ */
77
+
78
+ /*
79
+ * Routines with standard 4 prefixes (s, d, c, z)
80
+ */
81
+ void cblas_sswap(const int N, float *X, const int incX,
82
+ float *Y, const int incY);
83
+ void cblas_scopy(const int N, const float *X, const int incX,
84
+ float *Y, const int incY);
85
+ void cblas_saxpy(const int N, const float alpha, const float *X,
86
+ const int incX, float *Y, const int incY);
87
+
88
+ void cblas_dswap(const int N, double *X, const int incX,
89
+ double *Y, const int incY);
90
+ void cblas_dcopy(const int N, const double *X, const int incX,
91
+ double *Y, const int incY);
92
+ void cblas_daxpy(const int N, const double alpha, const double *X,
93
+ const int incX, double *Y, const int incY);
94
+
95
+ void cblas_cswap(const int N, void *X, const int incX,
96
+ void *Y, const int incY);
97
+ void cblas_ccopy(const int N, const void *X, const int incX,
98
+ void *Y, const int incY);
99
+ void cblas_caxpy(const int N, const void *alpha, const void *X,
100
+ const int incX, void *Y, const int incY);
101
+
102
+ void cblas_zswap(const int N, void *X, const int incX,
103
+ void *Y, const int incY);
104
+ void cblas_zcopy(const int N, const void *X, const int incX,
105
+ void *Y, const int incY);
106
+ void cblas_zaxpy(const int N, const void *alpha, const void *X,
107
+ const int incX, void *Y, const int incY);
108
+
109
+
110
+ /*
111
+ * Routines with S and D prefix only
112
+ */
113
+ void cblas_srotg(float *a, float *b, float *c, float *s);
114
+ void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
115
+ void cblas_srot(const int N, float *X, const int incX,
116
+ float *Y, const int incY, const float c, const float s);
117
+ void cblas_srotm(const int N, float *X, const int incX,
118
+ float *Y, const int incY, const float *P);
119
+
120
+ void cblas_drotg(double *a, double *b, double *c, double *s);
121
+ void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
122
+ void cblas_drot(const int N, double *X, const int incX,
123
+ double *Y, const int incY, const double c, const double s);
124
+ void cblas_drotm(const int N, double *X, const int incX,
125
+ double *Y, const int incY, const double *P);
126
+
127
+
128
+ /*
129
+ * Routines with S D C Z CS and ZD prefixes
130
+ */
131
+ void cblas_sscal(const int N, const float alpha, float *X, const int incX);
132
+ void cblas_dscal(const int N, const double alpha, double *X, const int incX);
133
+ void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
134
+ void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
135
+ void cblas_csscal(const int N, const float alpha, void *X, const int incX);
136
+ void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
137
+
138
+ /*
139
+ * ===========================================================================
140
+ * Prototypes for level 2 BLAS
141
+ * ===========================================================================
142
+ */
143
+
144
+ /*
145
+ * Routines with standard 4 prefixes (S, D, C, Z)
146
+ */
147
+ void cblas_sgemv(const enum CBLAS_ORDER order,
148
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
149
+ const float alpha, const float *A, const int lda,
150
+ const float *X, const int incX, const float beta,
151
+ float *Y, const int incY);
152
+ void cblas_sgbmv(const enum CBLAS_ORDER order,
153
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
154
+ const int KL, const int KU, const float alpha,
155
+ const float *A, const int lda, const float *X,
156
+ const int incX, const float beta, float *Y, const int incY);
157
+ void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
158
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
159
+ const int N, const float *A, const int lda,
160
+ float *X, const int incX);
161
+ void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
162
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
163
+ const int N, const int K, const float *A, const int lda,
164
+ float *X, const int incX);
165
+ void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
166
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
167
+ const int N, const float *Ap, float *X, const int incX);
168
+ void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
169
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
170
+ const int N, const float *A, const int lda, float *X,
171
+ const int incX);
172
+ void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
173
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
174
+ const int N, const int K, const float *A, const int lda,
175
+ float *X, const int incX);
176
+ void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
177
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
178
+ const int N, const float *Ap, float *X, const int incX);
179
+
180
+ void cblas_dgemv(const enum CBLAS_ORDER order,
181
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
182
+ const double alpha, const double *A, const int lda,
183
+ const double *X, const int incX, const double beta,
184
+ double *Y, const int incY);
185
+ void cblas_dgbmv(const enum CBLAS_ORDER order,
186
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
187
+ const int KL, const int KU, const double alpha,
188
+ const double *A, const int lda, const double *X,
189
+ const int incX, const double beta, double *Y, const int incY);
190
+ void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
191
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
192
+ const int N, const double *A, const int lda,
193
+ double *X, const int incX);
194
+ void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
195
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
196
+ const int N, const int K, const double *A, const int lda,
197
+ double *X, const int incX);
198
+ void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
199
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
200
+ const int N, const double *Ap, double *X, const int incX);
201
+ void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
202
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
203
+ const int N, const double *A, const int lda, double *X,
204
+ const int incX);
205
+ void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
206
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
207
+ const int N, const int K, const double *A, const int lda,
208
+ double *X, const int incX);
209
+ void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
210
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
211
+ const int N, const double *Ap, double *X, const int incX);
212
+
213
+ void cblas_cgemv(const enum CBLAS_ORDER order,
214
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
215
+ const void *alpha, const void *A, const int lda,
216
+ const void *X, const int incX, const void *beta,
217
+ void *Y, const int incY);
218
+ void cblas_cgbmv(const enum CBLAS_ORDER order,
219
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
220
+ const int KL, const int KU, const void *alpha,
221
+ const void *A, const int lda, const void *X,
222
+ const int incX, const void *beta, void *Y, const int incY);
223
+ void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
224
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
225
+ const int N, const void *A, const int lda,
226
+ void *X, const int incX);
227
+ void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
228
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
229
+ const int N, const int K, const void *A, const int lda,
230
+ void *X, const int incX);
231
+ void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
232
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
233
+ const int N, const void *Ap, void *X, const int incX);
234
+ void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
235
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
236
+ const int N, const void *A, const int lda, void *X,
237
+ const int incX);
238
+ void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
239
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
240
+ const int N, const int K, const void *A, const int lda,
241
+ void *X, const int incX);
242
+ void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
243
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
244
+ const int N, const void *Ap, void *X, const int incX);
245
+
246
+ void cblas_zgemv(const enum CBLAS_ORDER order,
247
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
248
+ const void *alpha, const void *A, const int lda,
249
+ const void *X, const int incX, const void *beta,
250
+ void *Y, const int incY);
251
+ void cblas_zgbmv(const enum CBLAS_ORDER order,
252
+ const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
253
+ const int KL, const int KU, const void *alpha,
254
+ const void *A, const int lda, const void *X,
255
+ const int incX, const void *beta, void *Y, const int incY);
256
+ void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
257
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
258
+ const int N, const void *A, const int lda,
259
+ void *X, const int incX);
260
+ void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
261
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
262
+ const int N, const int K, const void *A, const int lda,
263
+ void *X, const int incX);
264
+ void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
265
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
266
+ const int N, const void *Ap, void *X, const int incX);
267
+ void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
268
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
269
+ const int N, const void *A, const int lda, void *X,
270
+ const int incX);
271
+ void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
272
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
273
+ const int N, const int K, const void *A, const int lda,
274
+ void *X, const int incX);
275
+ void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
276
+ const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
277
+ const int N, const void *Ap, void *X, const int incX);
278
+
279
+
280
+ /*
281
+ * Routines with S and D prefixes only
282
+ */
283
+ void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
284
+ const int N, const float alpha, const float *A,
285
+ const int lda, const float *X, const int incX,
286
+ const float beta, float *Y, const int incY);
287
+ void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
288
+ const int N, const int K, const float alpha, const float *A,
289
+ const int lda, const float *X, const int incX,
290
+ const float beta, float *Y, const int incY);
291
+ void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
292
+ const int N, const float alpha, const float *Ap,
293
+ const float *X, const int incX,
294
+ const float beta, float *Y, const int incY);
295
+ void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
296
+ const float alpha, const float *X, const int incX,
297
+ const float *Y, const int incY, float *A, const int lda);
298
+ void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
299
+ const int N, const float alpha, const float *X,
300
+ const int incX, float *A, const int lda);
301
+ void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
302
+ const int N, const float alpha, const float *X,
303
+ const int incX, float *Ap);
304
+ void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
305
+ const int N, const float alpha, const float *X,
306
+ const int incX, const float *Y, const int incY, float *A,
307
+ const int lda);
308
+ void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
309
+ const int N, const float alpha, const float *X,
310
+ const int incX, const float *Y, const int incY, float *A);
311
+
312
+ void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
313
+ const int N, const double alpha, const double *A,
314
+ const int lda, const double *X, const int incX,
315
+ const double beta, double *Y, const int incY);
316
+ void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
317
+ const int N, const int K, const double alpha, const double *A,
318
+ const int lda, const double *X, const int incX,
319
+ const double beta, double *Y, const int incY);
320
+ void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
321
+ const int N, const double alpha, const double *Ap,
322
+ const double *X, const int incX,
323
+ const double beta, double *Y, const int incY);
324
+ void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
325
+ const double alpha, const double *X, const int incX,
326
+ const double *Y, const int incY, double *A, const int lda);
327
+ void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
328
+ const int N, const double alpha, const double *X,
329
+ const int incX, double *A, const int lda);
330
+ void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
331
+ const int N, const double alpha, const double *X,
332
+ const int incX, double *Ap);
333
+ void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
334
+ const int N, const double alpha, const double *X,
335
+ const int incX, const double *Y, const int incY, double *A,
336
+ const int lda);
337
+ void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
338
+ const int N, const double alpha, const double *X,
339
+ const int incX, const double *Y, const int incY, double *A);
340
+
341
+
342
+ /*
343
+ * Routines with C and Z prefixes only
344
+ */
345
+ void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
346
+ const int N, const void *alpha, const void *A,
347
+ const int lda, const void *X, const int incX,
348
+ const void *beta, void *Y, const int incY);
349
+ void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
350
+ const int N, const int K, const void *alpha, const void *A,
351
+ const int lda, const void *X, const int incX,
352
+ const void *beta, void *Y, const int incY);
353
+ void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
354
+ const int N, const void *alpha, const void *Ap,
355
+ const void *X, const int incX,
356
+ const void *beta, void *Y, const int incY);
357
+ void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
358
+ const void *alpha, const void *X, const int incX,
359
+ const void *Y, const int incY, void *A, const int lda);
360
+ void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
361
+ const void *alpha, const void *X, const int incX,
362
+ const void *Y, const int incY, void *A, const int lda);
363
+ void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
364
+ const int N, const float alpha, const void *X, const int incX,
365
+ void *A, const int lda);
366
+ void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
367
+ const int N, const float alpha, const void *X,
368
+ const int incX, void *A);
369
+ void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
370
+ const void *alpha, const void *X, const int incX,
371
+ const void *Y, const int incY, void *A, const int lda);
372
+ void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
373
+ const void *alpha, const void *X, const int incX,
374
+ const void *Y, const int incY, void *Ap);
375
+
376
+ void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
377
+ const int N, const void *alpha, const void *A,
378
+ const int lda, const void *X, const int incX,
379
+ const void *beta, void *Y, const int incY);
380
+ void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
381
+ const int N, const int K, const void *alpha, const void *A,
382
+ const int lda, const void *X, const int incX,
383
+ const void *beta, void *Y, const int incY);
384
+ void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
385
+ const int N, const void *alpha, const void *Ap,
386
+ const void *X, const int incX,
387
+ const void *beta, void *Y, const int incY);
388
+ void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
389
+ const void *alpha, const void *X, const int incX,
390
+ const void *Y, const int incY, void *A, const int lda);
391
+ void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
392
+ const void *alpha, const void *X, const int incX,
393
+ const void *Y, const int incY, void *A, const int lda);
394
+ void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
395
+ const int N, const double alpha, const void *X, const int incX,
396
+ void *A, const int lda);
397
+ void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
398
+ const int N, const double alpha, const void *X,
399
+ const int incX, void *A);
400
+ void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
401
+ const void *alpha, const void *X, const int incX,
402
+ const void *Y, const int incY, void *A, const int lda);
403
+ void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
404
+ const void *alpha, const void *X, const int incX,
405
+ const void *Y, const int incY, void *Ap);
406
+
407
+ /*
408
+ * ===========================================================================
409
+ * Prototypes for level 3 BLAS
410
+ * ===========================================================================
411
+ */
412
+
413
+ /*
414
+ * Routines with standard 4 prefixes (S, D, C, Z)
415
+ */
416
+ void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
417
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
418
+ const int K, const float alpha, const float *A,
419
+ const int lda, const float *B, const int ldb,
420
+ const float beta, float *C, const int ldc);
421
+ void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
422
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
423
+ const float alpha, const float *A, const int lda,
424
+ const float *B, const int ldb, const float beta,
425
+ float *C, const int ldc);
426
+ void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
427
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
428
+ const float alpha, const float *A, const int lda,
429
+ const float beta, float *C, const int ldc);
430
+ void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
431
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
432
+ const float alpha, const float *A, const int lda,
433
+ const float *B, const int ldb, const float beta,
434
+ float *C, const int ldc);
435
+ void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
436
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
437
+ const enum CBLAS_DIAG Diag, const int M, const int N,
438
+ const float alpha, const float *A, const int lda,
439
+ float *B, const int ldb);
440
+ void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
441
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
442
+ const enum CBLAS_DIAG Diag, const int M, const int N,
443
+ const float alpha, const float *A, const int lda,
444
+ float *B, const int ldb);
445
+
446
+ void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
447
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
448
+ const int K, const double alpha, const double *A,
449
+ const int lda, const double *B, const int ldb,
450
+ const double beta, double *C, const int ldc);
451
+ void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
452
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
453
+ const double alpha, const double *A, const int lda,
454
+ const double *B, const int ldb, const double beta,
455
+ double *C, const int ldc);
456
+ void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
457
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
458
+ const double alpha, const double *A, const int lda,
459
+ const double beta, double *C, const int ldc);
460
+ void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
461
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
462
+ const double alpha, const double *A, const int lda,
463
+ const double *B, const int ldb, const double beta,
464
+ double *C, const int ldc);
465
+ void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
466
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
467
+ const enum CBLAS_DIAG Diag, const int M, const int N,
468
+ const double alpha, const double *A, const int lda,
469
+ double *B, const int ldb);
470
+ void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
471
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
472
+ const enum CBLAS_DIAG Diag, const int M, const int N,
473
+ const double alpha, const double *A, const int lda,
474
+ double *B, const int ldb);
475
+
476
+ void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
477
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
478
+ const int K, const void *alpha, const void *A,
479
+ const int lda, const void *B, const int ldb,
480
+ const void *beta, void *C, const int ldc);
481
+ void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
482
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
483
+ const void *alpha, const void *A, const int lda,
484
+ const void *B, const int ldb, const void *beta,
485
+ void *C, const int ldc);
486
+ void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
487
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
488
+ const void *alpha, const void *A, const int lda,
489
+ const void *beta, void *C, const int ldc);
490
+ void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
491
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
492
+ const void *alpha, const void *A, const int lda,
493
+ const void *B, const int ldb, const void *beta,
494
+ void *C, const int ldc);
495
+ void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
496
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
497
+ const enum CBLAS_DIAG Diag, const int M, const int N,
498
+ const void *alpha, const void *A, const int lda,
499
+ void *B, const int ldb);
500
+ void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
501
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
502
+ const enum CBLAS_DIAG Diag, const int M, const int N,
503
+ const void *alpha, const void *A, const int lda,
504
+ void *B, const int ldb);
505
+
506
+ void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
507
+ const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
508
+ const int K, const void *alpha, const void *A,
509
+ const int lda, const void *B, const int ldb,
510
+ const void *beta, void *C, const int ldc);
511
+ void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
512
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
513
+ const void *alpha, const void *A, const int lda,
514
+ const void *B, const int ldb, const void *beta,
515
+ void *C, const int ldc);
516
+ void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
517
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
518
+ const void *alpha, const void *A, const int lda,
519
+ const void *beta, void *C, const int ldc);
520
+ void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
521
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
522
+ const void *alpha, const void *A, const int lda,
523
+ const void *B, const int ldb, const void *beta,
524
+ void *C, const int ldc);
525
+ void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
526
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
527
+ const enum CBLAS_DIAG Diag, const int M, const int N,
528
+ const void *alpha, const void *A, const int lda,
529
+ void *B, const int ldb);
530
+ void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
531
+ const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
532
+ const enum CBLAS_DIAG Diag, const int M, const int N,
533
+ const void *alpha, const void *A, const int lda,
534
+ void *B, const int ldb);
535
+
536
+
537
+ /*
538
+ * Routines with prefixes C and Z only
539
+ */
540
+ void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
541
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
542
+ const void *alpha, const void *A, const int lda,
543
+ const void *B, const int ldb, const void *beta,
544
+ void *C, const int ldc);
545
+ void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
546
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
547
+ const float alpha, const void *A, const int lda,
548
+ const float beta, void *C, const int ldc);
549
+ void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
550
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
551
+ const void *alpha, const void *A, const int lda,
552
+ const void *B, const int ldb, const float beta,
553
+ void *C, const int ldc);
554
+
555
+ void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
556
+ const enum CBLAS_UPLO Uplo, const int M, const int N,
557
+ const void *alpha, const void *A, const int lda,
558
+ const void *B, const int ldb, const void *beta,
559
+ void *C, const int ldc);
560
+ void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
561
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
562
+ const double alpha, const void *A, const int lda,
563
+ const double beta, void *C, const int ldc);
564
+ void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
565
+ const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
566
+ const void *alpha, const void *A, const int lda,
567
+ const void *B, const int ldb, const double beta,
568
+ void *C, const int ldc);
569
+
570
+ void cblas_xerbla(int p, const char *rout, const char *form, ...);
571
+
572
+ #ifdef __cplusplus
573
+ }
574
+ #endif
575
+ #endif