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