00001 #if !defined (MATH_UTILS_H)
00002 #define MATH_UTILS_H
00003
00004
00005
00006 extern "C"{
00007
00008 int dsyev_(char* jobz, char* uplo, int *n, double *a,
00009 int *lda, double *w, double *work, int *lwork,
00010 int *info);
00011
00012 int dsymm_(char* side, char* uplo, int* m, int *n, double *alpha,
00013 double* A, int *lda, double *B, int *ldb, double *beta,
00014 double *C, int *ldc);
00015
00016 int dpotrf_(char* uplo, int* n, double* a, int* lda, int* info);
00017
00018 }
00019
00020
00021
00022 namespace utils
00023 {
00024 void get_eigensystem(double *eigenvalues, double* matrix,
00025 double* eigenvectors, int n);
00026 double* get_cholesky(double* matrix, int n) ;
00027 void mat_sqrt(double *A, int n);
00028
00029 void mat_mult(double* A,double* B,double* C,int n);
00030 inline double max(double a,double b){return (b<a)?a:b;}
00031
00032 }
00033
00034 #endif