#ifndef DCAT_H_ #define DCAT_H_ #include /** * @short Categorical distribution *
 * R ~ dcat(p[])
 * f(r|p[]) = p[r] ; r in 1:dim(p)
 * 
*/ class DCat : public DistDiscrete { public: DCat(); ~DCat(); double d(double x, std::vector const ¶meters, bool give_log) const; double p(double x, std::vector const ¶meters, bool lower, bool give_log) const; double q(double p, std::vector const ¶meters, bool lower, bool log_p) const; double r(std::vector const ¶meters) const; double l(std::vector const ¶meters) const; double u(std::vector const ¶meters) const; double mean(std::vector const ¶meters) const; double var(std::vector const ¶meters) const; /** * Checks that p is a vector of length at least 2 */ bool checkParameterDim(std::vector const ¶meters) const; /** * Checks that all elements of p lie in the interval (0,1) * and sum to 1 */ bool checkParameterValue(std::vector const ¶meters) const; }; #endif /* DCAT_H_ */