diff options
Diffstat (limited to 'redist/dclhelpers.h')
-rw-r--r-- | redist/dclhelpers.h | 91 |
1 files changed, 38 insertions, 53 deletions
diff --git a/redist/dclhelpers.h b/redist/dclhelpers.h index b4acec8..00acdac 100644 --- a/redist/dclhelpers.h +++ b/redist/dclhelpers.h @@ -3,87 +3,72 @@ #define DCL_FLOAT FLT -//Use this macro to safely -#define DMS( m ) ((m)[0]), (sizeof((m)[0])/sizeof((m)[0][0])) +// Use this macro to safely +#define DMS(m) ((m)[0]), (sizeof((m)[0]) / sizeof((m)[0][0])) /* Prints matrix A of size[n][m] */ -void dclPrint( const DCL_FLOAT * A, int Ac, int n, int m ); +void dclPrint(const DCL_FLOAT *A, int Ac, int n, int m); /* Returns the identity matrix */ -void dclIdentity( DCL_FLOAT * I, int Ic, int m, int n ); +void dclIdentity(DCL_FLOAT *I, int Ic, int m, int n); /* Returns the zero matrix */ -void dclZero( DCL_FLOAT * I, int Ic, int m, int n ); +void dclZero(DCL_FLOAT *I, int Ic, int m, int n); /* R = Transpose(A) - A is (n by m) - R is (m by n) */ -void dclTransp( DCL_FLOAT * R, int Rc, const DCL_FLOAT * A, int Ac, int n, int m ); + A is (n by m) + R is (m by n) */ +void dclTransp(DCL_FLOAT *R, int Rc, const DCL_FLOAT *A, int Ac, int n, int m); /* Calculate L,U of a matrix A with pivot table; the pivot table is output. */ -void dclLU( DCL_FLOAT * L, int Lc, DCL_FLOAT * U, int Uc, const DCL_FLOAT * A, int Ac, int * Piv, int n ); +void dclLU(DCL_FLOAT *L, int Lc, DCL_FLOAT *U, int Uc, const DCL_FLOAT *A, int Ac, int *Piv, int n); /* Pivots a matrix to a different matrix - R = Pivot(A) given table 'Piv' - A and R are (n by m) */ -void dclPivot( DCL_FLOAT * R, int Rc, const DCL_FLOAT * A, int Ac, int * Piv, int n, int m ); + R = Pivot(A) given table 'Piv' + A and R are (n by m) */ +void dclPivot(DCL_FLOAT *R, int Rc, const DCL_FLOAT *A, int Ac, int *Piv, int n, int m); /* Solve LX=B for matrix X and B - L is n by n (lower triangular) - B is n by m */ -void dclLSub( DCL_FLOAT * X, int Xc, const DCL_FLOAT * L, int Lc, const DCL_FLOAT * B, int Bc, int n, int m ); + L is n by n (lower triangular) + B is n by m */ +void dclLSub(DCL_FLOAT *X, int Xc, const DCL_FLOAT *L, int Lc, const DCL_FLOAT *B, int Bc, int n, int m); /* Solve UX=B for matrix X and B - U is n by n (upper triangular) - B is n by m */ -void dclUSub( DCL_FLOAT * X, int Xc, const DCL_FLOAT * U, int Uc, const DCL_FLOAT * B, int Bc, int n, int m ); + U is n by n (upper triangular) + B is n by m */ +void dclUSub(DCL_FLOAT *X, int Xc, const DCL_FLOAT *U, int Uc, const DCL_FLOAT *B, int Bc, int n, int m); /* Inverts a matrix X (n by n) using the method of LU decomposition */ -void dclInv( DCL_FLOAT * Ainv, int Ainvc, const DCL_FLOAT * A, int Ac, int n ); +void dclInv(DCL_FLOAT *Ainv, int Ainvc, const DCL_FLOAT *A, int Ac, int n); /* Matrix Multiply R = A * B - A (n by m) - B (m by p) - R (n by p) */ -void dclMul( DCL_FLOAT * R, int Rc, const DCL_FLOAT * A, int Ac, const DCL_FLOAT * B, int Bc, int n, int m, int p ); + A (n by m) + B (m by p) + R (n by p) */ +void dclMul(DCL_FLOAT *R, int Rc, const DCL_FLOAT *A, int Ac, const DCL_FLOAT *B, int Bc, int n, int m, int p); /* Matrix Multiply R = A * B + C - A (n by m) - B (m by p) - C (n by p) - R (n by p) */ -void dclMulAdd( DCL_FLOAT * R, int Rc, const DCL_FLOAT * A, int Ac, const DCL_FLOAT * B, int Bc, const DCL_FLOAT * C, int Cc, int n, int m, int p ); + A (n by m) + B (m by p) + C (n by p) + R (n by p) */ +void dclMulAdd(DCL_FLOAT *R, int Rc, const DCL_FLOAT *A, int Ac, const DCL_FLOAT *B, int Bc, const DCL_FLOAT *C, int Cc, + int n, int m, int p); /* Matrix Multiply R = alpha * A * B + beta * C - A (n by m) - B (m by p) - C (n by p) - R (n by p) */ -void dclGMulAdd( DCL_FLOAT * R, int Rc, const DCL_FLOAT * A, int Ac, const DCL_FLOAT * B, int Bc, const DCL_FLOAT * C, int Cc, DCL_FLOAT alpha, DCL_FLOAT beta, int n, int m, int p ); - + A (n by m) + B (m by p) + C (n by p) + R (n by p) */ +void dclGMulAdd(DCL_FLOAT *R, int Rc, const DCL_FLOAT *A, int Ac, const DCL_FLOAT *B, int Bc, const DCL_FLOAT *C, + int Cc, DCL_FLOAT alpha, DCL_FLOAT beta, int n, int m, int p); /******************************** * Auxiliary functionality in C * ********************************/ -//Matches dgemm from lapack. -void dcldgemm( - char transA, - char transB, - int m, - int n, - int k, - DCL_FLOAT alpha, - const DCL_FLOAT* A, - int Ac, - const DCL_FLOAT* B, - int Bc, - DCL_FLOAT beta, - DCL_FLOAT * C, - int Cc - ); - - +// Matches dgemm from lapack. +void dcldgemm(char transA, char transB, int m, int n, int k, DCL_FLOAT alpha, const DCL_FLOAT *A, int Ac, + const DCL_FLOAT *B, int Bc, DCL_FLOAT beta, DCL_FLOAT *C, int Cc); #endif - |