#ifndef DWISH_H_
#define DWISH_H_
#include <distributions/Distribution.h>
/**
* <pre>
* x[] ~ dwish(R[,], k)
* </pre>
* @short Wishart distribution
*/
class DWish : public Distribution {
public:
DWish();
~DWish();
double logLikelihood(SArray const &x,
std::vector<SArray const *> const ¶meters) const;
void randomSample(SArray &x,
std::vector<SArray const *> const ¶meters) const;
static void randomSample(double *x, long length,
double const *R, double k, int nrow);
/**
* Checks that R is a square matrix and k is a scalar
*/
bool checkParameterDim (std::vector<SArray const *> const ¶meters) const;
/**
* Checks that R is symmetric and k >= nrow(R). There is
* currently no check that R is positive definite
*/
bool checkParameterValue (std::vector<SArray const *> const ¶meters) const;
Index const &dim(std::vector<SArray const *> const ¶meters) const;
unsigned long df(std::vector<SArray const *> const ¶meters) const;
double lowerSupport(unsigned long i,
std::vector<SArray const *> const ¶meters) const;
double upperSupport(unsigned long i,
std::vector<SArray const *> const ¶meters) const;
};
#endif /* DWISH_H_ */
syntax highlighted by Code2HTML, v. 0.9.1