MUQ  0.4.3
Gamma.h
Go to the documentation of this file.
1 #ifndef GAMMA_H_
2 #define GAMMA_H_
3 
5 
6 namespace muq {
7  namespace Modeling {
8 
18  class Gamma : public Distribution {
19  public:
20 
21  Gamma(double alphaIn,
22  double betaIn);
23 
24  Gamma(Eigen::VectorXd const& alphaIn,
25  Eigen::VectorXd const& betaIn);
26 
27  virtual ~Gamma() = default;
28 
32  static std::shared_ptr<Gamma> FromMoments(Eigen::VectorXd const& mean,
33  Eigen::VectorXd const& var);
34 
35  const Eigen::VectorXd alpha;
36  const Eigen::VectorXd beta;
37 
38  private:
39 
40  static double ComputeConstant(Eigen::VectorXd const& alphaIn,
41  Eigen::VectorXd const& betaIn);
42 
43  const double logConst; // sum( log( beta^alpha / Gamma(alpha) ) )
44 
45  virtual double LogDensityImpl(ref_vector<Eigen::VectorXd> const& inputs) override;
46 
47  virtual Eigen::VectorXd GradLogDensity(unsigned int wrt,
48  ref_vector<Eigen::VectorXd> const& inputs) override;
49 
50  virtual Eigen::VectorXd ApplyLogDensityHessian(unsigned int const inWrt1,
51  unsigned int const inWrt2,
52  ref_vector<Eigen::VectorXd> const& input,
53  Eigen::VectorXd const& vec) override;
54 
56  virtual Eigen::VectorXd SampleImpl(ref_vector<Eigen::VectorXd> const& inputs) override;
57 
58  };
59  } // namespace Modeling
60 } // namespace muq
61 
62 #endif
const Eigen::VectorXd beta
Definition: Gamma.h:36
virtual Eigen::VectorXd SampleImpl(ref_vector< Eigen::VectorXd > const &inputs) override
Sample the distribution.
Definition: Gamma.cpp:40
virtual double LogDensityImpl(ref_vector< Eigen::VectorXd > const &inputs) override
Implement the log-density.
Definition: Gamma.cpp:29
virtual ~Gamma()=default
virtual Eigen::VectorXd ApplyLogDensityHessian(unsigned int const inWrt1, unsigned int const inWrt2, ref_vector< Eigen::VectorXd > const &input, Eigen::VectorXd const &vec) override
Definition: Gamma.cpp:66
const Eigen::VectorXd alpha
Definition: Gamma.h:35
static double ComputeConstant(Eigen::VectorXd const &alphaIn, Eigen::VectorXd const &betaIn)
Definition: Gamma.cpp:19
const double logConst
Definition: Gamma.h:43
virtual Eigen::VectorXd GradLogDensity(unsigned int wrt, ref_vector< Eigen::VectorXd > const &inputs) override
Definition: Gamma.cpp:49
static std::shared_ptr< Gamma > FromMoments(Eigen::VectorXd const &mean, Eigen::VectorXd const &var)
Definition: Gamma.cpp:87
Gamma(double alphaIn, double betaIn)
Definition: Gamma.cpp:15
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...
Definition: WorkPiece.h:37