1 #ifndef __STAN__PROB__DISTRIBUTIONS__UNIVARIATE__CONTINUOUS__CHI_SQUARE_HPP__
2 #define __STAN__PROB__DISTRIBUTIONS__UNIVARIATE__CONTINUOUS__CHI_SQUARE_HPP__
34 template <
bool propto,
35 typename T_y,
typename T_dof,
37 typename return_type<T_y,T_dof>::type
39 static const char*
function =
"stan::prob::chi_square_log(%1%)";
53 if (!
check_not_nan(
function, y,
"Random variable", &logp, Policy()))
55 if (!
check_finite(
function, nu,
"Degrees of freedom parameter", &logp, Policy()))
57 if (!
check_positive(
function, nu,
"Degrees of freedom parameter", &logp, Policy()))
62 "Random variable",
"Degrees of freedom parameter",
72 for (
size_t n = 0; n <
length(y); n++)
83 for (
size_t n = 0; n < N; n++) {
85 logp += nu_vec[n] * NEG_LOG_TWO_OVER_TWO -
lgamma(0.5 * nu_vec[n]);
89 logp -= 0.5 * y_vec[n];
95 template <
bool propto,
96 typename T_y,
typename T_dof>
104 template <
typename T_y,
typename T_dof,
109 return chi_square_log<false>(y,nu,Policy());
113 template <
typename T_y,
typename T_dof>