Stan Math Library  2.12.0
reverse mode automatic differentiation
log_sum_exp.hpp
Go to the documentation of this file.
1 #ifndef STAN_MATH_FWD_SCAL_FUN_LOG_SUM_EXP_HPP
2 #define STAN_MATH_FWD_SCAL_FUN_LOG_SUM_EXP_HPP
3 
4 #include <stan/math/fwd/core.hpp>
5 
7 
8 namespace stan {
9  namespace math {
10 
11  template <typename T>
12  inline
13  fvar<T>
14  log_sum_exp(const fvar<T>& x1, const fvar<T>& x2) {
15  using std::exp;
16  return fvar<T>(log_sum_exp(x1.val_, x2.val_),
17  x1.d_ / (1 + exp(x2.val_ - x1.val_))
18  + x2.d_ / (exp(x1.val_ - x2.val_) + 1));
19  }
20 
21  template <typename T>
22  inline
23  fvar<T>
24  log_sum_exp(const double x1, const fvar<T>& x2) {
25  using std::exp;
26  return fvar<T>(log_sum_exp(x1, x2.val_),
27  x2.d_ / (exp(x1 - x2.val_) + 1));
28  }
29 
30  template <typename T>
31  inline
32  fvar<T>
33  log_sum_exp(const fvar<T>& x1, const double x2) {
34  using std::exp;
35  return fvar<T>(log_sum_exp(x1.val_, x2),
36  x1.d_ / (1 + exp(x2 - x1.val_)));
37  }
38 
39  }
40 }
41 #endif
fvar< T > log_sum_exp(const std::vector< fvar< T > > &v)
Definition: log_sum_exp.hpp:13
fvar< T > exp(const fvar< T > &x)
Definition: exp.hpp:10

     [ Stan Home Page ] © 2011–2016, Stan Development Team.