1 module cblas;
2 
3 import std.complex : Complex;
4 
5 alias sdsdot = cblas_sdsdot;
6 alias dsdot = cblas_dsdot;
7 alias dot = cblas_sdot;
8 alias dot = cblas_ddot;
9 alias dotu = cblas_cdotu;
10 alias dotc = cblas_cdotc;
11 alias dotu = cblas_zdotu;
12 alias dotc = cblas_zdotc;
13 alias dotu_sub = cblas_cdotu_sub;
14 alias dotc_sub = cblas_cdotc_sub;
15 alias dotu_sub = cblas_zdotu_sub;
16 alias dotc_sub = cblas_zdotc_sub;
17 alias asum = cblas_sasum;
18 alias asum = cblas_dasum;
19 alias asum = cblas_scasum;
20 alias asum = cblas_dzasum;
21 alias nrm2 = cblas_snrm2;
22 alias nrm2 = cblas_dnrm2;
23 alias cnrm2 = cblas_scnrm2;
24 alias znrm2 = cblas_dznrm2;
25 alias samax = cblas_isamax;
26 alias damax = cblas_idamax;
27 alias camax = cblas_icamax;
28 alias zamax = cblas_izamax;
29 alias axpy = cblas_saxpy;
30 alias axpy = cblas_daxpy;
31 alias axpy = cblas_caxpy;
32 alias axpy = cblas_zaxpy;
33 alias copy = cblas_scopy;
34 alias copy = cblas_dcopy;
35 alias copy = cblas_ccopy;
36 alias copy = cblas_zcopy;
37 alias swap = cblas_sswap;
38 alias swap = cblas_dswap;
39 alias swap = cblas_cswap;
40 alias swap = cblas_zswap;
41 alias rot = cblas_srot;
42 alias rot = cblas_drot;
43 alias rotg = cblas_srotg;
44 alias rotg = cblas_drotg;
45 alias rotm = cblas_srotm;
46 alias rotm = cblas_drotm;
47 alias rotmg = cblas_srotmg;
48 alias rotmg = cblas_drotmg;
49 alias scal = cblas_sscal;
50 alias scal = cblas_dscal;
51 alias scal = cblas_cscal;
52 alias scal = cblas_zscal;
53 alias sscal = cblas_csscal;
54 alias dscal = cblas_zdscal;
55 alias gemv = cblas_sgemv;
56 alias gemv = cblas_dgemv;
57 alias gemv = cblas_cgemv;
58 alias gemv = cblas_zgemv;
59 alias ger = cblas_sger;
60 alias ger = cblas_dger;
61 alias geru = cblas_cgeru;
62 alias gerc = cblas_cgerc;
63 alias geru = cblas_zgeru;
64 alias gerc = cblas_zgerc;
65 alias trsv = cblas_strsv;
66 alias trsv = cblas_dtrsv;
67 alias trsv = cblas_ctrsv;
68 alias trsv = cblas_ztrsv;
69 alias trmv = cblas_strmv;
70 alias trmv = cblas_dtrmv;
71 alias trmv = cblas_ctrmv;
72 alias trmv = cblas_ztrmv;
73 alias syr = cblas_ssyr;
74 alias syr = cblas_dsyr;
75 alias her = cblas_cher;
76 alias her = cblas_zher;
77 alias syr2 = cblas_ssyr2;
78 alias syr2 = cblas_dsyr2;
79 alias her2 = cblas_cher2;
80 alias her2 = cblas_zher2;
81 alias gbmv = cblas_sgbmv;
82 alias gbmv = cblas_dgbmv;
83 alias gbmv = cblas_cgbmv;
84 alias gbmv = cblas_zgbmv;
85 alias sbmv = cblas_ssbmv;
86 alias sbmv = cblas_dsbmv;
87 alias tbmv = cblas_stbmv;
88 alias tbmv = cblas_dtbmv;
89 alias tbmv = cblas_ctbmv;
90 alias tbmv = cblas_ztbmv;
91 alias tbsv = cblas_stbsv;
92 alias tbsv = cblas_dtbsv;
93 alias tbsv = cblas_ctbsv;
94 alias tbsv = cblas_ztbsv;
95 alias tpmv = cblas_stpmv;
96 alias tpmv = cblas_dtpmv;
97 alias tpmv = cblas_ctpmv;
98 alias tpmv = cblas_ztpmv;
99 alias tpsv = cblas_stpsv;
100 alias tpsv = cblas_dtpsv;
101 alias tpsv = cblas_ctpsv;
102 alias tpsv = cblas_ztpsv;
103 alias symv = cblas_ssymv;
104 alias symv = cblas_dsymv;
105 alias hemv = cblas_chemv;
106 alias hemv = cblas_zhemv;
107 alias spmv = cblas_sspmv;
108 alias spmv = cblas_dspmv;
109 alias spr = cblas_sspr;
110 alias spr = cblas_dspr;
111 alias hpr = cblas_chpr;
112 alias hpr = cblas_zhpr;
113 alias spr2 = cblas_sspr2;
114 alias spr2 = cblas_dspr2;
115 alias hpr2 = cblas_chpr2;
116 alias hpr2 = cblas_zhpr2;
117 alias hbmv = cblas_chbmv;
118 alias hbmv = cblas_zhbmv;
119 alias hpmv = cblas_chpmv;
120 alias hpmv = cblas_zhpmv;
121 alias gemm = cblas_sgemm;
122 alias gemm = cblas_dgemm;
123 alias gemm = cblas_cgemm;
124 alias gemm = cblas_zgemm;
125 alias symm = cblas_ssymm;
126 alias symm = cblas_dsymm;
127 alias symm = cblas_csymm;
128 alias symm = cblas_zsymm;
129 alias syrk = cblas_ssyrk;
130 alias syrk = cblas_dsyrk;
131 alias syrk = cblas_csyrk;
132 alias syrk = cblas_zsyrk;
133 alias syr2k = cblas_ssyr2k;
134 alias syr2k = cblas_dsyr2k;
135 alias syr2k = cblas_csyr2k;
136 alias syr2k = cblas_zsyr2k;
137 alias trmm = cblas_strmm;
138 alias trmm = cblas_dtrmm;
139 alias trmm = cblas_ctrmm;
140 alias trmm = cblas_ztrmm;
141 alias trsm = cblas_strsm;
142 alias trsm = cblas_dtrsm;
143 alias trsm = cblas_ctrsm;
144 alias trsm = cblas_ztrsm;
145 alias hemm = cblas_chemm;
146 alias hemm = cblas_zhemm;
147 alias herk = cblas_cherk;
148 alias herk = cblas_zherk;
149 alias her2k = cblas_cher2k;
150 alias her2k = cblas_zher2k;
151 alias xerbla = cblas_xerbla;
152 
153 version(OPENBLAS)
154 {
155 	enum OPENBLAS_SEQUENTIAL = 0;
156 	/* OpenBLAS is compiled using normal threading model */
157 	enum OPENBLAS_THREAD = 1;
158 	/* OpenBLAS is compiled using OpenMP threading model */
159 	enum OPENBLAS_OPENMP = 2;	
160 }
161 
162 
163 
164 alias CBLAS_INDEX = size_t;
165 version(BLASNATIVEINT)
166 	alias blasint = ptrdiff_t;
167 else
168 	alias blasint = int;
169 
170 pragma(msg, "blasint = "~blasint.stringof);
171 
172 alias complex_float = Complex!float;
173 alias complex_double = Complex!double;
174 
175 enum CBLAS_ORDER : blasint  {RowMajor=101, ColMajor=102};
176 alias Order = CBLAS_ORDER;
177 enum CBLAS_TRANSPOSE : blasint {NoTrans=111, Trans=112, ConjTrans=113, ConjNoTrans=114};
178 alias Transpose = CBLAS_TRANSPOSE;
179 enum CBLAS_UPLO  : blasint {Upper=121, Lower=122};
180 alias Uplo = CBLAS_UPLO;
181 enum CBLAS_DIAG  : blasint {NonUnit=131, Unit=132};
182 alias Diag = CBLAS_DIAG;
183 enum CBLAS_SIDE  : blasint {Left=141, Right=142};
184 alias Side = CBLAS_SIDE;
185 	
186 extern(C)
187 {
188 @nogc nothrow:
189 
190 	version(OPENBLAS)
191 	{
192 		/*Set the number of threads on runtime.*/
193 		void set_num_threads(int num_threads);
194 		void goto_set_num_threads(int num_threads);
195 
196 		/*Get the build configure on runtime.*/
197 		char* get_config();
198 
199 		/* Get the parallelization type which is used by OpenBLAS */
200 		int get_parallel(); 
201 	}
202 
203 	/* OpenBLAS is compiled for sequential use */
204 	float  cblas_sdsdot(const blasint n, const float alpha, const float *x, const blasint incx, const float *y, const blasint incy);
205 	double cblas_dsdot (const blasint n, const float *x, const blasint incx, const float *y, const blasint incy);
206 	float  cblas_sdot(const blasint n, const float  *x, const blasint incx, const float  *y, const blasint incy);
207 	double cblas_ddot(const blasint n, const double *x, const blasint incx, const double *y, const blasint incy);
208 
209 	complex_float  cblas_cdotu(const blasint n, const Complex!float  *x, const blasint incx, const Complex!float  *y, const blasint incy);
210 	complex_float  cblas_cdotc(const blasint n, const Complex!float  *x, const blasint incx, const Complex!float  *y, const blasint incy);
211 	complex_double cblas_zdotu(const blasint n, const Complex!double *x, const blasint incx, const Complex!double *y, const blasint incy);
212 	complex_double cblas_zdotc(const blasint n, const Complex!double *x, const blasint incx, const Complex!double *y, const blasint incy);
213 
214 	void  cblas_cdotu_sub(const blasint n, const Complex!float  *x, const blasint incx, const Complex!float  *y, const blasint incy, complex_float  *ret);
215 	void  cblas_cdotc_sub(const blasint n, const Complex!float  *x, const blasint incx, const Complex!float  *y, const blasint incy, complex_float  *ret);
216 	void  cblas_zdotu_sub(const blasint n, const Complex!double *x, const blasint incx, const Complex!double *y, const blasint incy, complex_double *ret);
217 	void  cblas_zdotc_sub(const blasint n, const Complex!double *x, const blasint incx, const Complex!double *y, const blasint incy, complex_double *ret);
218 
219 	float  cblas_sasum (const blasint n, const float  *x, const blasint incx);
220 	double cblas_dasum (const blasint n, const double *x, const blasint incx);
221 	float  cblas_scasum(const blasint n, const Complex!float  *x, const blasint incx);
222 	double cblas_dzasum(const blasint n, const Complex!double *x, const blasint incx);
223 
224 	float  cblas_snrm2 (const blasint N, const float  *X, const blasint incX);
225 	double cblas_dnrm2 (const blasint N, const double *X, const blasint incX);
226 	float  cblas_scnrm2(const blasint N, const Complex!float  *X, const blasint incX);
227 	double cblas_dznrm2(const blasint N, const Complex!double *X, const blasint incX);
228 
229 	CBLAS_INDEX cblas_isamax(const blasint n, const float  *x, const blasint incx);
230 	CBLAS_INDEX cblas_idamax(const blasint n, const double *x, const blasint incx);
231 	CBLAS_INDEX cblas_icamax(const blasint n, const Complex!float  *x, const blasint incx);
232 	CBLAS_INDEX cblas_izamax(const blasint n, const Complex!double *x, const blasint incx);
233 
234 	void cblas_saxpy(const blasint n, const float alpha, const float *x, const blasint incx, float *y, const blasint incy);
235 	void cblas_daxpy(const blasint n, const double alpha, const double *x, const blasint incx, double *y, const blasint incy);
236 	void cblas_caxpy(const blasint n, const Complex!float *alpha, const Complex!float *x, const blasint incx, Complex!float *y, const blasint incy);
237 	void cblas_zaxpy(const blasint n, const Complex!double *alpha, const Complex!double *x, const blasint incx, Complex!double *y, const blasint incy);
238 
239 	void cblas_scopy(const blasint n, const float *x, const blasint incx, float *y, const blasint incy);
240 	void cblas_dcopy(const blasint n, const double *x, const blasint incx, double *y, const blasint incy);
241 	void cblas_ccopy(const blasint n, const Complex!float *x, const blasint incx, Complex!float *y, const blasint incy);
242 	void cblas_zcopy(const blasint n, const Complex!double *x, const blasint incx, Complex!double *y, const blasint incy);
243 
244 	void cblas_sswap(const blasint n, float *x, const blasint incx, float *y, const blasint incy);
245 	void cblas_dswap(const blasint n, double *x, const blasint incx, double *y, const blasint incy);
246 	void cblas_cswap(const blasint n, Complex!float *x, const blasint incx, Complex!float *y, const blasint incy);
247 	void cblas_zswap(const blasint n, Complex!double *x, const blasint incx, Complex!double *y, const blasint incy);
248 
249 	void cblas_srot(const blasint N, float *X, const blasint incX, float *Y, const blasint incY, const float c, const float s);
250 	void cblas_drot(const blasint N, double *X, const blasint incX, double *Y, const blasint incY, const double c, const double  s);
251 
252 	void cblas_srotg(float *a, float *b, float *c, float *s);
253 	void cblas_drotg(double *a, double *b, double *c, double *s);
254 
255 	void cblas_srotm(const blasint N, float *X, const blasint incX, float *Y, const blasint incY, const float *P);
256 	void cblas_drotm(const blasint N, double *X, const blasint incX, double *Y, const blasint incY, const double *P);
257 
258 	void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
259 	void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
260 
261 	void cblas_sscal(const blasint N, const float alpha, float *X, const blasint incX);
262 	void cblas_dscal(const blasint N, const double alpha, double *X, const blasint incX);
263 	void cblas_cscal(const blasint N, const Complex!float *alpha, Complex!float *X, const blasint incX);
264 	void cblas_zscal(const blasint N, const Complex!double *alpha, Complex!double *X, const blasint incX);
265 	void cblas_csscal(const blasint N, const Complex!float alpha, Complex!float *X, const blasint incX);
266 	void cblas_zdscal(const blasint N, const Complex!double alpha, Complex!double *X, const blasint incX);
267 
268 	void cblas_sgemv(const CBLAS_ORDER order,  const CBLAS_TRANSPOSE trans,  const blasint m, const blasint n, const float alpha, const float  *a, const blasint lda,  const float  *x, const blasint incx,  const float beta,  float  *y, const blasint incy);
269 	void cblas_dgemv(const CBLAS_ORDER order,  const CBLAS_TRANSPOSE trans,  const blasint m, const blasint n, const double alpha, const double  *a, const blasint lda,  const double  *x, const blasint incx,  const double beta,  double  *y, const blasint incy);
270 	void cblas_cgemv(const CBLAS_ORDER order,  const CBLAS_TRANSPOSE trans,  const blasint m, const blasint n, const Complex!float *alpha, const Complex!float  *a, const blasint lda,  const Complex!float  *x, const blasint incx,  const Complex!float *beta,  Complex!float  *y, const blasint incy);
271 	void cblas_zgemv(const CBLAS_ORDER order,  const CBLAS_TRANSPOSE trans,  const blasint m, const blasint n, const Complex!double *alpha, const Complex!double  *a, const blasint lda,  const Complex!double  *x, const blasint incx,  const Complex!double *beta,  Complex!double  *y, const blasint incy);
272 
273 	void cblas_sger (const CBLAS_ORDER order, const blasint M, const blasint N, const float   alpha, const float  *X, const blasint incX, const float  *Y, const blasint incY, float  *A, const blasint lda);
274 	void cblas_dger (const CBLAS_ORDER order, const blasint M, const blasint N, const double  alpha, const double *X, const blasint incX, const double *Y, const blasint incY, double *A, const blasint lda);
275 	void cblas_cgeru(const CBLAS_ORDER order, const blasint M, const blasint N, const Complex!float  *alpha, const Complex!float  *X, const blasint incX, const Complex!float  *Y, const blasint incY, Complex!float  *A, const blasint lda);
276 	void cblas_cgerc(const CBLAS_ORDER order, const blasint M, const blasint N, const Complex!float  *alpha, const Complex!float  *X, const blasint incX, const Complex!float  *Y, const blasint incY, Complex!float  *A, const blasint lda);
277 	void cblas_zgeru(const CBLAS_ORDER order, const blasint M, const blasint N, const Complex!double *alpha, const Complex!double *X, const blasint incX, const Complex!double *Y, const blasint incY, Complex!double *A, const blasint lda);
278 	void cblas_zgerc(const CBLAS_ORDER order, const blasint M, const blasint N, const Complex!double *alpha, const Complex!double *X, const blasint incX, const Complex!double *Y, const blasint incY, Complex!double *A, const blasint lda);
279 
280 	void cblas_strsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const float *A, const blasint lda, float *X, const blasint incX);
281 	void cblas_dtrsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const double *A, const blasint lda, double *X, const blasint incX);
282 	void cblas_ctrsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!float *A, const blasint lda, Complex!float *X, const blasint incX);
283 	void cblas_ztrsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!double *A, const blasint lda, Complex!double *X, const blasint incX);
284 
285 	void cblas_strmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const float *A, const blasint lda, float *X, const blasint incX);
286 	void cblas_dtrmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const double *A, const blasint lda, double *X, const blasint incX);
287 	void cblas_ctrmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!float *A, const blasint lda, Complex!float *X, const blasint incX);
288 	void cblas_ztrmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!double *A, const blasint lda, Complex!double *X, const blasint incX);
289 
290 	void cblas_ssyr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *X, const blasint incX, float *A, const blasint lda);
291 	void cblas_dsyr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *X, const blasint incX, double *A, const blasint lda);
292 	void cblas_cher(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!float alpha, const Complex!float *X, const blasint incX, Complex!float *A, const blasint lda);
293 	void cblas_zher(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!double alpha, const Complex!double *X, const blasint incX, Complex!double *A, const blasint lda);
294 
295 	void cblas_ssyr2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *X, const blasint incX, const float *Y, const blasint incY, float *A, const blasint lda);
296 	void cblas_dsyr2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *X, const blasint incX, const double *Y, const blasint incY, double *A, const blasint lda);
297 	void cblas_cher2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!float *alpha, const Complex!float *X, const blasint incX, const Complex!float *Y, const blasint incY, Complex!float *A, const blasint lda);
298 	void cblas_zher2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!double *alpha, const Complex!double *X, const blasint incX, const Complex!double *Y, const blasint incY, Complex!double *A, const blasint lda);
299 
300 	void cblas_sgbmv(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const blasint M, const blasint N, const blasint KL, const blasint KU, const float alpha, const float *A, const blasint lda, const float *X, const blasint incX, const float beta, float *Y, const blasint incY);
301 	void cblas_dgbmv(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const blasint M, const blasint N, const blasint KL, const blasint KU, const double alpha, const double *A, const blasint lda, const double *X, const blasint incX, const double beta, double *Y, const blasint incY);
302 	void cblas_cgbmv(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const blasint M, const blasint N, const blasint KL, const blasint KU, const Complex!float *alpha, const Complex!float *A, const blasint lda, const Complex!float *X, const blasint incX, const Complex!float *beta, Complex!float *Y, const blasint incY);
303 	void cblas_zgbmv(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const blasint M, const blasint N, const blasint KL, const blasint KU, const Complex!double *alpha, const Complex!double *A, const blasint lda, const Complex!double *X, const blasint incX, const Complex!double *beta, Complex!double *Y, const blasint incY);
304 
305 	void cblas_ssbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const blasint K, const float alpha, const float *A, const blasint lda, const float *X, const blasint incX, const float beta, float *Y, const blasint incY);
306 	void cblas_dsbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const blasint K, const double alpha, const double *A, const blasint lda, const double *X, const blasint incX, const double beta, double *Y, const blasint incY);
307 
308 
309 	void cblas_stbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const float *A, const blasint lda, float *X, const blasint incX);
310 	void cblas_dtbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const double *A, const blasint lda, double *X, const blasint incX);
311 	void cblas_ctbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const Complex!float *A, const blasint lda, Complex!float *X, const blasint incX);
312 	void cblas_ztbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const Complex!double *A, const blasint lda, Complex!double *X, const blasint incX);
313 
314 	void cblas_stbsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const float *A, const blasint lda, float *X, const blasint incX);
315 	void cblas_dtbsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const double *A, const blasint lda, double *X, const blasint incX);
316 	void cblas_ctbsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const Complex!float *A, const blasint lda, Complex!float *X, const blasint incX);
317 	void cblas_ztbsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const blasint K, const Complex!double *A, const blasint lda, Complex!double *X, const blasint incX);
318 
319 	void cblas_stpmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const float *Ap, float *X, const blasint incX);
320 	void cblas_dtpmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const double *Ap, double *X, const blasint incX);
321 	void cblas_ctpmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!float *Ap, Complex!float *X, const blasint incX);
322 	void cblas_ztpmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!double *Ap, Complex!double *X, const blasint incX);
323 
324 	void cblas_stpsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const float *Ap, float *X, const blasint incX);
325 	void cblas_dtpsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const double *Ap, double *X, const blasint incX);
326 	void cblas_ctpsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!float *Ap, Complex!float *X, const blasint incX);
327 	void cblas_ztpsv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint N, const Complex!double *Ap, Complex!double *X, const blasint incX);
328 
329 	void cblas_ssymv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *A, const blasint lda, const float *X, const blasint incX, const float beta, float *Y, const blasint incY);
330 	void cblas_dsymv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *A, const blasint lda, const double *X, const blasint incX, const double beta, double *Y, const blasint incY);
331 	void cblas_chemv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!float *alpha, const Complex!float *A, const blasint lda, const Complex!float *X, const blasint incX, const Complex!float *beta, Complex!float *Y, const blasint incY);
332 	void cblas_zhemv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!double *alpha, const Complex!double *A, const blasint lda, const Complex!double *X, const blasint incX, const Complex!double *beta, Complex!double *Y, const blasint incY);
333 
334 
335 	void cblas_sspmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *Ap, const float *X, const blasint incX, const float beta, float *Y, const blasint incY);
336 	void cblas_dspmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *Ap, const double *X, const blasint incX, const double beta, double *Y, const blasint incY);
337 
338 	void cblas_sspr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *X, const blasint incX, float *Ap);
339 	void cblas_dspr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *X, const blasint incX, double *Ap);
340 
341 	void cblas_chpr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *X, const blasint incX, float *A);
342 	void cblas_zhpr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *X, const blasint incX, double *A);
343 
344 	void cblas_sspr2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float alpha, const float *X, const blasint incX, const float *Y, const blasint incY, float *A);
345 	void cblas_dspr2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double alpha, const double *X, const blasint incX, const double *Y, const blasint incY, double *A);
346 	void cblas_chpr2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!float *alpha, const Complex!float *X, const blasint incX, const Complex!float *Y, const blasint incY, Complex!float *Ap);
347 	void cblas_zhpr2(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const Complex!double *alpha, const Complex!double *X, const blasint incX, const Complex!double *Y, const blasint incY, Complex!double *Ap);
348 
349 	void cblas_chbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const blasint K, const float *alpha, const float *A, const blasint lda, const float *X, const blasint incX, const float *beta, float *Y, const blasint incY);
350 	void cblas_zhbmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const blasint K, const double *alpha, const double *A, const blasint lda, const double *X, const blasint incX, const double *beta, double *Y, const blasint incY);
351 
352 	void cblas_chpmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const float *alpha, const float *Ap, const float *X, const blasint incX, const float *beta, float *Y, const blasint incY);
353 	void cblas_zhpmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const blasint N, const double *alpha, const double *Ap, const double *X, const blasint incX, const double *beta, double *Y, const blasint incY);
354 
355 	void cblas_sgemm(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const blasint M, const blasint N, const blasint K, const float alpha, const float *A, const blasint lda, const float *B, const blasint ldb, const float beta, float *C, const blasint ldc);
356 	void cblas_dgemm(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const blasint M, const blasint N, const blasint K, const double alpha, const double *A, const blasint lda, const double *B, const blasint ldb, const double beta, double *C, const blasint ldc);
357 	void cblas_cgemm(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const blasint M, const blasint N, const blasint K, const Complex!float *alpha, const Complex!float *A, const blasint lda, const Complex!float *B, const blasint ldb, const Complex!float *beta, Complex!float *C, const blasint ldc);
358 	void cblas_zgemm(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const blasint M, const blasint N, const blasint K, const Complex!double *alpha, const Complex!double *A, const blasint lda, const Complex!double *B, const blasint ldb, const Complex!double *beta, Complex!double *C, const blasint ldc);
359 
360 	void cblas_ssymm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const blasint M, const blasint N, const float alpha, const float *A, const blasint lda, const float *B, const blasint ldb, const float beta, float *C, const blasint ldc);
361 	void cblas_dsymm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const blasint M, const blasint N, const double alpha, const double *A, const blasint lda, const double *B, const blasint ldb, const double beta, double *C, const blasint ldc);
362 	void cblas_csymm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const blasint M, const blasint N, const Complex!float *alpha, const Complex!float *A, const blasint lda, const Complex!float *B, const blasint ldb, const Complex!float *beta, Complex!float *C, const blasint ldc);
363 	void cblas_zsymm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const blasint M, const blasint N, const Complex!double *alpha, const Complex!double *A, const blasint lda, const Complex!double *B, const blasint ldb, const Complex!double *beta, Complex!double *C, const blasint ldc);
364 
365 	void cblas_ssyrk(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const float alpha, const float *A, const blasint lda, const float beta, float *C, const blasint ldc);
366 	void cblas_dsyrk(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const double alpha, const double *A, const blasint lda, const double beta, double *C, const blasint ldc); 
367 	void cblas_csyrk(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const Complex!float *alpha, const Complex!float *A, const blasint lda, const Complex!float *beta, Complex!float *C, const blasint ldc);
368 	void cblas_zsyrk(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const Complex!double *alpha, const Complex!double *A, const blasint lda, const Complex!double *beta, Complex!double *C, const blasint ldc);
369 
370 	void cblas_ssyr2k(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const float alpha, const float *A, const blasint lda, const float *B, const blasint ldb, const float beta, float *C, const blasint ldc);
371 	void cblas_dsyr2k(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const double alpha, const double *A, const blasint lda, const double *B, const blasint ldb, const double beta, double *C, const blasint ldc);
372 	void cblas_csyr2k(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const Complex!float *alpha, const Complex!float *A, const blasint lda, const Complex!float *B, const blasint ldb, const Complex!float *beta, Complex!float *C, const blasint ldc);
373 	void cblas_zsyr2k(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const Complex!double *alpha, const Complex!double *A, const blasint lda, const Complex!double *B, const blasint ldb, const Complex!double *beta, Complex!double *C, const blasint ldc);
374 
375 	void cblas_strmm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const float alpha, const float *A, const blasint lda, float *B, const blasint ldb);
376 	void cblas_dtrmm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const double alpha, const double *A, const blasint lda, double *B, const blasint ldb);
377 	void cblas_ctrmm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const Complex!float *alpha, const Complex!float *A, const blasint lda, Complex!float *B, const blasint ldb);
378 	void cblas_ztrmm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const Complex!double *alpha, const Complex!double *A, const blasint lda, Complex!double *B, const blasint ldb);
379 
380 	void cblas_strsm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const float alpha, const float *A, const blasint lda, float *B, const blasint ldb);
381 	void cblas_dtrsm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const double alpha, const double *A, const blasint lda, double *B, const blasint ldb);
382 	void cblas_ctrsm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const Complex!float *alpha, const Complex!float *A, const blasint lda, Complex!float *B, const blasint ldb);
383 	void cblas_ztrsm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const blasint M, const blasint N, const Complex!double *alpha, const Complex!double *A, const blasint lda, Complex!double *B, const blasint ldb);
384 
385 	void cblas_chemm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const blasint M, const blasint N, const float *alpha, const float *A, const blasint lda, const float *B, const blasint ldb, const float *beta, float *C, const blasint ldc);
386 	void cblas_zhemm(const CBLAS_ORDER order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const blasint M, const blasint N, const double *alpha, const double *A, const blasint lda, const double *B, const blasint ldb, const double *beta, double *C, const blasint ldc);
387 
388 	void cblas_cherk(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const float alpha, const float *A, const blasint lda, const float beta, float *C, const blasint ldc);
389 	void cblas_zherk(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const double alpha, const double *A, const blasint lda, const double beta, double *C, const blasint ldc);
390 
391 	void cblas_cher2k(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const float *alpha, const float *A, const blasint lda, const float *B, const blasint ldb, const float beta, float *C, const blasint ldc);
392 	void cblas_zher2k(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const blasint N, const blasint K, const double *alpha, const double *A, const blasint lda, const double *B, const blasint ldb, const double beta, double *C, const blasint ldc);
393 
394 	void cblas_xerbla(blasint p, char *rout, char *form, ...);
395 }