Skip to content

Commit 12ddf6b

Browse files
committed
check for nan before arma::chol()
1 parent d0f26d1 commit 12ddf6b

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

src/equations_qml.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,14 @@ arma::vec logNormalPdf(const arma::vec& x, const arma::vec& mu, const arma::mat&
188188
result(i) += -0.5 * log_2pi - std::log(sigma(i, j)) - 0.5 * (diff * diff) / sigma_sq;
189189
}
190190
}
191+
191192
return result;
192193
}
193194

194195

195196
// [[Rcpp::export]]
196197
arma::vec dnormCpp(const arma::vec& x, const arma::vec& mu, const arma::vec& sigma) {
197-
return logNormalPdf(x, mu, sigma);
198+
return logNormalPdf(x, mu, sigma);
198199
}
199200

200201

src/mvnorm.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,17 +73,15 @@ double totalDmvnWeightedCpp(const arma::vec& mu,
7373
double tgamma,
7474
int n,
7575
int d) {
76+
if (!sigma.is_finite()) return NA_REAL;
77+
7678
if (arma::any(arma::diagvec(sigma) <= 0)) return NA_REAL;
7779

7880
arma::mat L;
79-
bool success = arma::chol(L, sigma, "lower");
80-
81-
if (!success) return NA_REAL;
81+
if (!arma::chol(L, sigma, "lower")) return NA_REAL;
8282

8383
double log_det_sigma = 2.0 * arma::sum(log(L.diag()));
84-
8584
arma::mat sigma_inv = arma::inv_sympd(sigma);
86-
8785
if (!sigma_inv.is_finite()) return NA_REAL;
8886

8987
arma::vec diff = nu - mu;

0 commit comments

Comments
 (0)