double RbStatistics::DecomposedInverseWishart::lnPdf(double nu, const MatrixReal &r) { size_t k = r.getDim(); if ( r.isPositive() == false ) { return RbConstants::Double::neginf; } double lnP = (0.5 * (k - 1.0) * (nu - 1.0) - 1.0); lnP += r.getLogDet(); MatrixReal submatrix(k-1); for (size_t i=0; i<k; i++) { size_t ai = 0; for (size_t a=0; a<k; a++) { if (a != i) { size_t bi = 0; for (size_t b=0; b<k; b++) { if ( b != i ) { submatrix[ai][bi] = r[a][b]; bi++; } } ai++; } } lnP += submatrix.getLogDet(); std::cout << "logdet=" << submatrix.getLogDet() << std::endl; } return lnP; }