Stan Math Library
2.6.3
probability, sampling & optimization
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerator
Friends
Macros
stan
math
fwd
scal
fun
log_diff_exp.hpp
Go to the documentation of this file.
1
#ifndef STAN_MATH_FWD_SCAL_FUN_LOG_DIFF_EXP_HPP
2
#define STAN_MATH_FWD_SCAL_FUN_LOG_DIFF_EXP_HPP
3
4
#include <
stan/math/fwd/core.hpp
>
5
6
#include <
stan/math/prim/scal/fun/log_diff_exp.hpp
>
7
#include <
stan/math/prim/scal/fun/constants.hpp
>
8
9
namespace
stan {
10
11
namespace
math {
12
13
template
<
typename
T>
inline
fvar<T>
14
log_diff_exp
(
const
fvar<T>
& x1,
const
fvar<T>
& x2) {
15
using
stan::math::log_diff_exp
;
16
using
stan::math::NOT_A_NUMBER
;
17
using
std::exp
;
18
if
(x1.
val_
<= x2.
val_
)
19
return
fvar<T>
(
NOT_A_NUMBER
,
NOT_A_NUMBER
);
20
return
fvar<T>
(
log_diff_exp
(x1.
val_
, x2.
val_
),
21
x1.
d_
/ (1 -
exp
(x2.
val_
- x1.
val_
))
22
+ x2.
d_
/ (1 -
exp
(x1.
val_
- x2.
val_
)));
23
}
24
25
template
<
typename
T1,
typename
T2>
inline
fvar<T2>
26
log_diff_exp
(
const
T1& x1,
const
fvar<T2>
& x2) {
27
using
stan::math::log_diff_exp
;
28
using
stan::math::NOT_A_NUMBER
;
29
using
std::exp
;
30
if
(x1 <= x2.
val_
)
31
return
fvar<T2>
(
NOT_A_NUMBER
,
NOT_A_NUMBER
);
32
return
fvar<T2>
(
log_diff_exp
(x1, x2.
val_
),
33
x2.
d_
/ (1 -
exp
(x1 - x2.
val_
)));
34
}
35
36
template
<
typename
T1,
typename
T2>
inline
fvar<T1>
37
log_diff_exp
(
const
fvar<T1>
& x1,
const
T2& x2) {
38
using
stan::math::log_diff_exp
;
39
using
stan::math::NOT_A_NUMBER
;
40
using
std::exp
;
41
if
(x1.
val_
<= x2)
42
return
fvar<T1>
(
NOT_A_NUMBER
,
NOT_A_NUMBER
);
43
return
fvar<T1>
(
log_diff_exp
(x1.
val_
, x2),
44
x1.
d_
/ (1 -
exp
(x2 - x1.
val_
)));
45
}
46
}
47
}
48
#endif
log_diff_exp.hpp
core.hpp
stan::math::fvar::d_
T d_
Definition:
fvar.hpp:15
stan::math::NOT_A_NUMBER
const double NOT_A_NUMBER
(Quiet) not-a-number value.
Definition:
constants.hpp:56
stan::math::log_diff_exp
fvar< T > log_diff_exp(const fvar< T > &x1, const fvar< T > &x2)
Definition:
log_diff_exp.hpp:14
stan::math::fvar::val_
T val_
Definition:
fvar.hpp:14
stan::math::exp
fvar< T > exp(const fvar< T > &x)
Definition:
exp.hpp:10
constants.hpp
stan::math::fvar
Definition:
fvar.hpp:13
[
Stan Home Page
]
© 2011–2015, Stan Development Team.