Path: blob/main/biology/gcta/files/patch-mkl.cpp
16146 views
--- mkl.cpp.orig 2020-04-15 00:54:40 UTC1+++ mkl.cpp2@@ -357,7 +357,7 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix3// MKL's Cholesky decomposition4int info = 0, int_n = (int) n;5char uplo = 'L';6- dpotrf(&uplo, &int_n, Vi_mkl, &int_n, &info);7+ dpotrf_(&uplo, &int_n, Vi_mkl, &int_n, &info);8//spotrf( &uplo, &n, Vi_mkl, &n, &info );9if (info < 0) throw ("Error: Cholesky decomposition failed. Invalid values found in the matrix.\n");10else if (info > 0) return false;11@@ -369,7 +369,7 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix12}1314// Calcualte V inverse15- dpotri(&uplo, &int_n, Vi_mkl, &int_n, &info);16+ dpotri_(&uplo, &int_n, Vi_mkl, &int_n, &info);17//spotri( &uplo, &n, Vi_mkl, &n, &info );18if (info < 0) throw ("Error: invalid values found in the varaince-covaraince (V) matrix.\n");19else if (info > 0) return false;20@@ -405,7 +405,7 @@ bool gcta::comput_inverse_logdet_LU_mkl(eigenMatrix &V21int LWORK = N*N;22double *WORK = new double[n * n];23int INFO;24- dgetrf(&N, &N, Vi_mkl, &N, IPIV, &INFO);25+ dgetrf_(&N, &N, Vi_mkl, &N, IPIV, &INFO);26if (INFO < 0) throw ("Error: LU decomposition failed. Invalid values found in the matrix.\n");27else if (INFO > 0) {28delete[] Vi_mkl;29@@ -418,7 +418,7 @@ bool gcta::comput_inverse_logdet_LU_mkl(eigenMatrix &V30}3132// Calcualte V inverse33- dgetri(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);34+ dgetri_(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);35if (INFO < 0) throw ("Error: invalid values found in the varaince-covaraince (V) matrix.\n");36else if (INFO > 0) return false;37else {38@@ -453,7 +453,7 @@ bool gcta::comput_inverse_logdet_LU_mkl_array(int n, f39int LWORK = N*N;40double *WORK = new double[n * n];41int INFO;42- dgetrf(&N, &N, Vi_mkl, &N, IPIV, &INFO);43+ dgetrf_(&N, &N, Vi_mkl, &N, IPIV, &INFO);44if (INFO < 0) throw ("Error: LU decomposition failed. Invalid values found in the matrix.\n");45else if (INFO > 0) {46delete[] Vi_mkl;47@@ -467,7 +467,7 @@ bool gcta::comput_inverse_logdet_LU_mkl_array(int n, f48}4950// Calcualte V inverse51- dgetri(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);52+ dgetri_(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);53if (INFO < 0) throw ("Error: invalid values found in the varaince-covaraince (V) matrix.\n");54else if (INFO > 0) return (false); // Vi.diagonal()=Vi.diagonal().array()+Vi.diagonal().mean()*1e-3;55else {565758