#include #include #include #include using std::vector; static inline double LOWER (vector const &par) { return *par[0]->value(); } static inline double UPPER (vector const &par) { return *par[1]->value(); } DUnif::DUnif() : DistReal("dunif", 2, DIST_UNBOUNDED, false) {} DUnif::~DUnif() {} bool DUnif::checkParameterValue (vector const &par) const { return (LOWER(par) < UPPER(par)); } double DUnif::d(double x, vector const &par, bool give_log) const { return dunif(x, LOWER(par), UPPER(par), give_log); } double DUnif::p(double q, vector const &par, bool lower, bool log_p) const { return punif(q, LOWER(par), UPPER(par), lower, log_p); } double DUnif::q(double p, vector const &par, bool lower, bool log_p) const { return qunif(p, LOWER(par), UPPER(par), lower, log_p); } double DUnif::r(vector const &par) const { return runif(LOWER(par), UPPER(par)); } double DUnif::mean(std::vector const &par) const { return (LOWER(par) + UPPER(par))/2; } double DUnif::var(std::vector const &par) const { return (LOWER(par) - UPPER(par)) * (LOWER(par) - UPPER(par)) /12; } double DUnif::l(vector const &par) const { return LOWER(par); } double DUnif::u(vector const &par) const { return UPPER(par); }