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