1 #ifndef __STAN__PROB__DIST__UNI__CONTINUOUS__INV_CHI_SQUARE_HPP__
2 #define __STAN__PROB__DIST__UNI__CONTINUOUS__INV_CHI_SQUARE_HPP__
34 template <
bool propto,
35 typename T_y,
typename T_dof,
40 static const char*
function =
"stan::prob::inv_chi_square_log(%1%)";
54 if (!
check_finite(
function, nu,
"Degrees of freedom parameter", &logp, Policy()))
56 if (!
check_positive(
function, nu,
"Degrees of freedom parameter", &logp, Policy()))
58 if (!
check_not_nan(
function, y,
"Random variable", &logp, Policy()))
63 "Random variable",
"Degrees of freedom parameter",
73 for (
size_t n = 0; n <
length(y); n++)
79 for (
size_t n = 0; n < N; n++) {
81 logp += nu_vec[n] * NEG_LOG_TWO_OVER_TWO -
lgamma(0.5 * nu_vec[n]);
85 logp -= 0.5 / y_vec[n];
90 template <
bool propto,
91 typename T_y,
typename T_dof>
98 template <
typename T_y,
typename T_dof,
104 return inv_chi_square_log<false>(y,nu,Policy());
108 template <
typename T_y,
typename T_dof>
var multiply_log(const var &a, const var &b)
Return the value of a*log(b).
double value_of(const agrad::var &v)
Return the value of the specified variable.
var lgamma(const stan::agrad::var &a)
The log gamma function for variables (C99).
boost::math::tools::promote_args< T_a, T_b >::type multiply_log(T_a a, T_b b)
double value_of(T x)
Return the value of the specified scalar argument converted to a double value.
bool check_not_nan(const char *function, const T_y &y, const char *name, T_result *result, const Policy &)
Checks if the variable y is nan.
bool check_consistent_sizes(const char *function, const T1 &x1, const T2 &x2, const char *name1, const char *name2, T_result *result, const Policy &)
bool check_positive(const char *function, const T_y &y, const char *name, T_result *result, const Policy &)
bool check_finite(const char *function, const T_y &y, const char *name, T_result *result, const Policy &)
Checks if the variable y is finite.
boost::math::policies::policy default_policy
Default error-handling policy from Boost.
return_type< T_y, T_dof >::type inv_chi_square_log(const T_y &y, const T_dof &nu, const Policy &)
The log of an inverse chi-squared density for y with the specified degrees of freedom parameter.
Probability, optimization and sampling library.
size_t length(const T &x)
size_t max_size(const T1 &x1, const T2 &x2)
Template metaprogram to calculate whether a summand needs to be included in a proportional (log) prob...
boost::math::tools::promote_args< typename scalar_type< T1 >::type, typename scalar_type< T2 >::type, typename scalar_type< T3 >::type, typename scalar_type< T4 >::type, typename scalar_type< T5 >::type, typename scalar_type< T6 >::type >::type type