about summary refs log tree commit diff
path: root/src/mvlmm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mvlmm.cpp')
-rw-r--r--src/mvlmm.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mvlmm.cpp b/src/mvlmm.cpp
index 13325ab..d877302 100644
--- a/src/mvlmm.cpp
+++ b/src/mvlmm.cpp
@@ -41,6 +41,7 @@
 #include "gzstream.h"
 #include "gemma_io.h"
 #include "lapack.h"
+#include "mathfunc.h"
 #include "lmm.h"
 #include "mvlmm.h"
 
@@ -233,7 +234,7 @@ double EigenProc(const gsl_matrix *V_g, const gsl_matrix *V_e, gsl_vector *D_l,
     if (d <= 0) {
       continue;
     }
-    logdet_Ve += log(d);
+    logdet_Ve += safe_log(d);
 
     gsl_vector_view U_col = gsl_matrix_column(U_l, i);
     d = sqrt(d);
@@ -563,7 +564,7 @@ double MphCalcLogL(const gsl_vector *eval, const gsl_vector *xHiy,
       dl = gsl_vector_get(D_l, i);
       d = delta * dl + 1.0;
 
-      logl += y * y / d + log(d);
+      logl += y * y / d + safe_log(d);
     }
   }
 
@@ -629,10 +630,10 @@ double MphEM(const char func_name, const size_t max_iter, const double max_prec,
   // Calculate the constant for logl.
   if (func_name == 'R' || func_name == 'r') {
     logl_const =
-        -0.5 * (double)(n_size - c_size) * (double)d_size * log(2.0 * M_PI) +
+        -0.5 * (double)(n_size - c_size) * (double)d_size * safe_log(2.0 * M_PI) +
         0.5 * (double)d_size * LULndet(XXt);
   } else {
-    logl_const = -0.5 * (double)n_size * (double)d_size * log(2.0 * M_PI);
+    logl_const = -0.5 * (double)n_size * (double)d_size * safe_log(2.0 * M_PI);
   }
 
   // Start EM.
@@ -958,7 +959,7 @@ void CalcHiQi(const gsl_vector *eval, const gsl_matrix *X,
       gsl_vector_view mat_row = gsl_matrix_row(mat_dd, i);
       gsl_vector_scale(&mat_row.vector, 1.0 / d); // @@
 
-      logdet_H += log(d);
+      logdet_H += safe_log(d);
     }
 
     gsl_matrix_view Hi_k =
@@ -2639,10 +2640,10 @@ double MphNR(const char func_name, const size_t max_iter, const double max_prec,
   // Calculate the constant for logl.
   if (func_name == 'R' || func_name == 'r') {
     logl_const =
-        -0.5 * (double)(n_size - c_size) * (double)d_size * log(2.0 * M_PI) +
+        -0.5 * (double)(n_size - c_size) * (double)d_size * safe_log(2.0 * M_PI) +
         0.5 * (double)d_size * LULndet(XXt);
   } else {
-    logl_const = -0.5 * (double)n_size * (double)d_size * log(2.0 * M_PI);
+    logl_const = -0.5 * (double)n_size * (double)d_size * safe_log(2.0 * M_PI);
   }
 
   // Optimization iterations.