/ani/mrses

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