Stan Math Library
2.15.0
reverse mode automatic differentiation
stan
math
fwd
scal
fun
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
6
#include <
stan/math/prim/scal/fun/log_sum_exp.hpp
>
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
(
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,
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
core.hpp
stan::math::fvar::d_
T d_
Definition:
fvar.hpp:16
stan
Definition:
log_sum_exp.hpp:8
stan::math::log_sum_exp
fvar< T > log_sum_exp(const std::vector< fvar< T > > &v)
Definition:
log_sum_exp.hpp:13
log_sum_exp.hpp
stan::math::fvar::val_
T val_
Definition:
fvar.hpp:15
stan::math::exp
fvar< T > exp(const fvar< T > &x)
Definition:
exp.hpp:10
stan::math::fvar
Definition:
fvar.hpp:14
[
Stan Home Page
]
© 2011–2016, Stan Development Team.