#ifndef DMULTI_H_ #define DMULTI_H_ #include /** *
 * X[] ~ dmulti(p[], N)
 * f(x | p, N) = prod (p^x) ; sum(x) = N
 * 
* @short Multinomial distribution */ class DMulti : public Distribution { public: DMulti(); ~DMulti(); double logLikelihood(SArray const &x, std::vector const ¶meters) const; void randomSample(SArray &x, std::vector const ¶meters) const; /** * Checks that elements of p lie in range (0,1) and * and sum to 1. Checks that N >= 1 */ bool checkParameterValue(std::vector const ¶meters) const; /** * Checks that p is a vector and N is a discrete-valued scalar */ bool checkParameterDim(std::vector const ¶meters) const; Index const &dim(std::vector const ¶meters) const; unsigned long df(std::vector const ¶meters) const; double lowerSupport(unsigned long i, std::vector const ¶meters) const; double upperSupport(unsigned long i, std::vector const ¶meters) const; }; #endif /* DMULTI_H_ */