1 #ifndef __STAN__PROB__DISTRIBUTIONS__UNIVARIATE__CONTINUOUS__SCALED_INV_CHI_SQUARE_HPP__
2 #define __STAN__PROB__DISTRIBUTIONS__UNIVARIATE__CONTINUOUS__SCALED_INV_CHI_SQUARE_HPP__
34 template <
bool propto,
35 typename T_y,
typename T_dof,
typename T_scale,
37 typename return_type<T_y,T_dof,T_scale>::type
40 static const char*
function
41 =
"stan::prob::scaled_inv_chi_square_log(%1%)";
56 if (!
check_not_nan(
function, y,
"Random variable", &logp, Policy()))
58 if (!
check_finite(
function, nu,
"Degrees of freedom parameter", &logp, Policy()))
60 if (!
check_positive(
function, nu,
"Degrees of freedom parameter", &logp, Policy()))
62 if (!
check_finite(
function, s,
"Scale parameter", &logp, Policy()))
64 if (!
check_positive(
function, s,
"Scale parameter", &logp, Policy()))
68 "Random variable",
"Degrees of freedom parameter",
"Scale parameter",
81 for (
size_t n = 0; n < N; n++) {
89 for (
size_t n = 0; n < N; n++) {
95 logp += nu_vec[n] *
log(s_vec[n]);
99 logp -= nu_vec[n] * 0.5 *
square(s_vec[n]) / y_vec[n];
104 template <
bool propto,
105 typename T_y,
typename T_dof,
typename T_scale>
109 return scaled_inv_chi_square_log<propto>(y,nu,s,
113 template <
typename T_y,
typename T_dof,
typename T_scale,
119 return scaled_inv_chi_square_log<false>(y,nu,s,Policy());
122 template <
typename T_y,
typename T_dof,
typename T_scale>
126 return scaled_inv_chi_square_log<false>(y,nu,s,