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