Stan Math Library
2.20.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/meta.hpp
>
5
#include <
stan/math/fwd/core.hpp
>
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
fvar<T>
log_sum_exp
(
const
fvar<T>
& x1,
const
fvar<T>
& x2) {
13
using
std::exp
;
14
return
fvar<T>
(
log_sum_exp
(x1.
val_
, x2.
val_
),
15
x1.
d_
/ (1 +
exp
(x2.
val_
- x1.
val_
))
16
+ x2.
d_
/ (
exp
(x1.
val_
- x2.
val_
) + 1));
17
}
18
19
template
<
typename
T>
20
inline
fvar<T>
log_sum_exp
(
double
x1,
const
fvar<T>
& x2) {
21
using
std::exp
;
22
return
fvar<T>
(
log_sum_exp
(x1, x2.
val_
), x2.
d_
/ (
exp
(x1 - x2.
val_
) + 1));
23
}
24
25
template
<
typename
T>
26
inline
fvar<T>
log_sum_exp
(
const
fvar<T>
& x1,
double
x2) {
27
using
std::exp
;
28
return
fvar<T>
(
log_sum_exp
(x1.
val_
, x2), x1.
d_
/ (1 +
exp
(x2 - x1.
val_
)));
29
}
30
31
}
// namespace math
32
}
// namespace stan
33
#endif
core.hpp
stan::math::fvar::d_
T d_
The tangent (derivative) of this variable.
Definition:
fvar.hpp:50
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:12
log_sum_exp.hpp
stan::math::fvar::val_
T val_
The value of this variable.
Definition:
fvar.hpp:45
stan::math::exp
fvar< T > exp(const fvar< T > &x)
Definition:
exp.hpp:11
meta.hpp
stan::math::fvar
This template class represents scalars used in forward-mode automatic differentiation, which consist of values and directional derivatives of the specified template type.
Definition:
fvar.hpp:41
[
Stan Home Page
]
© 2011–2018, Stan Development Team.