Merge branch 'release-0.2.0' into develop
[platform/upstream/openblas.git] / cblas.h
1 #ifndef CBLAS_H
2 #define CBLAS_H
3
4 #ifdef __cplusplus
5 extern "C" {
6         /* Assume C declarations for C++ */
7 #endif  /* __cplusplus */
8
9 #include <stddef.h>
10 #include "common.h"
11
12 /*Set the number of threads on runtime.*/
13 void openblas_set_num_threads(int num_threads);
14 void goto_set_num_threads(int num_threads);
15
16 #define CBLAS_INDEX size_t
17
18 enum CBLAS_ORDER     {CblasRowMajor=101, CblasColMajor=102};
19 enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113, CblasConjNoTrans=114};
20 enum CBLAS_UPLO      {CblasUpper=121, CblasLower=122};
21 enum CBLAS_DIAG      {CblasNonUnit=131, CblasUnit=132};
22 enum CBLAS_SIDE      {CblasLeft=141, CblasRight=142};
23
24 float  cblas_sdsdot(blasint n, float, float *x, blasint incx, float *y, blasint incy);
25 double cblas_dsdot (blasint n, float *x, blasint incx, float *y, blasint incy);
26 float  cblas_sdot(blasint n, float  *x, blasint incx, float  *y, blasint incy);
27 double cblas_ddot(blasint n, double *x, blasint incx, double *y, blasint incy);
28
29 openblas_complex_float  cblas_cdotu(blasint n, float  *x, blasint incx, float  *y, blasint incy);
30 openblas_complex_float  cblas_cdotc(blasint n, float  *x, blasint incx, float  *y, blasint incy);
31 openblas_complex_double cblas_zdotu(blasint n, double *x, blasint incx, double *y, blasint incy);
32 openblas_complex_double cblas_zdotc(blasint n, double *x, blasint incx, double *y, blasint incy);
33
34 void  cblas_cdotu_sub(blasint n, float  *x, blasint incx, float  *y, blasint incy, openblas_complex_float  *ret);
35 void  cblas_cdotc_sub(blasint n, float  *x, blasint incx, float  *y, blasint incy, openblas_complex_float  *ret);
36 void  cblas_zdotu_sub(blasint n, double *x, blasint incx, double *y, blasint incy, openblas_complex_double *ret);
37 void  cblas_zdotc_sub(blasint n, double *x, blasint incx, double *y, blasint incy, openblas_complex_double *ret);
38
39 float  cblas_sasum (blasint n, float  *x, blasint incx);
40 double cblas_dasum (blasint n, double *x, blasint incx);
41 float  cblas_scasum(blasint n, float  *x, blasint incx);
42 double cblas_dzasum(blasint n, double *x, blasint incx);
43
44 float  cblas_snrm2 (blasint N, float  *X, blasint incX);
45 double cblas_dnrm2 (blasint N, double *X, blasint incX);
46 float  cblas_scnrm2(blasint N, float  *X, blasint incX);
47 double cblas_dznrm2(blasint N, double *X, blasint incX);
48
49 CBLAS_INDEX cblas_isamax(blasint n, float  *x, blasint incx);
50 CBLAS_INDEX cblas_idamax(blasint n, double *x, blasint incx);
51 CBLAS_INDEX cblas_icamax(blasint n, float  *x, blasint incx);
52 CBLAS_INDEX cblas_izamax(blasint n, double *x, blasint incx);
53
54 void cblas_saxpy(blasint n, float, float *x, blasint incx, float *y, blasint incy);
55 void cblas_daxpy(blasint n, double, double *x, blasint incx, double *y, blasint incy);
56 void cblas_caxpy(blasint n, float *, float *x, blasint incx, float *y, blasint incy);
57 void cblas_zaxpy(blasint n, double *, double *x, blasint incx, double *y, blasint incy);
58
59 void cblas_scopy(blasint n, float *x, blasint incx, float *y, blasint incy);
60 void cblas_dcopy(blasint n, double *x, blasint incx, double *y, blasint incy);
61 void cblas_ccopy(blasint n, float *x, blasint incx, float *y, blasint incy);
62 void cblas_zcopy(blasint n, double *x, blasint incx, double *y, blasint incy);
63
64 void cblas_sswap(blasint n, float *x, blasint incx, float *y, blasint incy);
65 void cblas_dswap(blasint n, double *x, blasint incx, double *y, blasint incy);
66 void cblas_cswap(blasint n, float *x, blasint incx, float *y, blasint incy);
67 void cblas_zswap(blasint n, double *x, blasint incx, double *y, blasint incy);
68
69 void cblas_srot(blasint N, float *X, blasint incX, float *Y, blasint incY, float c, float s);
70 void cblas_drot(blasint N, double *X, blasint incX, double *Y, blasint incY, double c, double  s);
71
72 void cblas_srotg(float *a, float *b, float *c, float *s);
73 void cblas_drotg(double *a, double *b, double *c, double *s);
74
75 void cblas_srotm(blasint N, float *X, blasint incX, float *Y, blasint incY, float *P);
76 void cblas_drotm(blasint N, double *X, blasint incX, double *Y, blasint incY, double *P);
77
78 void cblas_srotmg(float *d1, float *d2, float *b1, float b2, float *P);
79 void cblas_drotmg(double *d1, double *d2, double *b1, double b2, double *P);
80
81 void cblas_sscal(blasint N, float alpha, float *X, blasint incX);
82 void cblas_dscal(blasint N, double alpha, double *X, blasint incX);
83 void cblas_cscal(blasint N, float *alpha, float *X, blasint incX);
84 void cblas_zscal(blasint N, double *alpha, double *X, blasint incX);
85 void cblas_csscal(blasint N, float alpha, float *X, blasint incX);
86 void cblas_zdscal(blasint N, double alpha, double *X, blasint incX);
87
88 void cblas_sgemv(enum CBLAS_ORDER order,  enum CBLAS_TRANSPOSE trans,  blasint m, blasint n,
89                  float alpha, float  *a, blasint lda,  float  *x, blasint incx,  float beta,  float  *y, blasint incy);
90 void cblas_dgemv(enum CBLAS_ORDER order,  enum CBLAS_TRANSPOSE trans,  blasint m, blasint n,
91                  double alpha, double  *a, blasint lda,  double  *x, blasint incx,  double beta,  double  *y, blasint incy);
92 void cblas_cgemv(enum CBLAS_ORDER order,  enum CBLAS_TRANSPOSE trans,  blasint m, blasint n,
93                  float *alpha, float  *a, blasint lda,  float  *x, blasint incx,  float *beta,  float  *y, blasint incy);
94 void cblas_zgemv(enum CBLAS_ORDER order,  enum CBLAS_TRANSPOSE trans,  blasint m, blasint n,
95                  double *alpha, double  *a, blasint lda,  double  *x, blasint incx,  double *beta,  double  *y, blasint incy);
96
97 void cblas_sger (enum CBLAS_ORDER order, blasint M, blasint N, float   alpha, float  *X, blasint incX, float  *Y, blasint incY, float  *A, blasint lda);
98 void cblas_dger (enum CBLAS_ORDER order, blasint M, blasint N, double  alpha, double *X, blasint incX, double *Y, blasint incY, double *A, blasint lda);
99 void cblas_cgeru(enum CBLAS_ORDER order, blasint M, blasint N, float  *alpha, float  *X, blasint incX, float  *Y, blasint incY, float  *A, blasint lda);
100 void cblas_cgerc(enum CBLAS_ORDER order, blasint M, blasint N, float  *alpha, float  *X, blasint incX, float  *Y, blasint incY, float  *A, blasint lda);
101 void cblas_zgeru(enum CBLAS_ORDER order, blasint M, blasint N, double *alpha, double *X, blasint incX, double *Y, blasint incY, double *A, blasint lda);
102 void cblas_zgerc(enum CBLAS_ORDER order, blasint M, blasint N, double *alpha, double *X, blasint incX, double *Y, blasint incY, double *A, blasint lda);
103
104 void cblas_strsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
105 void cblas_dtrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
106 void cblas_ctrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
107 void cblas_ztrsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
108
109 void cblas_strmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
110 void cblas_dtrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
111 void cblas_ctrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, float *A, blasint lda, float *X, blasint incX);
112 void cblas_ztrmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, blasint N, double *A, blasint lda, double *X, blasint incX);
113
114 void cblas_ssyr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *A, blasint lda);
115 void cblas_dsyr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *A, blasint lda);
116 void cblas_cher(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *A, blasint lda);
117 void cblas_zher(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *A, blasint lda);
118
119 void cblas_ssyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,blasint N, float alpha, float *X,
120                 blasint incX, float *Y, blasint incY, float *A, blasint lda);
121 void cblas_dsyr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X,
122                 blasint incX, double *Y, blasint incY, double *A, blasint lda);
123 void cblas_cher2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float *alpha, float *X, blasint incX,
124                 float *Y, blasint incY, float *A, blasint lda);
125 void cblas_zher2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double *alpha, double *X, blasint incX,
126                 double *Y, blasint incY, double *A, blasint lda);
127
128 void cblas_sgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
129                  blasint KL, blasint KU, float alpha, float *A, blasint lda, float *X, blasint incX, float beta, float *Y, blasint incY);
130 void cblas_dgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
131                  blasint KL, blasint KU, double alpha, double *A, blasint lda, double *X, blasint incX, double beta, double *Y, blasint incY);
132 void cblas_cgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
133                  blasint KL, blasint KU, float *alpha, float *A, blasint lda, float *X, blasint incX, float *beta, float *Y, blasint incY);
134 void cblas_zgbmv(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, blasint M, blasint N,
135                  blasint KL, blasint KU, double *alpha, double *A, blasint lda, double *X, blasint incX, double *beta, double *Y, blasint incY);
136
137 void cblas_ssbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K, float alpha, float *A,
138                  blasint lda, float *X, blasint incX, float beta, float *Y, blasint incY);
139 void cblas_dsbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K, double alpha, double *A,
140                  blasint lda, double *X, blasint incX, double beta, double *Y, blasint incY);
141
142
143 void cblas_stbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
144                  blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
145 void cblas_dtbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
146                  blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
147 void cblas_ctbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
148                  blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
149 void cblas_ztbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
150                  blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
151
152 void cblas_stbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
153                  blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
154 void cblas_dtbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
155                  blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
156 void cblas_ctbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
157                  blasint N, blasint K, float *A, blasint lda, float *X, blasint incX);
158 void cblas_ztbsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
159                  blasint N, blasint K, double *A, blasint lda, double *X, blasint incX);
160
161 void cblas_stpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
162                  blasint N, float *Ap, float *X, blasint incX);
163 void cblas_dtpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
164                  blasint N, double *Ap, double *X, blasint incX);
165 void cblas_ctpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
166                  blasint N, float *Ap, float *X, blasint incX);
167 void cblas_ztpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
168                  blasint N, double *Ap, double *X, blasint incX);
169
170 void cblas_stpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
171                  blasint N, float *Ap, float *X, blasint incX);
172 void cblas_dtpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
173                  blasint N, double *Ap, double *X, blasint incX);
174 void cblas_ctpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
175                  blasint N, float *Ap, float *X, blasint incX);
176 void cblas_ztpsv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag,
177                  blasint N, double *Ap, double *X, blasint incX);
178
179 void cblas_ssymv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *A,
180                  blasint lda, float *X, blasint incX, float beta, float *Y, blasint incY);
181 void cblas_dsymv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *A,
182                  blasint lda, double *X, blasint incX, double beta, double *Y, blasint incY);
183 void cblas_chemv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float *alpha, float *A,
184                  blasint lda, float *X, blasint incX, float *beta, float *Y, blasint incY);
185 void cblas_zhemv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double *alpha, double *A,
186                  blasint lda, double *X, blasint incX, double *beta, double *Y, blasint incY);
187
188
189 void cblas_sspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *Ap,
190                  float *X, blasint incX, float beta, float *Y, blasint incY);
191 void cblas_dspmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *Ap,
192                  double *X, blasint incX, double beta, double *Y, blasint incY);
193
194 void cblas_sspr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *Ap);
195 void cblas_dspr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *Ap);
196
197 void cblas_chpr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *A);
198 void cblas_zhpr(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X,blasint incX, double *A);
199
200 void cblas_sspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float alpha, float *X, blasint incX, float *Y, blasint incY, float *A);
201 void cblas_dspr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double alpha, double *X, blasint incX, double *Y, blasint incY, double *A);
202 void cblas_chpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, float *alpha, float *X, blasint incX, float *Y, blasint incY, float *Ap);
203 void cblas_zhpr2(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, double *alpha, double *X, blasint incX, double *Y, blasint incY, double *Ap);
204
205 void cblas_chbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K,
206                  float *alpha, float *A, blasint lda, float *X, blasint incX, float *beta, float *Y, blasint incY);
207 void cblas_zhbmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N, blasint K,
208                  double *alpha, double *A, blasint lda, double *X, blasint incX, double *beta, double *Y, blasint incY);
209
210 void cblas_chpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
211                  float *alpha, float *Ap, float *X, blasint incX, float *beta, float *Y, blasint incY);
212 void cblas_zhpmv(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, blasint N,
213                  double *alpha, double *Ap, double *X, blasint incX, double *beta, double *Y, blasint incY);
214
215 void cblas_sgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
216                  float alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
217 void cblas_dgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
218                  double alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
219 void cblas_cgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
220                  float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
221 void cblas_zgemm(enum CBLAS_ORDER Order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint M, blasint N, blasint K,
222                  double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
223
224 void cblas_ssymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
225                  float alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
226 void cblas_dsymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
227                  double alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
228 void cblas_csymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
229                  float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
230 void cblas_zsymm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
231                  double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
232
233 void cblas_ssyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
234                  blasint N, blasint K, float alpha, float *A, blasint lda, float beta, float *C, blasint ldc);
235 void cblas_dsyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
236                  blasint N, blasint K, double alpha, double *A, blasint lda, double beta, double *C, blasint ldc);
237 void cblas_csyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
238                  blasint N, blasint K, float *alpha, float *A, blasint lda, float *beta, float *C, blasint ldc);
239 void cblas_zsyrk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
240                  blasint N, blasint K, double *alpha, double *A, blasint lda, double *beta, double *C, blasint ldc);
241
242 void cblas_ssyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
243                   blasint N, blasint K, float alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
244 void cblas_dsyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
245                   blasint N, blasint K, double alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
246 void cblas_csyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
247                   blasint N, blasint K, float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
248 void cblas_zsyr2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans,
249                   blasint N, blasint K, double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
250
251 void cblas_strmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
252                  enum CBLAS_DIAG Diag, blasint M, blasint N, float alpha, float *A, blasint lda, float *B, blasint ldb);
253 void cblas_dtrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
254                  enum CBLAS_DIAG Diag, blasint M, blasint N, double alpha, double *A, blasint lda, double *B, blasint ldb);
255 void cblas_ctrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
256                  enum CBLAS_DIAG Diag, blasint M, blasint N, float *alpha, float *A, blasint lda, float *B, blasint ldb);
257 void cblas_ztrmm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
258                  enum CBLAS_DIAG Diag, blasint M, blasint N, double *alpha, double *A, blasint lda, double *B, blasint ldb);
259
260 void cblas_strsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
261                  enum CBLAS_DIAG Diag, blasint M, blasint N, float alpha, float *A, blasint lda, float *B, blasint ldb);
262 void cblas_dtrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
263                  enum CBLAS_DIAG Diag, blasint M, blasint N, double alpha, double *A, blasint lda, double *B, blasint ldb);
264 void cblas_ctrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
265                  enum CBLAS_DIAG Diag, blasint M, blasint N, float *alpha, float *A, blasint lda, float *B, blasint ldb);
266 void cblas_ztrsm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE TransA,
267                  enum CBLAS_DIAG Diag, blasint M, blasint N, double *alpha, double *A, blasint lda, double *B, blasint ldb);
268
269 void cblas_chemm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
270                  float *alpha, float *A, blasint lda, float *B, blasint ldb, float *beta, float *C, blasint ldc);
271 void cblas_zhemm(enum CBLAS_ORDER Order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, blasint M, blasint N,
272                  double *alpha, double *A, blasint lda, double *B, blasint ldb, double *beta, double *C, blasint ldc);
273
274 void cblas_cherk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
275                  float alpha, float *A, blasint lda, float beta, float *C, blasint ldc);
276 void cblas_zherk(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
277                  double alpha, double *A, blasint lda, double beta, double *C, blasint ldc);
278
279 void cblas_cher2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
280                   float *alpha, float *A, blasint lda, float *B, blasint ldb, float beta, float *C, blasint ldc);
281 void cblas_zher2k(enum CBLAS_ORDER Order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Trans, blasint N, blasint K,
282                   double *alpha, double *A, blasint lda, double *B, blasint ldb, double beta, double *C, blasint ldc);
283
284 void cblas_xerbla(blasint p, char *rout, char *form, ...);
285
286 #ifdef __cplusplus
287 }
288      
289 #endif  /* __cplusplus */
290
291 #endif