1 #ifndef STAN_MATH_PRIM_MAT_FUN_CHOLESKY_CORR_CONSTRAIN_HPP 2 #define STAN_MATH_PRIM_MAT_FUN_CHOLESKY_CORR_CONSTRAIN_HPP 16 const Eigen::Matrix<T, Eigen::Dynamic, 1>& y,
int K) {
20 int k_choose_2 = (K * (K - 1)) / 2;
22 "k_choose_2", k_choose_2);
23 Matrix<T, Dynamic, 1> z(k_choose_2);
24 for (
int i = 0; i < k_choose_2; ++i)
26 Matrix<T, Dynamic, Dynamic> x(K, K);
32 for (
int i = 1; i < K; ++i) {
34 T sum_sqs(
square(x(i, 0)));
35 for (
int j = 1; j < i; ++j) {
36 x(i, j) = z(k++) *
sqrt(1.0 - sum_sqs);
37 sum_sqs +=
square(x(i, j));
39 x(i, i) =
sqrt(1.0 - sum_sqs);
47 const Eigen::Matrix<T, Eigen::Dynamic, 1>& y,
int K, T& lp) {
51 int k_choose_2 = (K * (K - 1)) / 2;
53 "k_choose_2", k_choose_2);
54 Matrix<T, Dynamic, 1> z(k_choose_2);
55 for (
int i = 0; i < k_choose_2; ++i)
57 Matrix<T, Dynamic, Dynamic> x(K, K);
63 for (
int i = 1; i < K; ++i) {
65 T sum_sqs =
square(x(i, 0));
66 for (
int j = 1; j < i; ++j) {
67 lp += 0.5 *
log1m(sum_sqs);
68 x(i, j) = z(k++) *
sqrt(1.0 - sum_sqs);
69 sum_sqs +=
square(x(i, j));
71 x(i, i) =
sqrt(1.0 - sum_sqs);
fvar< T > sqrt(const fvar< T > &x)
T corr_constrain(const T &x)
Return the result of transforming the specified scalar to have a valid correlation value between -1 a...
void check_size_match(const char *function, const char *name_i, T_size1 i, const char *name_j, T_size2 j)
Check if the provided sizes match.
fvar< T > square(const fvar< T > &x)
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > cholesky_corr_constrain(const Eigen::Matrix< T, Eigen::Dynamic, 1 > &y, int K)
fvar< T > log1m(const fvar< T > &x)