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;
}