Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / cblas / gsl_cblas.h
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 3 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
39 __BEGIN_DECLS
40
41 /*
42  * Enumerated and derived types
43  */
44 #define CBLAS_INDEX size_t  /* this may vary between platforms */
45
46 enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
47 enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
48 enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
49 enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
50 enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
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
604 __END_DECLS
605
606 #endif /* __GSL_CBLAS_H__ */