1 #ifndef STAN__AGRAD__FWD__MATRIX__LOG_SUM_EXP_HPP
2 #define STAN__AGRAD__FWD__MATRIX__LOG_SUM_EXP_HPP
17 template <
typename T,
int R,
int C>
27 Eigen::Matrix<T,1,Eigen::Dynamic> vals(v.size());
28 for (
int i = 0; i < v.size(); ++i)
32 for (
size_t i = 0; i < v.size(); ++i) {
33 T exp_vi =
exp(vals[i]);
34 denominator += exp_vi;
35 deriv += v(i).d_ * exp_vi;
fvar< T > log_sum_exp(const fvar< T > &x1, const fvar< T > &x2)
boost::math::tools::promote_args< T1, T2 >::type log_sum_exp(const T2 &a, const T1 &b)
Calculates the log sum of exponetials without overflow.
fvar< T > log(const fvar< T > &x)
fvar< T > exp(const fvar< T > &x)