BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
cblas.h
Go to the documentation of this file.
1 /* blas/gsl_cblas.h
2  *
3  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or (at
8  * your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19 
20 /* This is a copy of the CBLAS standard header.
21  * We carry this around so we do not have to
22  * break our model for flexible BLAS functionality.
23  */
24 
25 #ifndef __GSL_CBLAS_H__
26 #define __GSL_CBLAS_H__
27 #include <stddef.h>
28 
29 #undef __BEGIN_DECLS
30 #undef __END_DECLS
31 #ifdef __cplusplus
32 #define __BEGIN_DECLS extern "C" {
33 #define __END_DECLS }
34 #else
35 #define __BEGIN_DECLS /* empty */
36 #define __END_DECLS /* empty */
37 #endif
38 
40 
41 /*
42  * Enumerated and derived types
43  */
44 #define CBLAS_INDEX size_t /* this may vary between platforms */
45 
51 
52 /*
53  * ===========================================================================
54  * Prototypes for level 1 BLAS functions (complex are recast as routines)
55  * ===========================================================================
56  */
57 float cblas_sdsdot(const int N, const float alpha, const float *X,
58  const int incX, const float *Y, const int incY);
59 double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
60  const int incY);
61 float cblas_sdot(const int N, const float *X, const int incX,
62  const float *Y, const int incY);
63 double cblas_ddot(const int N, const double *X, const int incX,
64  const double *Y, const int incY);
65 
66 /*
67  * Functions having prefixes Z and C only
68  */
69 void cblas_cdotu_sub(const int N, const void *X, const int incX,
70  const void *Y, const int incY, void *dotu);
71 void cblas_cdotc_sub(const int N, const void *X, const int incX,
72  const void *Y, const int incY, void *dotc);
73 
74 void cblas_zdotu_sub(const int N, const void *X, const int incX,
75  const void *Y, const int incY, void *dotu);
76 void cblas_zdotc_sub(const int N, const void *X, const int incX,
77  const void *Y, const int incY, void *dotc);
78 
79 
80 /*
81  * Functions having prefixes S D SC DZ
82  */
83 float cblas_snrm2(const int N, const float *X, const int incX);
84 float cblas_sasum(const int N, const float *X, const int incX);
85 
86 double cblas_dnrm2(const int N, const double *X, const int incX);
87 double cblas_dasum(const int N, const double *X, const int incX);
88 
89 float cblas_scnrm2(const int N, const void *X, const int incX);
90 float cblas_scasum(const int N, const void *X, const int incX);
91 
92 double cblas_dznrm2(const int N, const void *X, const int incX);
93 double cblas_dzasum(const int N, const void *X, const int incX);
94 
95 
96 /*
97  * Functions having standard 4 prefixes (S D C Z)
98  */
99 CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX);
100 CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
101 CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX);
102 CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX);
103 
104 /*
105  * ===========================================================================
106  * Prototypes for level 1 BLAS routines
107  * ===========================================================================
108  */
109 
110 /*
111  * Routines with standard 4 prefixes (s, d, c, z)
112  */
113 void cblas_sswap(const int N, float *X, const int incX,
114  float *Y, const int incY);
115 void cblas_scopy(const int N, const float *X, const int incX,
116  float *Y, const int incY);
117 void cblas_saxpy(const int N, const float alpha, const float *X,
118  const int incX, float *Y, const int incY);
119 
120 void cblas_dswap(const int N, double *X, const int incX,
121  double *Y, const int incY);
122 void cblas_dcopy(const int N, const double *X, const int incX,
123  double *Y, const int incY);
124 void cblas_daxpy(const int N, const double alpha, const double *X,
125  const int incX, double *Y, const int incY);
126 
127 void cblas_cswap(const int N, void *X, const int incX,
128  void *Y, const int incY);
129 void cblas_ccopy(const int N, const void *X, const int incX,
130  void *Y, const int incY);
131 void cblas_caxpy(const int N, const void *alpha, const void *X,
132  const int incX, void *Y, const int incY);
133 
134 void cblas_zswap(const int N, void *X, const int incX,
135  void *Y, const int incY);
136 void cblas_zcopy(const int N, const void *X, const int incX,
137  void *Y, const int incY);
138 void cblas_zaxpy(const int N, const void *alpha, const void *X,
139  const int incX, void *Y, const int incY);
140 
141 
142 /*
143  * Routines with S and D prefix only
144  */
145 void cblas_srotg(float *a, float *b, float *c, float *s);
146 void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
147 void cblas_srot(const int N, float *X, const int incX,
148  float *Y, const int incY, const float c, const float s);
149 void cblas_srotm(const int N, float *X, const int incX,
150  float *Y, const int incY, const float *P);
151 
152 void cblas_drotg(double *a, double *b, double *c, double *s);
153 void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
154 void cblas_drot(const int N, double *X, const int incX,
155  double *Y, const int incY, const double c, const double s);
156 void cblas_drotm(const int N, double *X, const int incX,
157  double *Y, const int incY, const double *P);
158 
159 
160 /*
161  * Routines with S D C Z CS and ZD prefixes
162  */
163 void cblas_sscal(const int N, const float alpha, float *X, const int incX);
164 void cblas_dscal(const int N, const double alpha, double *X, const int incX);
165 void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
166 void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
167 void cblas_csscal(const int N, const float alpha, void *X, const int incX);
168 void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
169 
170 /*
171  * ===========================================================================
172  * Prototypes for level 2 BLAS
173  * ===========================================================================
174  */
175 
176 /*
177  * Routines with standard 4 prefixes (S, D, C, Z)
178  */
179 void cblas_sgemv(const enum CBLAS_ORDER order,
180  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
181  const float alpha, const float *A, const int lda,
182  const float *X, const int incX, const float beta,
183  float *Y, const int incY);
184 void cblas_sgbmv(const enum CBLAS_ORDER order,
185  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
186  const int KL, const int KU, const float alpha,
187  const float *A, const int lda, const float *X,
188  const int incX, const float beta, float *Y, const int incY);
189 void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
190  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
191  const int N, const float *A, const int lda,
192  float *X, const int incX);
193 void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
194  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
195  const int N, const int K, const float *A, const int lda,
196  float *X, const int incX);
197 void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
198  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
199  const int N, const float *Ap, float *X, const int incX);
200 void cblas_strsv(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 float *A, const int lda, float *X,
203  const int incX);
204 void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
205  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
206  const int N, const int K, const float *A, const int lda,
207  float *X, const int incX);
208 void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
209  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
210  const int N, const float *Ap, float *X, const int incX);
211 
212 void cblas_dgemv(const enum CBLAS_ORDER order,
213  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
214  const double alpha, const double *A, const int lda,
215  const double *X, const int incX, const double beta,
216  double *Y, const int incY);
217 void cblas_dgbmv(const enum CBLAS_ORDER order,
218  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
219  const int KL, const int KU, const double alpha,
220  const double *A, const int lda, const double *X,
221  const int incX, const double beta, double *Y, const int incY);
222 void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
223  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
224  const int N, const double *A, const int lda,
225  double *X, const int incX);
226 void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
227  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
228  const int N, const int K, const double *A, const int lda,
229  double *X, const int incX);
230 void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
231  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
232  const int N, const double *Ap, double *X, const int incX);
233 void cblas_dtrsv(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 double *A, const int lda, double *X,
236  const int incX);
237 void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
238  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
239  const int N, const int K, const double *A, const int lda,
240  double *X, const int incX);
241 void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
242  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
243  const int N, const double *Ap, double *X, const int incX);
244 
245 void cblas_cgemv(const enum CBLAS_ORDER order,
246  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
247  const void *alpha, const void *A, const int lda,
248  const void *X, const int incX, const void *beta,
249  void *Y, const int incY);
250 void cblas_cgbmv(const enum CBLAS_ORDER order,
251  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
252  const int KL, const int KU, const void *alpha,
253  const void *A, const int lda, const void *X,
254  const int incX, const void *beta, void *Y, const int incY);
255 void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
256  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
257  const int N, const void *A, const int lda,
258  void *X, const int incX);
259 void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
260  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
261  const int N, const int K, const void *A, const int lda,
262  void *X, const int incX);
263 void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
264  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
265  const int N, const void *Ap, void *X, const int incX);
266 void cblas_ctrsv(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 *A, const int lda, void *X,
269  const int incX);
270 void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
271  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
272  const int N, const int K, const void *A, const int lda,
273  void *X, const int incX);
274 void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
275  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
276  const int N, const void *Ap, void *X, const int incX);
277 
278 void cblas_zgemv(const enum CBLAS_ORDER order,
279  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
280  const void *alpha, const void *A, const int lda,
281  const void *X, const int incX, const void *beta,
282  void *Y, const int incY);
283 void cblas_zgbmv(const enum CBLAS_ORDER order,
284  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
285  const int KL, const int KU, const void *alpha,
286  const void *A, const int lda, const void *X,
287  const int incX, const void *beta, void *Y, const int incY);
288 void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
289  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
290  const int N, const void *A, const int lda,
291  void *X, const int incX);
292 void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
293  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
294  const int N, const int K, const void *A, const int lda,
295  void *X, const int incX);
296 void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
297  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
298  const int N, const void *Ap, void *X, const int incX);
299 void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
300  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
301  const int N, const void *A, const int lda, void *X,
302  const int incX);
303 void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
304  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
305  const int N, const int K, const void *A, const int lda,
306  void *X, const int incX);
307 void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
308  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
309  const int N, const void *Ap, void *X, const int incX);
310 
311 
312 /*
313  * Routines with S and D prefixes only
314  */
315 void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
316  const int N, const float alpha, const float *A,
317  const int lda, const float *X, const int incX,
318  const float beta, float *Y, const int incY);
319 void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
320  const int N, const int K, const float alpha, const float *A,
321  const int lda, const float *X, const int incX,
322  const float beta, float *Y, const int incY);
323 void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
324  const int N, const float alpha, const float *Ap,
325  const float *X, const int incX,
326  const float beta, float *Y, const int incY);
327 void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
328  const float alpha, const float *X, const int incX,
329  const float *Y, const int incY, float *A, const int lda);
330 void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
331  const int N, const float alpha, const float *X,
332  const int incX, float *A, const int lda);
333 void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
334  const int N, const float alpha, const float *X,
335  const int incX, float *Ap);
336 void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
337  const int N, const float alpha, const float *X,
338  const int incX, const float *Y, const int incY, float *A,
339  const int lda);
340 void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
341  const int N, const float alpha, const float *X,
342  const int incX, const float *Y, const int incY, float *A);
343 
344 void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
345  const int N, const double alpha, const double *A,
346  const int lda, const double *X, const int incX,
347  const double beta, double *Y, const int incY);
348 void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
349  const int N, const int K, const double alpha, const double *A,
350  const int lda, const double *X, const int incX,
351  const double beta, double *Y, const int incY);
352 void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
353  const int N, const double alpha, const double *Ap,
354  const double *X, const int incX,
355  const double beta, double *Y, const int incY);
356 void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
357  const double alpha, const double *X, const int incX,
358  const double *Y, const int incY, double *A, const int lda);
359 void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
360  const int N, const double alpha, const double *X,
361  const int incX, double *A, const int lda);
362 void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
363  const int N, const double alpha, const double *X,
364  const int incX, double *Ap);
365 void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
366  const int N, const double alpha, const double *X,
367  const int incX, const double *Y, const int incY, double *A,
368  const int lda);
369 void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
370  const int N, const double alpha, const double *X,
371  const int incX, const double *Y, const int incY, double *A);
372 
373 
374 /*
375  * Routines with C and Z prefixes only
376  */
377 void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
378  const int N, const void *alpha, const void *A,
379  const int lda, const void *X, const int incX,
380  const void *beta, void *Y, const int incY);
381 void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
382  const int N, const int K, const void *alpha, const void *A,
383  const int lda, const void *X, const int incX,
384  const void *beta, void *Y, const int incY);
385 void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
386  const int N, const void *alpha, const void *Ap,
387  const void *X, const int incX,
388  const void *beta, void *Y, const int incY);
389 void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
390  const void *alpha, const void *X, const int incX,
391  const void *Y, const int incY, void *A, const int lda);
392 void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
393  const void *alpha, const void *X, const int incX,
394  const void *Y, const int incY, void *A, const int lda);
395 void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
396  const int N, const float alpha, const void *X, const int incX,
397  void *A, const int lda);
398 void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
399  const int N, const float alpha, const void *X,
400  const int incX, void *A);
401 void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
402  const void *alpha, const void *X, const int incX,
403  const void *Y, const int incY, void *A, const int lda);
404 void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
405  const void *alpha, const void *X, const int incX,
406  const void *Y, const int incY, void *Ap);
407 
408 void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
409  const int N, const void *alpha, const void *A,
410  const int lda, const void *X, const int incX,
411  const void *beta, void *Y, const int incY);
412 void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
413  const int N, const int K, const void *alpha, const void *A,
414  const int lda, const void *X, const int incX,
415  const void *beta, void *Y, const int incY);
416 void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
417  const int N, const void *alpha, const void *Ap,
418  const void *X, const int incX,
419  const void *beta, void *Y, const int incY);
420 void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
421  const void *alpha, const void *X, const int incX,
422  const void *Y, const int incY, void *A, const int lda);
423 void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
424  const void *alpha, const void *X, const int incX,
425  const void *Y, const int incY, void *A, const int lda);
426 void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
427  const int N, const double alpha, const void *X, const int incX,
428  void *A, const int lda);
429 void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
430  const int N, const double alpha, const void *X,
431  const int incX, void *A);
432 void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
433  const void *alpha, const void *X, const int incX,
434  const void *Y, const int incY, void *A, const int lda);
435 void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
436  const void *alpha, const void *X, const int incX,
437  const void *Y, const int incY, void *Ap);
438 
439 /*
440  * ===========================================================================
441  * Prototypes for level 3 BLAS
442  * ===========================================================================
443  */
444 
445 /*
446  * Routines with standard 4 prefixes (S, D, C, Z)
447  */
448 void cblas_sgemm(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 float alpha, const float *A,
451  const int lda, const float *B, const int ldb,
452  const float beta, float *C, const int ldc);
453 void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
454  const enum CBLAS_UPLO Uplo, const int M, const int N,
455  const float alpha, const float *A, const int lda,
456  const float *B, const int ldb, const float beta,
457  float *C, const int ldc);
458 void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
459  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
460  const float alpha, const float *A, const int lda,
461  const float beta, float *C, const int ldc);
462 void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
463  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
464  const float alpha, const float *A, const int lda,
465  const float *B, const int ldb, const float beta,
466  float *C, const int ldc);
467 void cblas_strmm(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 float alpha, const float *A, const int lda,
471  float *B, const int ldb);
472 void cblas_strsm(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 float alpha, const float *A, const int lda,
476  float *B, const int ldb);
477 
478 void cblas_dgemm(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 double alpha, const double *A,
481  const int lda, const double *B, const int ldb,
482  const double beta, double *C, const int ldc);
483 void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
484  const enum CBLAS_UPLO Uplo, const int M, const int N,
485  const double alpha, const double *A, const int lda,
486  const double *B, const int ldb, const double beta,
487  double *C, const int ldc);
488 void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
489  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
490  const double alpha, const double *A, const int lda,
491  const double beta, double *C, const int ldc);
492 void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
493  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
494  const double alpha, const double *A, const int lda,
495  const double *B, const int ldb, const double beta,
496  double *C, const int ldc);
497 void cblas_dtrmm(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 double alpha, const double *A, const int lda,
501  double *B, const int ldb);
502 void cblas_dtrsm(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 double alpha, const double *A, const int lda,
506  double *B, const int ldb);
507 
508 void cblas_cgemm(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_csymm(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_csyrk(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_csyr2k(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_ctrmm(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_ctrsm(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 void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
539  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
540  const int K, const void *alpha, const void *A,
541  const int lda, const void *B, const int ldb,
542  const void *beta, void *C, const int ldc);
543 void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
544  const enum CBLAS_UPLO Uplo, const int M, const int N,
545  const void *alpha, const void *A, const int lda,
546  const void *B, const int ldb, const void *beta,
547  void *C, const int ldc);
548 void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
549  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
550  const void *alpha, const void *A, const int lda,
551  const void *beta, void *C, const int ldc);
552 void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
553  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
554  const void *alpha, const void *A, const int lda,
555  const void *B, const int ldb, const void *beta,
556  void *C, const int ldc);
557 void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
558  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
559  const enum CBLAS_DIAG Diag, const int M, const int N,
560  const void *alpha, const void *A, const int lda,
561  void *B, const int ldb);
562 void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
563  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
564  const enum CBLAS_DIAG Diag, const int M, const int N,
565  const void *alpha, const void *A, const int lda,
566  void *B, const int ldb);
567 
568 
569 /*
570  * Routines with prefixes C and Z only
571  */
572 void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
573  const enum CBLAS_UPLO Uplo, const int M, const int N,
574  const void *alpha, const void *A, const int lda,
575  const void *B, const int ldb, const void *beta,
576  void *C, const int ldc);
577 void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
578  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
579  const float alpha, const void *A, const int lda,
580  const float beta, void *C, const int ldc);
581 void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
582  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
583  const void *alpha, const void *A, const int lda,
584  const void *B, const int ldb, const float beta,
585  void *C, const int ldc);
586 
587 void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
588  const enum CBLAS_UPLO Uplo, const int M, const int N,
589  const void *alpha, const void *A, const int lda,
590  const void *B, const int ldb, const void *beta,
591  void *C, const int ldc);
592 void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
593  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
594  const double alpha, const void *A, const int lda,
595  const double beta, void *C, const int ldc);
596 void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
597  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
598  const void *alpha, const void *A, const int lda,
599  const void *B, const int ldb, const double beta,
600  void *C, const int ldc);
601 
602 void cblas_xerbla(int p, const char *rout, const char *form, ...);
603 
605 
606 #endif /* __GSL_CBLAS_H__ */