1#ifndef STAN_MATH_PRIM_CONSTRAINT_SIMPLEX_COLUMN_CONSTRAIN_HPP
2#define STAN_MATH_PRIM_CONSTRAINT_SIMPLEX_COLUMN_CONSTRAIN_HPP
25template <
typename Mat, require_eigen_matrix_dynamic_t<Mat>* =
nullptr,
26 require_not_st_var<Mat>* =
nullptr>
29 const Eigen::Index M = y_ref.cols();
31 for (Eigen::Index i = 0; i < M; ++i) {
52template <
typename Mat,
typename Lp,
58 const Eigen::Index M = y_ref.cols();
60 for (Eigen::Index i = 0; i < M; ++i) {
76template <
typename T, require_std_vector_t<T>* =
nullptr>
96template <
typename T,
typename Lp, require_std_vector_t<T>* =
nullptr,
97 require_convertible_t<return_type_t<T>, Lp>* =
nullptr>
121template <
bool Jacobian,
typename Mat,
typename Lp,
124 if constexpr (Jacobian) {
require_t< std::is_convertible< std::decay_t< T >, std::decay_t< S > > > require_convertible_t
Require types T and S satisfies std::is_convertible.
require_t< is_eigen_matrix_dynamic< std::decay_t< T > > > require_eigen_matrix_dynamic_t
Require type satisfies is_eigen_matrix_dynamic.
require_not_t< is_var< scalar_type_t< std::decay_t< T > > > > require_not_st_var
Require scalar type does not satisfy is_var.
plain_type_t< Mat > stochastic_column_constrain(const Mat &y)
Return a column stochastic matrix.
ref_type_t< T && > to_ref(T &&a)
This evaluates expensive Eigen expressions.
plain_type_t< Vec > simplex_constrain(const Vec &y)
Return the simplex corresponding to the specified free vector.
typename plain_type< T >::type plain_type_t
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...