1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#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);
int 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
int 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);
int 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
int 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
*/
|