#ifndef _SCTL_MAT_UTILS_ #define _SCTL_MAT_UTILS_ #include namespace SCTL_NAMESPACE { namespace mat { template void gemm(char TransA, char TransB, int M, int N, int K, ValueType alpha, Iterator A, int lda, Iterator B, int ldb, ValueType beta, Iterator C, int ldc); template void cublasgemm(char TransA, char TransB, int M, int N, int K, ValueType alpha, Iterator A, int lda, Iterator B, int ldb, ValueType beta, Iterator C, int ldc); template void svd(char *JOBU, char *JOBVT, int *M, int *N, Iterator A, int *LDA, Iterator S, Iterator U, int *LDU, Iterator VT, int *LDVT, Iterator 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(Iterator M, int n1, int n2, ValueType eps, Iterator M_); } // end namespace mat } // end namespace SCTL_NAMESPACE #include SCTL_INCLUDE(mat_utils.txx) #endif //_SCTL_MAT_UTILS_