29 virtual double eval(
const Eigen::VectorXd &par)
const = 0;
30 virtual double evalGradient(
const Eigen::VectorXd &par,
const size_t &i)
const = 0;
31 virtual double evalHessian(
const Eigen::VectorXd &par,
const size_t &i,
const size_t &j)
const = 0;
62 double eval(
const Eigen::VectorXd &par)
const {
66 double evalGradient(
const Eigen::VectorXd &par,
const size_t &i)
const {
70 double evalHessian(
const Eigen::VectorXd &par,
const size_t &i,
const size_t &j)
const {
74 static std::shared_ptr<Prior>
make(std::shared_ptr<Prior> p1, std::shared_ptr<Prior> p2) {
75 return std::make_shared<Product>(p1, p2);
102 double eval(
const Eigen::VectorXd &par)
const {
106 double evalGradient(
const Eigen::VectorXd &par,
const size_t &i)
const {
110 double evalHessian(
const Eigen::VectorXd &par,
const size_t &i,
const size_t &j)
const {
114 static std::shared_ptr<Prior>
make() {
115 return std::make_shared<Uniform>();
134template <
typename DistType>
157 double eval(
const Eigen::VectorXd &par)
const override {
160 throw std::out_of_range(
"Parameter index out of bounds in FromDistribution::eval");
165 double evalGradient(
const Eigen::VectorXd &par,
const size_t &i)
const override {
173 double evalHessian(
const Eigen::VectorXd &par,
const size_t &i,
const size_t &j)
const override {
182 static std::shared_ptr<Prior>
make(
const DistType& dist,
size_t paramIndex) {
183 return std::make_shared<FromDistribution<DistType>>(dist, paramIndex);
195template <
typename DistType>
196std::shared_ptr<Prior>
make(
const DistType& dist,
size_t paramIndex) {
207std::shared_ptr<Prior>
operator*(std::shared_ptr<Prior> p1, std::shared_ptr<Prior> p2);
Adapts a univariate probability distribution to act as a prior on a single coordinate.
Definition prior++.h:135
FromDistribution(const FromDistribution &)=default
FromDistribution & operator=(const FromDistribution &)=default
FromDistribution & operator=(FromDistribution &&)=default
double evalGradient(const Eigen::VectorXd &par, const size_t &i) const override
Definition prior++.h:165
FromDistribution(const DistType &dist, size_t paramIndex)
Constructs a Prior from a Univariate Distribution.
Definition prior++.h:154
DistType dist_
Underlying univariate distribution.
Definition prior++.h:137
static std::shared_ptr< Prior > make(const DistType &dist, size_t paramIndex)
Definition prior++.h:182
double eval(const Eigen::VectorXd &par) const override
Definition prior++.h:157
double evalHessian(const Eigen::VectorXd &par, const size_t &i, const size_t &j) const override
Definition prior++.h:173
FromDistribution(FromDistribution &&)=default
size_t paramIndex_
Parameter vector coordinate index.
Definition prior++.h:138
FromDistribution()=delete
Base class for prior probability distributions.
Definition prior++.h:26
virtual double eval(const Eigen::VectorXd &par) const =0
virtual double evalHessian(const Eigen::VectorXd &par, const size_t &i, const size_t &j) const =0
virtual double evalGradient(const Eigen::VectorXd &par, const size_t &i) const =0
Represents the product (sum of logs) of two independent prior distributions.
Definition prior++.h:48
double eval(const Eigen::VectorXd &par) const
Definition prior++.h:62
double evalHessian(const Eigen::VectorXd &par, const size_t &i, const size_t &j) const
Definition prior++.h:70
Product(std::shared_ptr< Prior > p1, std::shared_ptr< Prior > p2)
Definition prior++.h:60
Product(Product &&)=default
std::shared_ptr< Prior > rightPrior_
Right factor independent prior.
Definition prior++.h:51
Product(const Product &)=default
Product & operator=(const Product &)=default
double evalGradient(const Eigen::VectorXd &par, const size_t &i) const
Definition prior++.h:66
static std::shared_ptr< Prior > make(std::shared_ptr< Prior > p1, std::shared_ptr< Prior > p2)
Definition prior++.h:74
std::shared_ptr< Prior > leftPrior_
Left factor independent prior.
Definition prior++.h:50
Product & operator=(Product &&)=default
std::shared_ptr< Prior > operator*(std::shared_ptr< Prior > p1, std::shared_ptr< Prior > p2)
Multiplies two prior distributions (returns a Product prior).
Definition prior++.cpp:3
std::shared_ptr< Prior > make(const DistType &dist, size_t paramIndex)
Helper template function to create a FromDistribution prior.
Definition prior++.h:196