Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
stan
math
fwd
scal
fun
fmin.hpp
Go to the documentation of this file.
1
#ifndef STAN_MATH_FWD_SCAL_FUN_FMIN_HPP
2
#define STAN_MATH_FWD_SCAL_FUN_FMIN_HPP
3
4
#include <
stan/math/fwd/core.hpp
>
5
#include <
stan/math/prim/scal/fun/constants.hpp
>
6
#include <
stan/math/prim/scal/fun/fmin.hpp
>
7
#include <
stan/math/prim/scal/fun/is_nan.hpp
>
8
#include <
stan/math/prim/scal/meta/likely.hpp
>
9
10
namespace
stan
{
11
namespace
math
{
12
13
template
<
typename
T>
14
inline
fvar<T>
fmin
(
const
fvar<T>
&
x1
,
const
fvar<T>
&
x2
) {
15
if
(
unlikely
(
is_nan
(x1.
val_
))) {
16
if
(
is_nan
(x2.
val_
))
17
return
fvar<T>
(
fmin
(x1.
val_
, x2.
val_
),
NOT_A_NUMBER
);
18
else
19
return
fvar<T>
(x2.
val_
, x2.
d_
);
20
}
else
if
(
unlikely
(
is_nan
(x2.
val_
))) {
21
return
fvar<T>
(x1.
val_
, x1.
d_
);
22
}
else
if
(x1.
val_
< x2.
val_
) {
23
return
fvar<T>
(x1.
val_
, x1.
d_
);
24
}
else
if
(x1.
val_
== x2.
val_
) {
25
return
fvar<T>
(x1.
val_
,
NOT_A_NUMBER
);
26
}
else
{
27
return
fvar<T>
(x2.
val_
, x2.
d_
);
28
}
29
}
30
31
template
<
typename
T>
32
inline
fvar<T>
fmin
(
double
x1
,
const
fvar<T>
&
x2
) {
33
if
(
unlikely
(
is_nan
(x1))) {
34
if
(
is_nan
(x2.
val_
))
35
return
fvar<T>
(
fmin
(x1, x2.
val_
),
NOT_A_NUMBER
);
36
else
37
return
fvar<T>
(x2.
val_
, x2.
d_
);
38
}
else
if
(
unlikely
(
is_nan
(x2.
val_
))) {
39
return
fvar<T>
(
x1
, 0.0);
40
}
else
if
(x1 < x2.
val_
) {
41
return
fvar<T>
(
x1
, 0.0);
42
}
else
if
(x1 == x2.
val_
) {
43
return
fvar<T>
(x2.
val_
,
NOT_A_NUMBER
);
44
}
else
{
45
return
fvar<T>
(x2.
val_
, x2.
d_
);
46
}
47
}
48
49
template
<
typename
T>
50
inline
fvar<T>
fmin
(
const
fvar<T>
&
x1
,
double
x2
) {
51
if
(
unlikely
(
is_nan
(x1.
val_
))) {
52
if
(
is_nan
(x2))
53
return
fvar<T>
(
fmin
(x1.
val_
, x2),
NOT_A_NUMBER
);
54
else
55
return
fvar<T>
(
x2
, 0.0);
56
}
else
if
(
unlikely
(
is_nan
(x2))) {
57
return
fvar<T>
(x1.
val_
, x1.
d_
);
58
}
else
if
(x1.
val_
< x2) {
59
return
fvar<T>
(x1.
val_
, x1.
d_
);
60
}
else
if
(x1.
val_
== x2) {
61
return
fvar<T>
(x1.
val_
,
NOT_A_NUMBER
);
62
}
else
{
63
return
fvar<T>
(
x2
, 0.0);
64
}
65
}
66
67
}
// namespace math
68
}
// namespace stan
69
#endif
stan::math::fmin
fvar< T > fmin(const fvar< T > &x1, const fvar< T > &x2)
Definition:
fmin.hpp:14
core.hpp
stan::math::fvar::d_
T d_
Definition:
fvar.hpp:51
stan::math::NOT_A_NUMBER
const double NOT_A_NUMBER
Definition:
constants.hpp:53
is_nan.hpp
stan
Definition:
StanTypedefs.h:9
x1
Float_t x1[n_points_granero]
Definition:
compare.C:5
submit_syst.x2
x2
Definition:
submit_syst.py:250
stan::math::fvar::val_
T val_
Definition:
fvar.hpp:46
constants.hpp
math
fmin.hpp
likely.hpp
unlikely
#define unlikely(expr)
Definition:
lz4.cxx:121
stan::math::is_nan
int is_nan(const fvar< T > &x)
Definition:
is_nan.hpp:19
stan::math::fvar
Definition:
fvar.hpp:42
Generated on Sat Jan 23 2021 14:14:33 for NOvA by
1.8.11