1 #ifndef STAN_MATH_PRIM_MAT_FUN_READ_CORR_L_HPP 2 #define STAN_MATH_PRIM_MAT_FUN_READ_CORR_L_HPP 36 const Eigen::Array<T, Eigen::Dynamic, 1>& CPCs,
38 Eigen::Array<T, Eigen::Dynamic, 1> temp;
39 Eigen::Array<T, Eigen::Dynamic, 1> acc(K - 1);
42 Eigen::Array<T, Eigen::Dynamic, Eigen::Dynamic> L(K, K);
49 L.col(0).tail(pull) = temp = CPCs.head(pull);
50 acc.tail(pull) = T(1.0) - temp.square();
51 for (
size_t i = 1; i < (K - 1); i++) {
54 temp = CPCs.segment(position, pull);
55 L(i, i) =
sqrt(acc(i - 1));
56 L.col(i).tail(pull) = temp * acc.tail(pull).sqrt();
57 acc.tail(pull) *= T(1.0) - temp.square();
59 L(K - 1, K - 1) =
sqrt(acc(K - 2));
89 const Eigen::Array<T, Eigen::Dynamic, 1>& CPCs,
size_t K, T& log_prob) {
90 Eigen::Matrix<T, Eigen::Dynamic, 1> values(CPCs.rows() - 1);
95 for (
size_t k = 1; k <= (K - 2); k++)
96 for (
size_t i = k + 1; i <= K; i++) {
97 values(pos) = (K - k - 1) *
log1m(
square(CPCs(pos)));
101 log_prob += 0.5 *
sum(values);
fvar< T > sum(const std::vector< fvar< T > > &m)
Return the sum of the entries of the specified standard vector.
fvar< T > sqrt(const fvar< T > &x)
fvar< T > square(const fvar< T > &x)
fvar< T > log1m(const fvar< T > &x)
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > read_corr_L(const Eigen::Array< T, Eigen::Dynamic, 1 > &CPCs, size_t K)
Return the Cholesky factor of the correlation matrix of the specified dimensionality corresponding to...