3 * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
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.
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.
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.
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.
25 #ifndef __GSL_CBLAS_H__
26 #define __GSL_CBLAS_H__
32 #define __BEGIN_DECLS extern "C" {
35 #define __BEGIN_DECLS /* empty */
36 #define __END_DECLS /* empty */
42 * Enumerated and derived types
44 #define CBLAS_INDEX size_t /* this may vary between platforms */
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};
53 * ===========================================================================
54 * Prototypes for level 1 BLAS functions (complex are recast as routines)
55 * ===========================================================================
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,
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);
67 * Functions having prefixes Z and C only
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);
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);
81 * Functions having prefixes S D SC DZ
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);
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);
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);
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);
97 * Functions having standard 4 prefixes (S D C Z)
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);
105 * ===========================================================================
106 * Prototypes for level 1 BLAS routines
107 * ===========================================================================
111 * Routines with standard 4 prefixes (s, d, c, z)
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);
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);
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);
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);
143 * Routines with S and D prefix only
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);
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);
161 * Routines with S D C Z CS and ZD prefixes
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);
171 * ===========================================================================
172 * Prototypes for level 2 BLAS
173 * ===========================================================================
177 * Routines with standard 4 prefixes (S, D, C, Z)
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,
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);
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,
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);
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,
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);
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,
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);
313 * Routines with S and D prefixes only
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,
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);
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,
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);
375 * Routines with C and Z prefixes only
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);
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);
440 * ===========================================================================
441 * Prototypes for level 3 BLAS
442 * ===========================================================================
446 * Routines with standard 4 prefixes (S, D, C, Z)
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);
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);
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);
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);
570 * Routines with prefixes C and Z only
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);
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);
602 void cblas_xerbla(int p, const char *rout, const char *form, ...);
606 #endif /* __GSL_CBLAS_H__ */