MUQ  0.4.3
InverseGamma.h
Go to the documentation of this file.
1 #ifndef INVERSEGAMMA_H_
2 #define INVERSEGAMMA_H_
3 
5 
6 namespace muq {
7  namespace Modeling {
8 
17  class InverseGamma : public Distribution {
18  public:
19 
20  InverseGamma(double alphaIn,
21  double betaIn);
22 
23  InverseGamma(Eigen::VectorXd const& alphaIn,
24  Eigen::VectorXd const& betaIn);
25 
26 
27  virtual ~InverseGamma() = default;
28 
29 
30  const Eigen::VectorXd alpha;
31  const Eigen::VectorXd beta;
32 
33  private:
34 
35  static double ComputeConstant(Eigen::VectorXd const& alphaIn,
36  Eigen::VectorXd const& betaIn);
37 
38  const double logConst; // sum( log( beta^alpha / Gamma(alpha) ) )
39 
40  virtual double LogDensityImpl(ref_vector<Eigen::VectorXd> const& inputs) override;
41 
43  virtual Eigen::VectorXd SampleImpl(ref_vector<Eigen::VectorXd> const& inputs) override;
44 
45  };
46  } // namespace Modeling
47 } // namespace muq
48 
49 #endif
virtual ~InverseGamma()=default
const Eigen::VectorXd beta
Definition: InverseGamma.h:31
const Eigen::VectorXd alpha
Definition: InverseGamma.h:30
static double ComputeConstant(Eigen::VectorXd const &alphaIn, Eigen::VectorXd const &betaIn)
InverseGamma(double alphaIn, double betaIn)
virtual double LogDensityImpl(ref_vector< Eigen::VectorXd > const &inputs) override
Implement the log-density.
virtual Eigen::VectorXd SampleImpl(ref_vector< Eigen::VectorXd > const &inputs) override
Sample the distribution.
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...
Definition: WorkPiece.h:37