about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPjotr Prins2018-08-25 10:18:41 +0000
committerPjotr Prins2018-08-25 10:18:41 +0000
commita24297bb1cb686d3630db3a0da8fa8a2079ad178 (patch)
tree53fb715e2b76f3a761eae06a962a2355b2c62b87
parent4d1a44cb90affbe9c73a27767bae4a4b69c72402 (diff)
downloadpangemma-a24297bb1cb686d3630db3a0da8fa8a2079ad178.tar.gz
Added remarks
-rw-r--r--src/gemma.cpp4
-rw-r--r--src/lapack.cpp8
2 files changed, 7 insertions, 5 deletions
diff --git a/src/gemma.cpp b/src/gemma.cpp
index 78633e8..6c04c8d 100644
--- a/src/gemma.cpp
+++ b/src/gemma.cpp
@@ -2763,7 +2763,7 @@ void GEMMA::BatchRun(PARAM &cPar) {
           LMM cLmm;
           cLmm.CopyFromParam(cPar);
 
-          if (is_check_mode()) disable_segfpe(); // disable fast NaN checking for now
+          // if (is_check_mode()) disable_segfpe(); // disable fast NaN checking for now
 
           gsl_vector_view Y_col = gsl_matrix_column(Y, 0);
           gsl_vector_view UtY_col = gsl_matrix_column(UtY, 0);
@@ -2796,7 +2796,7 @@ void GEMMA::BatchRun(PARAM &cPar) {
           MVLMM cMvlmm;
           cMvlmm.CopyFromParam(cPar);
 
-          if (is_check_mode()) disable_segfpe(); // disable fast NaN checking
+          // if (is_check_mode()) disable_segfpe(); // disable fast NaN checking
 
           if (!cPar.file_bfile.empty()) {
             if (cPar.file_gxe.empty()) {
diff --git a/src/lapack.cpp b/src/lapack.cpp
index b309a1b..0fc2de4 100644
--- a/src/lapack.cpp
+++ b/src/lapack.cpp
@@ -193,7 +193,9 @@ void lapack_eigen_symmv(gsl_matrix *A, gsl_vector *eval, gsl_matrix *evec,
     double WORK_temp[1];
     int IWORK_temp[1];
 
-    if (is_check_mode()) disable_segfpe(); // disable fast NaN checking for now
+    // disable fast NaN checking for now - dsyevr throws NaN errors,
+    // but fixes them (apparently)
+    if (is_check_mode()) disable_segfpe();
 
     // DSYEVR - computes selected eigenvalues and, optionally,
     // eigenvectors of a real symmetric matrix
@@ -208,8 +210,8 @@ void lapack_eigen_symmv(gsl_matrix *A, gsl_vector *eval, gsl_matrix *evec,
 
     if (INFO != 0) cerr << "ERROR: value of INFO is " << INFO;
     enforce_msg(INFO == 0, "lapack_eigen_symmv failed");
-    LWORK = (int)WORK_temp[0];
-    LIWORK = (int)IWORK_temp[0];
+    LWORK = (int)WORK_temp[0];    // The dimension of the array work.
+    LIWORK = (int)IWORK_temp[0];  // The dimension of the array iwork, lwork≥ max(1, 10n).
 
     double *WORK = new double[LWORK];
     int *IWORK = new int[LIWORK];