double logpdf(const TruncNormal &d, const Eigen::VectorXd &x) { if (insupport(d, x)) { return logpdf(*static_cast<const Normal *>(&d), x); } else { return -std::numeric_limits<double>::infinity(); } }
double NormalDistribution<1>::pdf(const RandomVariable& value) const { return exp(logpdf(value)); }
double nlogpdf(const Distribution &d, const Eigen::VectorXd &x) { return -logpdf(d, x); }
double pdf(const Distribution &d, const Eigen::VectorXd &x) { return std::exp(logpdf(d, x)); }