1 /**
2 C BLAS header.
3 
4 Authors: Ilya Yaroshenko
5 */
6 module cblas.cblas;
7 
8 import std.complex : Complex;
9 
10 version(OPENBLAS)
11 	version = CBLAS_CAN_RETURNS_COMPLEX;
12 
13 version(INTEL_MKL)
14 	version = CBLAS_CAN_RETURNS_COMPLEX;
15 
16 
17 
18 version(OPENBLAS)
19 {
20 	enum OPENBLAS_SEQUENTIAL = 0;
21 	/* OpenBLAS is compiled using normal threading model */
22 	enum OPENBLAS_THREAD = 1;
23 	/* OpenBLAS is compiled using OpenMP threading model */
24 	enum OPENBLAS_OPENMP = 2;	
25 }
26 
27 ///
28 alias CBLAS_INDEX = size_t;
29 
30 version(BLASNATIVEINT)
31 	///
32 	alias blasint = ptrdiff_t;
33 else
34 	///
35 	alias blasint = int;
36 
37 debug pragma(msg, "blasint = "~blasint.stringof);
38 
39 enum CBLAS_ORDER : blasint  {RowMajor=101, ColMajor=102};
40 alias Order = CBLAS_ORDER;
41 enum CBLAS_TRANSPOSE : blasint {NoTrans=111, Trans=112, ConjTrans=113, ConjNoTrans=114};
42 alias Transpose = CBLAS_TRANSPOSE;
43 enum CBLAS_UPLO  : blasint {Upper=121, Lower=122};
44 alias Uplo = CBLAS_UPLO;
45 enum CBLAS_DIAG  : blasint {NonUnit=131, Unit=132};
46 alias Diag = CBLAS_DIAG;
47 enum CBLAS_SIDE  : blasint {Left=141, Right=142};
48 alias Side = CBLAS_SIDE;
49 	
50 extern(C)
51 {
52 @nogc nothrow:
53 
54 	version(OPENBLAS)
55 	{
56 		/*Set the number of threads on runtime.*/
57 		void set_num_threads(int num_threads);
58 		void goto_set_num_threads(int num_threads);
59 
60 		/*Get the build configure on runtime.*/
61 		char* get_config();
62 
63 		/* Get the parallelization type which is used by OpenBLAS */
64 		int get_parallel(); 
65 	}
66 
67 	/* OpenBLAS is compiled for sequential use */
68 	float  cblas_sdsdot(in blasint n, in float alpha, in float *x, in blasint incx, in float *y, in blasint incy);
69 	double cblas_dsdot (in blasint n, in float *x, in blasint incx, in float *y, in blasint incy);
70 	float  cblas_sdot(in blasint n, in float  *x, in blasint incx, in float  *y, in blasint incy);
71 	double cblas_ddot(in blasint n, in double *x, in blasint incx, in double *y, in blasint incy);
72 
73 	version(CBLAS_CAN_RETURNS_COMPLEX)
74 	{
75 		Complex!float  cblas_cdotu(in blasint n, in Complex!float  *x, in blasint incx, in Complex!float  *y, in blasint incy);
76 		Complex!float  cblas_cdotc(in blasint n, in Complex!float  *x, in blasint incx, in Complex!float  *y, in blasint incy);
77 		Complex!double cblas_zdotu(in blasint n, in Complex!double *x, in blasint incx, in Complex!double *y, in blasint incy);
78 		Complex!double cblas_zdotc(in blasint n, in Complex!double *x, in blasint incx, in Complex!double *y, in blasint incy);
79 	}
80 	else
81 	{
82 		Complex!float   cblas_cdotu(in blasint n, in Complex!float  *x, in blasint incx, in Complex!float  *y, in blasint incy) {Complex!float  ret; cblas_cdotu_sub(n, x, incx, y, incy,  &ret); return ret; }
83 		Complex!float   cblas_cdotc(in blasint n, in Complex!float  *x, in blasint incx, in Complex!float  *y, in blasint incy) {Complex!float  ret; cblas_cdotc_sub(n, x, incx, y, incy,  &ret); return ret; }
84 		Complex!double  cblas_zdotu(in blasint n, in Complex!double *x, in blasint incx, in Complex!double *y, in blasint incy) {Complex!double ret; cblas_zdotu_sub(n, x, incx, y, incy,  &ret); return ret; }
85 		Complex!double  cblas_zdotc(in blasint n, in Complex!double *x, in blasint incx, in Complex!double *y, in blasint incy) {Complex!double ret; cblas_zdotc_sub(n, x, incx, y, incy,  &ret); return ret; }
86 	}
87 
88 	void  cblas_cdotu_sub(in blasint n, in Complex!float  *x, in blasint incx, in Complex!float  *y, in blasint incy, Complex!float  *ret);
89 	void  cblas_cdotc_sub(in blasint n, in Complex!float  *x, in blasint incx, in Complex!float  *y, in blasint incy, Complex!float  *ret);
90 	void  cblas_zdotu_sub(in blasint n, in Complex!double *x, in blasint incx, in Complex!double *y, in blasint incy, Complex!double *ret);
91 	void  cblas_zdotc_sub(in blasint n, in Complex!double *x, in blasint incx, in Complex!double *y, in blasint incy, Complex!double *ret);
92 
93 	float  cblas_sasum (in blasint n, in float  *x, in blasint incx);
94 	double cblas_dasum (in blasint n, in double *x, in blasint incx);
95 	float  cblas_scasum(in blasint n, in Complex!float  *x, in blasint incx);
96 	double cblas_dzasum(in blasint n, in Complex!double *x, in blasint incx);
97 
98 	float  cblas_snrm2 (in blasint N, in float  *X, in blasint incX);
99 	double cblas_dnrm2 (in blasint N, in double *X, in blasint incX);
100 	float  cblas_scnrm2(in blasint N, in Complex!float  *X, in blasint incX);
101 	double cblas_dznrm2(in blasint N, in Complex!double *X, in blasint incX);
102 
103 	CBLAS_INDEX cblas_isamax(in blasint n, in float  *x, in blasint incx);
104 	CBLAS_INDEX cblas_idamax(in blasint n, in double *x, in blasint incx);
105 	CBLAS_INDEX cblas_icamax(in blasint n, in Complex!float  *x, in blasint incx);
106 	CBLAS_INDEX cblas_izamax(in blasint n, in Complex!double *x, in blasint incx);
107 
108 	void cblas_saxpy(in blasint n, in float alpha, in float *x, in blasint incx, float *y, in blasint incy);
109 	void cblas_daxpy(in blasint n, in double alpha, in double *x, in blasint incx, double *y, in blasint incy);
110 	void cblas_caxpy(in blasint n, in Complex!float *alpha, in Complex!float *x, in blasint incx, Complex!float *y, in blasint incy);
111 	void cblas_zaxpy(in blasint n, in Complex!double *alpha, in Complex!double *x, in blasint incx, Complex!double *y, in blasint incy);
112 
113 	void cblas_scopy(in blasint n, in float *x, in blasint incx, float *y, in blasint incy);
114 	void cblas_dcopy(in blasint n, in double *x, in blasint incx, double *y, in blasint incy);
115 	void cblas_ccopy(in blasint n, in Complex!float *x, in blasint incx, Complex!float *y, in blasint incy);
116 	void cblas_zcopy(in blasint n, in Complex!double *x, in blasint incx, Complex!double *y, in blasint incy);
117 
118 	void cblas_sswap(in blasint n, float *x, in blasint incx, float *y, in blasint incy);
119 	void cblas_dswap(in blasint n, double *x, in blasint incx, double *y, in blasint incy);
120 	void cblas_cswap(in blasint n, Complex!float *x, in blasint incx, Complex!float *y, in blasint incy);
121 	void cblas_zswap(in blasint n, Complex!double *x, in blasint incx, Complex!double *y, in blasint incy);
122 
123 	void cblas_srot(in blasint N, float *X, in blasint incX, float *Y, in blasint incY, in float c, in float s);
124 	void cblas_drot(in blasint N, double *X, in blasint incX, double *Y, in blasint incY, in double c, in double  s);
125 
126 	void cblas_srotg(float *a, float *b, float *c, float *s);
127 	void cblas_drotg(double *a, double *b, double *c, double *s);
128 
129 	void cblas_srotm(in blasint N, float *X, in blasint incX, float *Y, in blasint incY, in float *P);
130 	void cblas_drotm(in blasint N, double *X, in blasint incX, double *Y, in blasint incY, in double *P);
131 
132 	void cblas_srotmg(float *d1, float *d2, float *b1, in float b2, float *P);
133 	void cblas_drotmg(double *d1, double *d2, double *b1, in double b2, double *P);
134 
135 	void cblas_sscal(in blasint N, in float alpha, float *X, in blasint incX);
136 	void cblas_dscal(in blasint N, in double alpha, double *X, in blasint incX);
137 	void cblas_cscal(in blasint N, in Complex!float *alpha, Complex!float *X, in blasint incX);
138 	void cblas_zscal(in blasint N, in Complex!double *alpha, Complex!double *X, in blasint incX);
139 	void cblas_csscal(in blasint N, in Complex!float alpha, Complex!float *X, in blasint incX);
140 	void cblas_zdscal(in blasint N, in Complex!double alpha, Complex!double *X, in blasint incX);
141 
142 	void cblas_sgemv(in CBLAS_ORDER order,  in CBLAS_TRANSPOSE trans,  in blasint m, in blasint n, in float alpha, in float  *a, in blasint lda,  in float  *x, in blasint incx,  in float beta,  float  *y, in blasint incy);
143 	void cblas_dgemv(in CBLAS_ORDER order,  in CBLAS_TRANSPOSE trans,  in blasint m, in blasint n, in double alpha, in double  *a, in blasint lda,  in double  *x, in blasint incx,  in double beta,  double  *y, in blasint incy);
144 	void cblas_cgemv(in CBLAS_ORDER order,  in CBLAS_TRANSPOSE trans,  in blasint m, in blasint n, in Complex!float *alpha, in Complex!float  *a, in blasint lda,  in Complex!float  *x, in blasint incx,  in Complex!float *beta,  Complex!float  *y, in blasint incy);
145 	void cblas_zgemv(in CBLAS_ORDER order,  in CBLAS_TRANSPOSE trans,  in blasint m, in blasint n, in Complex!double *alpha, in Complex!double  *a, in blasint lda,  in Complex!double  *x, in blasint incx,  in Complex!double *beta,  Complex!double  *y, in blasint incy);
146 
147 	void cblas_sger (in CBLAS_ORDER order, in blasint M, in blasint N, in float   alpha, in float  *X, in blasint incX, in float  *Y, in blasint incY, float  *A, in blasint lda);
148 	void cblas_dger (in CBLAS_ORDER order, in blasint M, in blasint N, in double  alpha, in double *X, in blasint incX, in double *Y, in blasint incY, double *A, in blasint lda);
149 	void cblas_cgeru(in CBLAS_ORDER order, in blasint M, in blasint N, in Complex!float  *alpha, in Complex!float  *X, in blasint incX, in Complex!float  *Y, in blasint incY, Complex!float  *A, in blasint lda);
150 	void cblas_cgerc(in CBLAS_ORDER order, in blasint M, in blasint N, in Complex!float  *alpha, in Complex!float  *X, in blasint incX, in Complex!float  *Y, in blasint incY, Complex!float  *A, in blasint lda);
151 	void cblas_zgeru(in CBLAS_ORDER order, in blasint M, in blasint N, in Complex!double *alpha, in Complex!double *X, in blasint incX, in Complex!double *Y, in blasint incY, Complex!double *A, in blasint lda);
152 	void cblas_zgerc(in CBLAS_ORDER order, in blasint M, in blasint N, in Complex!double *alpha, in Complex!double *X, in blasint incX, in Complex!double *Y, in blasint incY, Complex!double *A, in blasint lda);
153 
154 	void cblas_strsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in float *A, in blasint lda, float *X, in blasint incX);
155 	void cblas_dtrsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in double *A, in blasint lda, double *X, in blasint incX);
156 	void cblas_ctrsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!float *A, in blasint lda, Complex!float *X, in blasint incX);
157 	void cblas_ztrsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!double *A, in blasint lda, Complex!double *X, in blasint incX);
158 
159 	void cblas_strmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in float *A, in blasint lda, float *X, in blasint incX);
160 	void cblas_dtrmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in double *A, in blasint lda, double *X, in blasint incX);
161 	void cblas_ctrmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!float *A, in blasint lda, Complex!float *X, in blasint incX);
162 	void cblas_ztrmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!double *A, in blasint lda, Complex!double *X, in blasint incX);
163 
164 	void cblas_ssyr(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *X, in blasint incX, float *A, in blasint lda);
165 	void cblas_dsyr(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *X, in blasint incX, double *A, in blasint lda);
166 	void cblas_cher(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!float alpha, in Complex!float *X, in blasint incX, Complex!float *A, in blasint lda);
167 	void cblas_zher(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!double alpha, in Complex!double *X, in blasint incX, Complex!double *A, in blasint lda);
168 
169 	void cblas_ssyr2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *X, in blasint incX, in float *Y, in blasint incY, float *A, in blasint lda);
170 	void cblas_dsyr2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *X, in blasint incX, in double *Y, in blasint incY, double *A, in blasint lda);
171 	void cblas_cher2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!float *alpha, in Complex!float *X, in blasint incX, in Complex!float *Y, in blasint incY, Complex!float *A, in blasint lda);
172 	void cblas_zher2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!double *alpha, in Complex!double *X, in blasint incX, in Complex!double *Y, in blasint incY, Complex!double *A, in blasint lda);
173 
174 	void cblas_sgbmv(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in blasint M, in blasint N, in blasint KL, in blasint KU, in float alpha, in float *A, in blasint lda, in float *X, in blasint incX, in float beta, float *Y, in blasint incY);
175 	void cblas_dgbmv(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in blasint M, in blasint N, in blasint KL, in blasint KU, in double alpha, in double *A, in blasint lda, in double *X, in blasint incX, in double beta, double *Y, in blasint incY);
176 	void cblas_cgbmv(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in blasint M, in blasint N, in blasint KL, in blasint KU, in Complex!float *alpha, in Complex!float *A, in blasint lda, in Complex!float *X, in blasint incX, in Complex!float *beta, Complex!float *Y, in blasint incY);
177 	void cblas_zgbmv(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in blasint M, in blasint N, in blasint KL, in blasint KU, in Complex!double *alpha, in Complex!double *A, in blasint lda, in Complex!double *X, in blasint incX, in Complex!double *beta, Complex!double *Y, in blasint incY);
178 
179 	void cblas_ssbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in blasint K, in float alpha, in float *A, in blasint lda, in float *X, in blasint incX, in float beta, float *Y, in blasint incY);
180 	void cblas_dsbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in blasint K, in double alpha, in double *A, in blasint lda, in double *X, in blasint incX, in double beta, double *Y, in blasint incY);
181 
182 
183 	void cblas_stbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in float *A, in blasint lda, float *X, in blasint incX);
184 	void cblas_dtbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in double *A, in blasint lda, double *X, in blasint incX);
185 	void cblas_ctbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in Complex!float *A, in blasint lda, Complex!float *X, in blasint incX);
186 	void cblas_ztbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in Complex!double *A, in blasint lda, Complex!double *X, in blasint incX);
187 
188 	void cblas_stbsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in float *A, in blasint lda, float *X, in blasint incX);
189 	void cblas_dtbsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in double *A, in blasint lda, double *X, in blasint incX);
190 	void cblas_ctbsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in Complex!float *A, in blasint lda, Complex!float *X, in blasint incX);
191 	void cblas_ztbsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in blasint K, in Complex!double *A, in blasint lda, Complex!double *X, in blasint incX);
192 
193 	void cblas_stpmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in float *Ap, float *X, in blasint incX);
194 	void cblas_dtpmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in double *Ap, double *X, in blasint incX);
195 	void cblas_ctpmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!float *Ap, Complex!float *X, in blasint incX);
196 	void cblas_ztpmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!double *Ap, Complex!double *X, in blasint incX);
197 
198 	void cblas_stpsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in float *Ap, float *X, in blasint incX);
199 	void cblas_dtpsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in double *Ap, double *X, in blasint incX);
200 	void cblas_ctpsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!float *Ap, Complex!float *X, in blasint incX);
201 	void cblas_ztpsv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint N, in Complex!double *Ap, Complex!double *X, in blasint incX);
202 
203 	void cblas_ssymv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *A, in blasint lda, in float *X, in blasint incX, in float beta, float *Y, in blasint incY);
204 	void cblas_dsymv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *A, in blasint lda, in double *X, in blasint incX, in double beta, double *Y, in blasint incY);
205 	void cblas_chemv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!float *alpha, in Complex!float *A, in blasint lda, in Complex!float *X, in blasint incX, in Complex!float *beta, Complex!float *Y, in blasint incY);
206 	void cblas_zhemv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!double *alpha, in Complex!double *A, in blasint lda, in Complex!double *X, in blasint incX, in Complex!double *beta, Complex!double *Y, in blasint incY);
207 
208 
209 	void cblas_sspmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *Ap, in float *X, in blasint incX, in float beta, float *Y, in blasint incY);
210 	void cblas_dspmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *Ap, in double *X, in blasint incX, in double beta, double *Y, in blasint incY);
211 
212 	void cblas_sspr(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *X, in blasint incX, float *Ap);
213 	void cblas_dspr(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *X, in blasint incX, double *Ap);
214 
215 	void cblas_chpr(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *X, in blasint incX, float *A);
216 	void cblas_zhpr(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *X, in blasint incX, double *A);
217 
218 	void cblas_sspr2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float alpha, in float *X, in blasint incX, in float *Y, in blasint incY, float *A);
219 	void cblas_dspr2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double alpha, in double *X, in blasint incX, in double *Y, in blasint incY, double *A);
220 	void cblas_chpr2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!float *alpha, in Complex!float *X, in blasint incX, in Complex!float *Y, in blasint incY, Complex!float *Ap);
221 	void cblas_zhpr2(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in Complex!double *alpha, in Complex!double *X, in blasint incX, in Complex!double *Y, in blasint incY, Complex!double *Ap);
222 
223 	void cblas_chbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in blasint K, in float *alpha, in float *A, in blasint lda, in float *X, in blasint incX, in float *beta, float *Y, in blasint incY);
224 	void cblas_zhbmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in blasint K, in double *alpha, in double *A, in blasint lda, in double *X, in blasint incX, in double *beta, double *Y, in blasint incY);
225 
226 	void cblas_chpmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in float *alpha, in float *Ap, in float *X, in blasint incX, in float *beta, float *Y, in blasint incY);
227 	void cblas_zhpmv(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in blasint N, in double *alpha, in double *Ap, in double *X, in blasint incX, in double *beta, double *Y, in blasint incY);
228 
229 	void cblas_sgemm(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in CBLAS_TRANSPOSE TransB, in blasint M, in blasint N, in blasint K, in float alpha, in float *A, in blasint lda, in float *B, in blasint ldb, in float beta, float *C, in blasint ldc);
230 	void cblas_dgemm(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in CBLAS_TRANSPOSE TransB, in blasint M, in blasint N, in blasint K, in double alpha, in double *A, in blasint lda, in double *B, in blasint ldb, in double beta, double *C, in blasint ldc);
231 	void cblas_cgemm(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in CBLAS_TRANSPOSE TransB, in blasint M, in blasint N, in blasint K, in Complex!float *alpha, in Complex!float *A, in blasint lda, in Complex!float *B, in blasint ldb, in Complex!float *beta, Complex!float *C, in blasint ldc);
232 	void cblas_zgemm(in CBLAS_ORDER order, in CBLAS_TRANSPOSE TransA, in CBLAS_TRANSPOSE TransB, in blasint M, in blasint N, in blasint K, in Complex!double *alpha, in Complex!double *A, in blasint lda, in Complex!double *B, in blasint ldb, in Complex!double *beta, Complex!double *C, in blasint ldc);
233 
234 	void cblas_ssymm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in blasint M, in blasint N, in float alpha, in float *A, in blasint lda, in float *B, in blasint ldb, in float beta, float *C, in blasint ldc);
235 	void cblas_dsymm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in blasint M, in blasint N, in double alpha, in double *A, in blasint lda, in double *B, in blasint ldb, in double beta, double *C, in blasint ldc);
236 	void cblas_csymm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in blasint M, in blasint N, in Complex!float *alpha, in Complex!float *A, in blasint lda, in Complex!float *B, in blasint ldb, in Complex!float *beta, Complex!float *C, in blasint ldc);
237 	void cblas_zsymm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in blasint M, in blasint N, in Complex!double *alpha, in Complex!double *A, in blasint lda, in Complex!double *B, in blasint ldb, in Complex!double *beta, Complex!double *C, in blasint ldc);
238 
239 	void cblas_ssyrk(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in float alpha, in float *A, in blasint lda, in float beta, float *C, in blasint ldc);
240 	void cblas_dsyrk(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in double alpha, in double *A, in blasint lda, in double beta, double *C, in blasint ldc); 
241 	void cblas_csyrk(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in Complex!float *alpha, in Complex!float *A, in blasint lda, in Complex!float *beta, Complex!float *C, in blasint ldc);
242 	void cblas_zsyrk(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in Complex!double *alpha, in Complex!double *A, in blasint lda, in Complex!double *beta, Complex!double *C, in blasint ldc);
243 
244 	void cblas_ssyr2k(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in float alpha, in float *A, in blasint lda, in float *B, in blasint ldb, in float beta, float *C, in blasint ldc);
245 	void cblas_dsyr2k(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in double alpha, in double *A, in blasint lda, in double *B, in blasint ldb, in double beta, double *C, in blasint ldc);
246 	void cblas_csyr2k(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in Complex!float *alpha, in Complex!float *A, in blasint lda, in Complex!float *B, in blasint ldb, in Complex!float *beta, Complex!float *C, in blasint ldc);
247 	void cblas_zsyr2k(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in Complex!double *alpha, in Complex!double *A, in blasint lda, in Complex!double *B, in blasint ldb, in Complex!double *beta, Complex!double *C, in blasint ldc);
248 
249 	void cblas_strmm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in float alpha, in float *A, in blasint lda, float *B, in blasint ldb);
250 	void cblas_dtrmm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in double alpha, in double *A, in blasint lda, double *B, in blasint ldb);
251 	void cblas_ctrmm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in Complex!float *alpha, in Complex!float *A, in blasint lda, Complex!float *B, in blasint ldb);
252 	void cblas_ztrmm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in Complex!double *alpha, in Complex!double *A, in blasint lda, Complex!double *B, in blasint ldb);
253 
254 	void cblas_strsm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in float alpha, in float *A, in blasint lda, float *B, in blasint ldb);
255 	void cblas_dtrsm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in double alpha, in double *A, in blasint lda, double *B, in blasint ldb);
256 	void cblas_ctrsm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in Complex!float *alpha, in Complex!float *A, in blasint lda, Complex!float *B, in blasint ldb);
257 	void cblas_ztrsm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE TransA, in CBLAS_DIAG Diag, in blasint M, in blasint N, in Complex!double *alpha, in Complex!double *A, in blasint lda, Complex!double *B, in blasint ldb);
258 
259 	void cblas_chemm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in blasint M, in blasint N, in float *alpha, in float *A, in blasint lda, in float *B, in blasint ldb, in float *beta, float *C, in blasint ldc);
260 	void cblas_zhemm(in CBLAS_ORDER order, in CBLAS_SIDE Side, in CBLAS_UPLO Uplo, in blasint M, in blasint N, in double *alpha, in double *A, in blasint lda, in double *B, in blasint ldb, in double *beta, double *C, in blasint ldc);
261 
262 	void cblas_cherk(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in float alpha, in float *A, in blasint lda, in float beta, float *C, in blasint ldc);
263 	void cblas_zherk(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in double alpha, in double *A, in blasint lda, in double beta, double *C, in blasint ldc);
264 
265 	void cblas_cher2k(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in float *alpha, in float *A, in blasint lda, in float *B, in blasint ldb, in float beta, float *C, in blasint ldc);
266 	void cblas_zher2k(in CBLAS_ORDER order, in CBLAS_UPLO Uplo, in CBLAS_TRANSPOSE Trans, in blasint N, in blasint K, in double *alpha, in double *A, in blasint lda, in double *B, in blasint ldb, in double beta, double *C, in blasint ldc);
267 
268 	void cblas_xerbla(blasint p, char *rout, char *form, ...);
269 }