Automatic Differentiation
 
Loading...
Searching...
No Matches
corr_matrix_constrain.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_CONSTRAINT_CORR_MATRIX_CONSTRAIN_HPP
2#define STAN_MATH_PRIM_CONSTRAINT_CORR_MATRIX_CONSTRAIN_HPP
3
9#include <stdexcept>
10
11namespace stan {
12namespace math {
13
39template <typename T, require_eigen_col_vector_t<T>* = nullptr>
40inline Eigen::Matrix<value_type_t<T>, Eigen::Dynamic, Eigen::Dynamic>
41corr_matrix_constrain(const T& x, Eigen::Index k) {
42 Eigen::Index k_choose_2 = (k * (k - 1)) / 2;
43 check_size_match("cov_matrix_constrain", "x.size()", x.size(), "k_choose_2",
44 k_choose_2);
45 return read_corr_matrix(corr_constrain(x), k);
46}
47
68template <typename T, require_eigen_col_vector_t<T>* = nullptr>
69inline Eigen::Matrix<value_type_t<T>, Eigen::Dynamic, Eigen::Dynamic>
70corr_matrix_constrain(const T& x, Eigen::Index k, return_type_t<T>& lp) {
71 Eigen::Index k_choose_2 = (k * (k - 1)) / 2;
72 check_size_match("cov_matrix_constrain", "x.size()", x.size(), "k_choose_2",
73 k_choose_2);
74 return read_corr_matrix(corr_constrain(x, lp), k, lp);
75}
76
96template <bool Jacobian, typename T, require_not_std_vector_t<T>* = nullptr>
97inline auto corr_matrix_constrain(const T& x, Eigen::Index k,
98 return_type_t<T>& lp) {
99 if (Jacobian) {
100 return corr_matrix_constrain(x, k, lp);
101 } else {
102 return corr_matrix_constrain(x, k);
103 }
104}
105
125template <bool Jacobian, typename T, require_std_vector_t<T>* = nullptr>
126inline auto corr_matrix_constrain(const T& y, int K, return_type_t<T>& lp) {
127 return apply_vector_unary<T>::apply(y, [&lp, K](auto&& v) {
128 return corr_matrix_constrain<Jacobian>(v, K, lp);
129 });
130}
131
132} // namespace math
133} // namespace stan
134
135#endif
typename return_type< Ts... >::type return_type_t
Convenience type for the return type of the specified template parameters.
Eigen::Matrix< value_type_t< T >, Eigen::Dynamic, Eigen::Dynamic > corr_matrix_constrain(const T &x, Eigen::Index k)
Return the correlation matrix of the specified dimensionality derived from the specified vector of un...
Eigen::Matrix< value_type_t< T_CPCs >, Eigen::Dynamic, Eigen::Dynamic > read_corr_matrix(const T_CPCs &CPCs, size_t K)
Return the correlation matrix of the specified dimensionality corresponding to the specified canonica...
plain_type_t< T > corr_constrain(const T &x)
Return the result of transforming the specified scalar or container of values to have a valid correla...
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.
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...