Моя неточная многомерная нормальная плотность

Есть ли что-то явно ужасное с этой функцией? Время от времени оно будет равняться 0,0, тогда как вместо этого должно получаться очень маленькое число.

#include <Eigen/Core>

typedef Eigen::Matrix< long double, Eigen::Dynamic, 1              > Vec;
typedef Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > Mat;

long double evalMultivNorm(const Vec &x, const Vec &meanVec, const Mat &covMat)
{
    long double quadform  = (x - meanVec).transpose() * covMat.inverse() * (x-meanVec);
    long double normConst = pow(inv_sqrt_2pi, covMat.rows()) * pow(covMat.determinant(), -.5);
    return normConst * exp(-.5* quadform);
}

0 ответов

Другие вопросы по тегам