mat_utils.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. * \file mat_utils.hpp
  3. * \author Dhairya Malhotra, dhairya.malhotra@gmail.com
  4. * \date 2-11-2011
  5. * \brief This file contains BLAS and LAPACK wrapper functions.
  6. */
  7. #ifndef _PVFMM_MAT_UTILS_
  8. #define _PVFMM_MAT_UTILS_
  9. #include <cstdlib>
  10. namespace pvfmm{
  11. namespace mat{
  12. void gemm(char TransA, char TransB, int M, int N, int K, float alpha, float *A, int lda, float *B, int ldb, float beta, float *C, int ldc);
  13. void gemm(char TransA, char TransB, int M, int N, int K, double alpha, double *A, int lda, double *B, int ldb, double beta, double *C, int ldc);
  14. void svd(char *JOBU, char *JOBVT, int *M, int *N, float *A, int *LDA,
  15. float *S, float *U, int *LDU, float *VT, int *LDVT, float *WORK, int *LWORK,
  16. int *INFO);
  17. void svd(char *JOBU, char *JOBVT, int *M, int *N, double *A, int *LDA,
  18. double *S, double *U, int *LDU, double *VT, int *LDVT, double *WORK, int *LWORK,
  19. int *INFO);
  20. /**
  21. * \brief Computes the pseudo inverse of matrix M(n1xn2) (in row major form)
  22. * and returns the output M_(n2xn1).
  23. */
  24. template <class T>
  25. void pinv(T* M, int n1, int n2, T eps, T* M_);
  26. }//end namespace
  27. }//end namespace
  28. #include <mat_utils.txx>
  29. #endif //_PVFMM_MAT_UTILS_