#include #include #include #include using std::vector; static inline double DF (vector const &par) { return *par[0]->value(); } DChisqr::DChisqr() : DistReal("dchisqr", 1, DIST_POSITIVE, true) {} DChisqr::~DChisqr() {} bool DChisqr::checkParameterValue(vector const &par) const { return (DF(par) > 0); } double DChisqr::d(double x, vector const &par, bool give_log) const { return dchisq(x, DF(par), give_log); } double DChisqr::p(double q, vector const &par, bool lower, bool log_p) const { return pchisq(q, DF(par), lower, log_p); } double DChisqr::q(double p, vector const &par, bool lower, bool log_p) const { return qchisq(p, DF(par), lower, log_p); } double DChisqr::r(vector const &par) const { return rchisq(DF(par)); } double DChisqr::mean(std::vector const &par) const { return DF(par); } double DChisqr::var(std::vector const &par) const { return 2 * DF(par); }