1 #ifndef STAN__MCMC__DIAG__E__METRIC__BETA
2 #define STAN__MCMC__DIAG__E__METRIC__BETA
4 #include <boost/random/variate_generator.hpp>
5 #include <boost/random/normal_distribution.hpp>
15 template <
typename M,
typename BaseRNG>
25 return 0.5 * z.
p.dot( z.
mInv.cwiseProduct(z.
p) );
32 return Eigen::VectorXd::Zero(this->
model_.num_params_r());
36 return z.
mInv.cwiseProduct(z.
p);
45 boost::variate_generator<BaseRNG&, boost::normal_distribution<> >
46 rand_diag_gaus(rng, boost::normal_distribution<>());
48 for (
int i = 0; i < z.
p.size(); ++i)
49 z.
p(i) = rand_diag_gaus() /
sqrt(z.
mInv(i));
const Eigen::VectorXd dphi_dq(diag_e_point &z)
void sample_p(diag_e_point &z, BaseRNG &rng)
double V(diag_e_point &z)
double tau(diag_e_point &z)
const Eigen::VectorXd dtau_dp(diag_e_point &z)
const Eigen::VectorXd dtau_dq(diag_e_point &z)
fvar< T > sqrt(const fvar< T > &x)
double T(diag_e_point &z)
double phi(diag_e_point &z)
double e()
Return the base of the natural logarithm.
diag_e_metric(M &m, std::ostream *e)