#ifndef _PVFMM_MAT_UTILS_ #define _PVFMM_MAT_UTILS_ #include namespace pvfmm { namespace mat { template void gemm(char TransA, char TransB, int M, int N, int K, T alpha, T *A, int lda, T *B, int ldb, T beta, T *C, int ldc); template void cublasgemm(char TransA, char TransB, int M, int N, int K, T alpha, T *A, int lda, T *B, int ldb, T beta, T *C, int ldc); template void svd(char *JOBU, char *JOBVT, int *M, int *N, T *A, int *LDA, T *S, T *U, int *LDU, T *VT, int *LDVT, T *WORK, int *LWORK, int *INFO); /** * \brief Computes the pseudo inverse of matrix M(n1xn2) (in row major form) * and returns the output M_(n2xn1). */ template void pinv(T *M, int n1, int n2, T eps, T *M_); } // end namespace mat } // end namespace pvfmm #include #endif //_PVFMM_MAT_UTILS_