1 #pragma once
2 
3 /*
4   NOTE: This is a reduced version of cblas.h without some complex-type routines.
5         It was necessary to avoid C99 complex types (used by GOTOBLAS
6   implementation,
7         for instance) issues. Complex numbers are currently NOT supported in
8   tlin
9         by the way...
10 */
11 
12 #ifndef CBLAS_H
13 #define CBLAS_H
14 
15 #define CBLAS_INDEX size_t
16 
17 enum CBLAS_ORDER { CblasRowMajor = 101, CblasColMajor = 102 };
18 enum CBLAS_TRANSPOSE {
19   CblasNoTrans     = 111,
20   CblasTrans       = 112,
21   CblasConjTrans   = 113,
22   CblasConjNoTrans = 114
23 };
24 enum CBLAS_UPLO { CblasUpper = 121, CblasLower = 122 };
25 enum CBLAS_DIAG { CblasNonUnit = 131, CblasUnit = 132 };
26 enum CBLAS_SIDE { CblasLeft = 141, CblasRight = 142 };
27 
28 float cblas_sdsdot(blasint n, float, float *x, blasint incx, float *y,
29                    blasint incy);
30 double cblas_dsdot(blasint n, float *x, blasint incx, float *y, blasint incy);
31 float cblas_sdot(blasint n, float *x, blasint incx, float *y, blasint incy);
32 double cblas_ddot(blasint n, double *x, blasint incx, double *y, blasint incy);
33 
34 float cblas_sasum(blasint n, float *x, blasint incx);
35 double cblas_dasum(blasint n, double *x, blasint incx);
36 float cblas_scasum(blasint n, float *x, blasint incx);
37 double cblas_dzasum(blasint n, double *x, blasint incx);
38 
39 float cblas_snrm2(blasint N, float *X, blasint incX);
40 double cblas_dnrm2(blasint N, double *X, blasint incX);
41 float cblas_scnrm2(blasint N, float *X, blasint incX);
42 double cblas_dznrm2(blasint N, double *X, blasint incX);
43 
44 CBLAS_INDEX cblas_isamax(blasint n, float *x, blasint incx);
45 CBLAS_INDEX cblas_idamax(blasint n, double *x, blasint incx);
46 CBLAS_INDEX cblas_icamax(blasint n, float *x, blasint incx);
47 CBLAS_INDEX cblas_izamax(blasint n, double *x, blasint incx);
48 
49 void cblas_saxpy(blasint n, float, float *x, blasint incx, float *y,
50                  blasint incy);
51 void cblas_daxpy(blasint n, double, double *x, blasint incx, double *y,
52                  blasint incy);
53 void cblas_caxpy(blasint n, float *, float *x, blasint incx, float *y,
54                  blasint incy);
55 void cblas_zaxpy(blasint n, double *, double *x, blasint incx, double *y,
56                  blasint incy);
57 
58 void cblas_scopy(blasint n, float *x, blasint incx, float *y, blasint incy);
59 void cblas_dcopy(blasint n, double *x, blasint incx, double *y, blasint incy);
60 void cblas_ccopy(blasint n, float *x, blasint incx, float *y, blasint incy);
61 void cblas_zcopy(blasint n, double *x, blasint incx, double *y, blasint incy);
62 
63 void cblas_sswap(blasint n, float *x, blasint incx, float *y, blasint incy);
64 void cblas_dswap(blasint n, double *x, blasint incx, double *y, blasint incy);
65 void cblas_cswap(blasint n, float *x, blasint incx, float *y, blasint incy);
66 void cblas_zswap(blasint n, double *x, blasint incx, double *y, blasint incy);
67 
68 void cblas_srot(blasint N, float *X, blasint incX, float *Y, blasint incY,
69                 float c, float s);
70 void cblas_drot(blasint N, double *X, blasint incX, double *Y, blasint incY,
71                 double c, double s);
72 
73 void cblas_srotg(float *a, float *b, float *c, float *s);
74 void cblas_drotg(double *a, double *b, double *c, double *s);
75 
76 void cblas_srotm(blasint N, float *X, blasint incX, float *Y, blasint incY,
77                  float *P);
78 void cblas_drotm(blasint N, double *X, blasint incX, double *Y, blasint incY,
79                  double *P);
80 
81 void cblas_srotmg(float *d1, float *d2, float *b1, float b2, float *P);
82 void cblas_drotmg(double *d1, double *d2, double *b1, double b2, double *P);
83 
84 void cblas_sscal(blasint N, float alpha, float *X, blasint incX);
85 void cblas_dscal(blasint N, double alpha, double *X, blasint incX);
86 void cblas_cscal(blasint N, float *alpha, float *X, blasint incX);
87 void cblas_zscal(blasint N, double *alpha, double *X, blasint incX);
88 void cblas_csscal(blasint N, float alpha, float *X, blasint incX);
89 void cblas_zdscal(blasint N, double alpha, double *X, blasint incX);
90 
91 void cblas_sgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m,
92                  blasint n, float alpha, float *a, blasint lda, float *x,
93                  blasint incx, float beta, float *y, blasint incy);
94 void cblas_dgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m,
95                  blasint n, double alpha, double *a, blasint lda, double *x,
96                  blasint incx, double beta, double *y, blasint incy);
97 void cblas_cgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m,
98                  blasint n, float *alpha, float *a, blasint lda, float *x,
99                  blasint incx, float *beta, float *y, blasint incy);
100 void cblas_zgemv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE trans, blasint m,
101                  blasint n, double *alpha, double *a, blasint lda, double *x,
102                  blasint incx, double *beta, double *y, blasint incy);
103 
104 void cblas_sger(enum CBLAS_ORDER order, blasint M, blasint N, float alpha,
105                 float *X, blasint incX, float *Y, blasint incY, float *A,
106                 blasint lda);
107 void cblas_dger(enum CBLAS_ORDER order, blasint M, blasint N, double alpha,
108                 double *X, blasint incX, double *Y, blasint incY, double *A,
109                 blasint lda);
110 void cblas_cgeru(enum CBLAS_ORDER order, blasint M, blasint N, float *alpha,
111                  float *X, blasint incX, float *Y, blasint incY, float *A,
112                  blasint lda);
113 void cblas_cgerc(enum CBLAS_ORDER order, blasint M, blasint N, float *alpha,
114                  float *X, blasint incX, float *Y, blasint incY, float *A,
115                  blasint lda);
116 void cblas_zgeru(enum CBLAS_ORDER order, blasint M, blasint N, double *alpha,
117                  double *X, blasint incX, double *Y, blasint incY, double *A,
118                  blasint lda);
119 void cblas_zgerc(enum CBLAS_ORDER order, blasint M, blasint N, double *alpha,
120                  double *X, blasint incX, double *Y, blasint incY, double *A,
121                  blasint lda);
122 
123 void cblas_strsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
124                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
125                  float *A, blasint lda, float *X, blasint incX);
126 void cblas_dtrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
127                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
128                  double *A, blasint lda, double *X, blasint incX);
129 void cblas_ctrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
130                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
131                  float *A, blasint lda, float *X, blasint incX);
132 void cblas_ztrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
133                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
134                  double *A, blasint lda, double *X, blasint incX);
135 
136 void cblas_strmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
137                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
138                  float *A, blasint lda, float *X, blasint incX);
139 void cblas_dtrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
140                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
141                  double *A, blasint lda, double *X, blasint incX);
142 void cblas_ctrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
143                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
144                  float *A, blasint lda, float *X, blasint incX);
145 void cblas_ztrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
146                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
147                  double *A, blasint lda, double *X, blasint incX);
148 
149 void cblas_ssyr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
150                 float alpha, float *X, blasint incX, float *A, blasint lda);
151 void cblas_dsyr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
152                 double alpha, double *X, blasint incX, double *A, blasint lda);
153 void cblas_cher(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
154                 float alpha, float *X, blasint incX, float *A, blasint lda);
155 void cblas_zher(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
156                 double alpha, double *X, blasint incX, double *A, blasint lda);
157 
158 void cblas_ssyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
159                  float alpha, float *X, blasint incX, float *Y, blasint incY,
160                  float *A, blasint lda);
161 void cblas_dsyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
162                  double alpha, double *X, blasint incX, double *Y, blasint incY,
163                  double *A, blasint lda);
164 void cblas_cher2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
165                  float *alpha, float *X, blasint incX, float *Y, blasint incY,
166                  float *A, blasint lda);
167 void cblas_zher2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
168                  double *alpha, double *X, blasint incX, double *Y,
169                  blasint incY, double *A, blasint lda);
170 
171 void cblas_sgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M,
172                  blasint N, blasint KL, blasint KU, float alpha, float *A,
173                  blasint lda, float *X, blasint incX, float beta, float *Y,
174                  blasint incY);
175 void cblas_dgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M,
176                  blasint N, blasint KL, blasint KU, double alpha, double *A,
177                  blasint lda, double *X, blasint incX, double beta, double *Y,
178                  blasint incY);
179 void cblas_cgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M,
180                  blasint N, blasint KL, blasint KU, float *alpha, float *A,
181                  blasint lda, float *X, blasint incX, float *beta, float *Y,
182                  blasint incY);
183 void cblas_zgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M,
184                  blasint N, blasint KL, blasint KU, double *alpha, double *A,
185                  blasint lda, double *X, blasint incX, double *beta, double *Y,
186                  blasint incY);
187 
188 void cblas_ssbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
189                  blasint K, float alpha, float *A, blasint lda, float *X,
190                  blasint incX, float beta, float *Y, blasint incY);
191 void cblas_dsbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
192                  blasint K, double alpha, double *A, blasint lda, double *X,
193                  blasint incX, double beta, double *Y, blasint incY);
194 
195 void cblas_stbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
196                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
197                  blasint K, float *A, blasint lda, float *X, blasint incX);
198 void cblas_dtbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
199                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
200                  blasint K, double *A, blasint lda, double *X, blasint incX);
201 void cblas_ctbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
202                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
203                  blasint K, float *A, blasint lda, float *X, blasint incX);
204 void cblas_ztbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
205                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
206                  blasint K, double *A, blasint lda, double *X, blasint incX);
207 
208 void cblas_stbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
209                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
210                  blasint K, float *A, blasint lda, float *X, blasint incX);
211 void cblas_dtbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
212                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
213                  blasint K, double *A, blasint lda, double *X, blasint incX);
214 void cblas_ctbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
215                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
216                  blasint K, float *A, blasint lda, float *X, blasint incX);
217 void cblas_ztbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
218                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
219                  blasint K, double *A, blasint lda, double *X, blasint incX);
220 
221 void cblas_stpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
222                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
223                  float *Ap, float *X, blasint incX);
224 void cblas_dtpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
225                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
226                  double *Ap, double *X, blasint incX);
227 void cblas_ctpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
228                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
229                  float *Ap, float *X, blasint incX);
230 void cblas_ztpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
231                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
232                  double *Ap, double *X, blasint incX);
233 
234 void cblas_stpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
235                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
236                  float *Ap, float *X, blasint incX);
237 void cblas_dtpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
238                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
239                  double *Ap, double *X, blasint incX);
240 void cblas_ctpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
241                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
242                  float *Ap, float *X, blasint incX);
243 void cblas_ztpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
244                  enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N,
245                  double *Ap, double *X, blasint incX);
246 
247 void cblas_ssymv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
248                  float alpha, float *A, blasint lda, float *X, blasint incX,
249                  float beta, float *Y, blasint incY);
250 void cblas_dsymv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
251                  double alpha, double *A, blasint lda, double *X, blasint incX,
252                  double beta, double *Y, blasint incY);
253 void cblas_chemv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
254                  float *alpha, float *A, blasint lda, float *X, blasint incX,
255                  float *beta, float *Y, blasint incY);
256 void cblas_zhemv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
257                  double *alpha, double *A, blasint lda, double *X, blasint incX,
258                  double *beta, double *Y, blasint incY);
259 
260 void cblas_sspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
261                  float alpha, float *Ap, float *X, blasint incX, float beta,
262                  float *Y, blasint incY);
263 void cblas_dspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
264                  double alpha, double *Ap, double *X, blasint incX, double beta,
265                  double *Y, blasint incY);
266 
267 void cblas_sspr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
268                 float alpha, float *X, blasint incX, float *Ap);
269 void cblas_dspr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
270                 double alpha, double *X, blasint incX, double *Ap);
271 
272 void cblas_chpr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
273                 float alpha, float *X, blasint incX, float *A);
274 void cblas_zhpr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
275                 double alpha, double *X, blasint incX, double *A);
276 
277 void cblas_sspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
278                  float alpha, float *X, blasint incX, float *Y, blasint incY,
279                  float *A);
280 void cblas_dspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
281                  double alpha, double *X, blasint incX, double *Y, blasint incY,
282                  double *A);
283 void cblas_chpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
284                  float *alpha, float *X, blasint incX, float *Y, blasint incY,
285                  float *Ap);
286 void cblas_zhpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
287                  double *alpha, double *X, blasint incX, double *Y,
288                  blasint incY, double *Ap);
289 
290 void cblas_chbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
291                  blasint K, float *alpha, float *A, blasint lda, float *X,
292                  blasint incX, float *beta, float *Y, blasint incY);
293 void cblas_zhbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
294                  blasint K, double *alpha, double *A, blasint lda, double *X,
295                  blasint incX, double *beta, double *Y, blasint incY);
296 
297 void cblas_chpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
298                  float *alpha, float *Ap, float *X, blasint incX, float *beta,
299                  float *Y, blasint incY);
300 void cblas_zhpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
301                  double *alpha, double *Ap, double *X, blasint incX,
302                  double *beta, double *Y, blasint incY);
303 
304 void cblas_sgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA,
305                  enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
306                  float alpha, float *A, blasint lda, float *B, blasint ldb,
307                  float beta, float *C, blasint ldc);
308 void cblas_dgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA,
309                  enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
310                  double alpha, double *A, blasint lda, double *B, blasint ldb,
311                  double beta, double *C, blasint ldc);
312 void cblas_cgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA,
313                  enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
314                  float *alpha, float *A, blasint lda, float *B, blasint ldb,
315                  float *beta, float *C, blasint ldc);
316 void cblas_zgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA,
317                  enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
318                  double *alpha, double *A, blasint lda, double *B, blasint ldb,
319                  double *beta, double *C, blasint ldc);
320 
321 void cblas_ssymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
322                  enum CBLAS_UPLO Uplo, blasint M, blasint N, float alpha,
323                  float *A, blasint lda, float *B, blasint ldb, float beta,
324                  float *C, blasint ldc);
325 void cblas_dsymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
326                  enum CBLAS_UPLO Uplo, blasint M, blasint N, double alpha,
327                  double *A, blasint lda, double *B, blasint ldb, double beta,
328                  double *C, blasint ldc);
329 void cblas_csymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
330                  enum CBLAS_UPLO Uplo, blasint M, blasint N, float *alpha,
331                  float *A, blasint lda, float *B, blasint ldb, float *beta,
332                  float *C, blasint ldc);
333 void cblas_zsymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
334                  enum CBLAS_UPLO Uplo, blasint M, blasint N, double *alpha,
335                  double *A, blasint lda, double *B, blasint ldb, double *beta,
336                  double *C, blasint ldc);
337 
338 void cblas_ssyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
339                  enum CBLAS_TRANSPOSE Trans, blasint N, blasint K, float alpha,
340                  float *A, blasint lda, float beta, float *C, blasint ldc);
341 void cblas_dsyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
342                  enum CBLAS_TRANSPOSE Trans, blasint N, blasint K, double alpha,
343                  double *A, blasint lda, double beta, double *C, blasint ldc);
344 void cblas_csyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
345                  enum CBLAS_TRANSPOSE Trans, blasint N, blasint K, float *alpha,
346                  float *A, blasint lda, float *beta, float *C, blasint ldc);
347 void cblas_zsyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
348                  enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
349                  double *alpha, double *A, blasint lda, double *beta, double *C,
350                  blasint ldc);
351 
352 void cblas_ssyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
353                   enum CBLAS_TRANSPOSE Trans, blasint N, blasint K, float alpha,
354                   float *A, blasint lda, float *B, blasint ldb, float beta,
355                   float *C, blasint ldc);
356 void cblas_dsyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
357                   enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
358                   double alpha, double *A, blasint lda, double *B, blasint ldb,
359                   double beta, double *C, blasint ldc);
360 void cblas_csyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
361                   enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
362                   float *alpha, float *A, blasint lda, float *B, blasint ldb,
363                   float *beta, float *C, blasint ldc);
364 void cblas_zsyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
365                   enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
366                   double *alpha, double *A, blasint lda, double *B, blasint ldb,
367                   double *beta, double *C, blasint ldc);
368 
369 void cblas_strmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
370                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
371                  enum CBLAS_DIAG Diag, blasint M, blasint N, float alpha,
372                  float *A, blasint lda, float *B, blasint ldb);
373 void cblas_dtrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
374                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
375                  enum CBLAS_DIAG Diag, blasint M, blasint N, double alpha,
376                  double *A, blasint lda, double *B, blasint ldb);
377 void cblas_ctrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
378                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
379                  enum CBLAS_DIAG Diag, blasint M, blasint N, float *alpha,
380                  float *A, blasint lda, float *B, blasint ldb);
381 void cblas_ztrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
382                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
383                  enum CBLAS_DIAG Diag, blasint M, blasint N, double *alpha,
384                  double *A, blasint lda, double *B, blasint ldb);
385 
386 void cblas_strsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
387                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
388                  enum CBLAS_DIAG Diag, blasint M, blasint N, float alpha,
389                  float *A, blasint lda, float *B, blasint ldb);
390 void cblas_dtrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
391                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
392                  enum CBLAS_DIAG Diag, blasint M, blasint N, double alpha,
393                  double *A, blasint lda, double *B, blasint ldb);
394 void cblas_ctrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
395                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
396                  enum CBLAS_DIAG Diag, blasint M, blasint N, float *alpha,
397                  float *A, blasint lda, float *B, blasint ldb);
398 void cblas_ztrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
399                  enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
400                  enum CBLAS_DIAG Diag, blasint M, blasint N, double *alpha,
401                  double *A, blasint lda, double *B, blasint ldb);
402 
403 void cblas_chemm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
404                  enum CBLAS_UPLO Uplo, blasint M, blasint N, float *alpha,
405                  float *A, blasint lda, float *B, blasint ldb, float *beta,
406                  float *C, blasint ldc);
407 void cblas_zhemm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side,
408                  enum CBLAS_UPLO Uplo, blasint M, blasint N, double *alpha,
409                  double *A, blasint lda, double *B, blasint ldb, double *beta,
410                  double *C, blasint ldc);
411 
412 void cblas_cherk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
413                  enum CBLAS_TRANSPOSE Trans, blasint N, blasint K, float alpha,
414                  float *A, blasint lda, float beta, float *C, blasint ldc);
415 void cblas_zherk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
416                  enum CBLAS_TRANSPOSE Trans, blasint N, blasint K, double alpha,
417                  double *A, blasint lda, double beta, double *C, blasint ldc);
418 
419 void cblas_cher2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
420                   enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
421                   float *alpha, float *A, blasint lda, float *B, blasint ldb,
422                   float beta, float *C, blasint ldc);
423 void cblas_zher2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo,
424                   enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
425                   double *alpha, double *A, blasint lda, double *B, blasint ldb,
426                   double beta, double *C, blasint ldc);
427 
428 void cblas_xerbla(blasint p, char *rout, char *form, ...);
429 #endif
430