#include #include #include #include using std::vector; static inline double MU(vector const ¶meters) { return *parameters[0]->value(); } static inline double SCALE(vector const ¶meters) { return 1/(*parameters[1]->value()); } static inline double TAU(vector const ¶meters) { return *parameters[1]->value(); } DLogis::DLogis() : DistReal("dlogis", 2, DIST_UNBOUNDED, true) {} DLogis::~DLogis() {} bool DLogis::checkParameterValue (vector const &par) const { return (TAU(par) > 0); } double DLogis::d(double x, vector const &par, bool give_log) const { return dlogis(x, MU(par), SCALE(par), give_log); } double DLogis::p(double q, vector const &par, bool lower, bool give_log) const { return plogis(q, MU(par), SCALE(par), lower, give_log); } double DLogis::q(double p, vector const &par, bool lower, bool log_p) const { return qlogis(p, MU(par), SCALE(par), lower, log_p); } double DLogis::r(vector const &par) const { return rlogis(MU(par), SCALE(par)); } double DLogis::mean(std::vector const &par) const { return MU(par); } double DLogis::var(std::vector const &par) const { const static double V0 = M_PI * M_PI / 3; return SCALE(par) * SCALE(par) * V0; }