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 }