#pragma once // TODO: think of better names enum { blas·LowerTri = 1u, blas·Transpose = 2u, blas·ConjTranspose = 4u, blas·DiagOnes = 8u, blas·LeftSide = 16u, }; /* * Floats */ // level 1 void blas·frot(int len, float *x, int incx, float *y, int incy, float cos, float sin); void blas·frotg(float *a, float *b, float *cos, float *sin); error blas·frotm(int len, float *x, int incx, float *y, int incy, float p[5]); void blas·fscale(int len, float a, float *x, int inc); void blas·fcopy(int len, float *x, int incx, float *y, int incy); void blas·fswap(int len, float *x, int incx, float *y, int incy); void blas·faxpy(int len, float a, float *x, int incx, float *y, int incy); float blas·fdot(int len, float *x, int incx, float *y, int incy); float blas·fnorm(int len, float *x, int inc); float blas·fasum(int len, float *x, int inc); int blas·fargmax(int len, float *x, int inc); int blas·fargmin(int len, float *x, int inc); // level 2 error blas·fgemv(uint f, int nrow, int ncol, float a, float *m, int incm, float *x, int incx, float b, float *y, int incy); void blas·fsymv(uint f, int n, float a, float* m, int incm, float *x, int incx, float b, float *y, int incy); void blas·fspmv(uint f, int n, float a, float* m, float *x, int incx, float b, float *y, int incm); void blas·ftrmv(uint f, int n, float* m, int incm, float *x, int incx); void blas·ftpmv(uint f, int n, float *m, float *x, int incx); void blas·ftrsv(uint f, int n, float *m, int incm, float *x, int incx); void blas·ftpsv(uint f, int n, float *m, float *x, int incx); void blas·fger(int nrow, int ncol, float a, float *x, int incx, float *y, int incy, float *m, int incm); void blas·fsyr(uint f, int n, float a, float *x, int incx, float *m, int incm); void blas·fspr(uint f, int n, float a, float *x, int incx, float *m); // level 3 void blas·fgemm(uint tr1, uint tr2, int n1, int n2, int n3, float a, float *m1, int inc1, float *m2, int inc2, float b, float *m3, int inc3); void blas·ftrmm(uint f, int nrow, int ncol, float a, float *m1, float *m2); void blas·ftrsm(uint f, int nrow, int ncol, float a, float *m1, float *m2); /* * Doubles */ // level 1 void blas·drot(int len, double *x, int incx, double *y, int incy, double cos, double sin); void blas·drotg(double *a, double *b, double *cos, double *sin); error blas·drotm(int len, double *x, int incx, double *y, int incy, double p[5]); void blas·dscale(int len, double a, double *x, int inc); void blas·dcopy(int len, double *x, int incx, double *y, int incy); void blas·dswap(int len, double *x, int incx, double *y, int incy); void blas·daxpy(int len, double a, double *x, int incx, double *y, int incy); double blas·ddot(int len, double *x, int incx, double *y, int incy); double blas·dnorm(int len, double *x, int inc); double blas·dasum(int len, double *x, int inc); int blas·dargmax(int len, double *x, int inc); int blas·dargmin(int len, double *x, int inc); // level 2 error blas·dgemv(uint f, int nrow, int ncol, double a, double *m, int incm, double *x, int incx, double b, double *y, int incy); void blas·dsymv(uint f, int n, double a, double* m, int incm, double *x, int incx, double b, double *y, int incy); void blas·dspmv(uint f, int n, double a, double* m, double *x, int incx, double b, double *y, int incy); void blas·dtrmv(uint f, int n, double *m, int incm, double *x, int incx); void blas·dtpmv(uint f, int n, double *m, double *x, int incx); void blas·dtrsv(uint f, int n, double *m, int incm, double *x, int incx); void blas·dtpsv(uint f, int n, double *m, double *x, int incx); void blas·dger(int nrow, int ncol, double a, double *x, int incx, double *y, int incy, double *m, int incm); void blas·dsyr(uint flag, int n, double a, double *x, int incx, double *m, int incm); void blas·dspr(uint flag, int n, double a, double *x, int incx, double *m); // level 3 void blas·dgemm(uint tr1, uint tr2, int n1, int n2, int n3, double a, double *m1, int inc1, double *m2, int inc2, double b, double *m3, int inc3); void blas·dtrmm(uint f, int nrow, int ncol, double a, double *m1, double *m2); void blas·dtrsm(uint f, int nrow, int ncol, double a, double *m1, double *m2); /* * TODO: Complex */