Sacado Package Browser (Single Doxygen Collection)
Version of the Day
src
new_design
Sacado_Fad_Exp_MathFunctions.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Sacado Package
5
// Copyright (2006) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// This library is free software; you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as
12
// published by the Free Software Foundation; either version 2.1 of the
13
// License, or (at your option) any later version.
14
//
15
// This library is distributed in the hope that it will be useful, but
16
// WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
// Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public
21
// License along with this library; if not, write to the Free Software
22
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23
// USA
24
// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
25
// (etphipp@sandia.gov).
26
//
27
// ***********************************************************************
28
// @HEADER
29
30
#ifndef SACADO_FAD_EXP_MATHFUNCTIONS_HPP
31
#define SACADO_FAD_EXP_MATHFUNCTIONS_HPP
32
33
#include "
Sacado_cmath.hpp
"
34
#include "
Sacado_SFINAE_Macros.hpp
"
35
36
#define UNARYFUNC_MACRO(OP,FADOP) \
37
namespace Sacado { \
38
\
39
namespace Fad { \
40
namespace Exp { \
41
template <typename T> class Expr; \
42
template <typename T, typename E> class FADOP; \
43
template <typename T> \
44
KOKKOS_INLINE_FUNCTION \
45
FADOP< typename Expr<T>::derived_type, \
46
typename T::expr_spec_type > \
47
OP (const Expr<T>&); \
48
} \
49
} \
50
\
51
} \
52
\
53
namespace std { \
54
using Sacado::Fad::Exp::OP; \
55
}
56
57
UNARYFUNC_MACRO
(
exp
,
ExpOp
)
58
UNARYFUNC_MACRO
(
log
,
LogOp
)
59
UNARYFUNC_MACRO
(
log10
,
Log10Op
)
60
UNARYFUNC_MACRO
(
sqrt
,
SqrtOp
)
61
UNARYFUNC_MACRO
(
cos
,
CosOp
)
62
UNARYFUNC_MACRO
(
sin
,
SinOp
)
63
UNARYFUNC_MACRO
(
tan
,
TanOp
)
64
UNARYFUNC_MACRO
(
acos
,
ACosOp
)
65
UNARYFUNC_MACRO
(
asin
,
ASinOp
)
66
UNARYFUNC_MACRO
(
atan
,
ATanOp
)
67
UNARYFUNC_MACRO
(
cosh
,
CoshOp
)
68
UNARYFUNC_MACRO
(
sinh
,
SinhOp
)
69
UNARYFUNC_MACRO
(
tanh
,
TanhOp
)
70
UNARYFUNC_MACRO
(
acosh
,
ACoshOp
)
71
UNARYFUNC_MACRO
(
asinh
,
ASinhOp
)
72
UNARYFUNC_MACRO
(
atanh
,
ATanhOp
)
73
UNARYFUNC_MACRO
(
abs
,
AbsOp
)
74
UNARYFUNC_MACRO
(
fabs
,
FAbsOp
)
75
UNARYFUNC_MACRO
(
cbrt
,
CbrtOp
)
76
77
#undef UNARYFUNC_MACRO
78
79
#define BINARYFUNC_MACRO(OP,FADOP) \
80
namespace Sacado { \
81
\
82
namespace Fad { \
83
namespace Exp { \
84
template <typename T> class Expr; \
85
template <typename T1, typename T2, bool, bool, typename E> \
86
class FADOP; \
87
template <typename T> struct IsFadExpr; \
88
template <typename T> struct ExprLevel; \
89
template <typename T1, typename T2> \
90
KOKKOS_INLINE_FUNCTION \
91
SACADO_FAD_EXP_OP_ENABLE_EXPR_EXPR(FADOP) \
92
OP (const T1&, const T2&); \
93
\
94
template <typename T> \
95
KOKKOS_INLINE_FUNCTION \
96
FADOP< typename T::value_type, typename Expr<T>::derived_type, \
97
true, false, typename T::expr_spec_type > \
98
OP (const typename T::value_type&, const Expr<T>&); \
99
\
100
template <typename T> \
101
KOKKOS_INLINE_FUNCTION \
102
FADOP< typename Expr<T>::derived_type, typename T::value_type, \
103
false, true, typename T::expr_spec_type > \
104
OP (const Expr<T>&, const typename T::value_type&); \
105
\
106
template <typename T> \
107
KOKKOS_INLINE_FUNCTION \
108
SACADO_FAD_EXP_OP_ENABLE_SCALAR_EXPR(FADOP) \
109
OP (const typename T::scalar_type&, const Expr<T>&); \
110
\
111
template <typename T> \
112
KOKKOS_INLINE_FUNCTION \
113
SACADO_FAD_EXP_OP_ENABLE_EXPR_SCALAR(FADOP) \
114
OP (const Expr<T>&, const typename T::scalar_type&); \
115
} \
116
} \
117
\
118
} \
119
\
120
namespace std { \
121
using Sacado::Fad::Exp::OP; \
122
}
123
124
BINARYFUNC_MACRO
(
atan2
,
Atan2Op
)
125
BINARYFUNC_MACRO
(
pow
,
PowerOp
)
126
BINARYFUNC_MACRO
(
max
,
MaxOp
)
127
BINARYFUNC_MACRO
(
min
,
MinOp
)
128
129
#undef BINARYFUNC_MACRO
130
131
#if defined(HAVE_SACADO_KOKKOSCORE)
132
133
namespace
Sacado
{
134
namespace
Fad {
135
namespace
Exp {
136
template
<
typename
S>
class
GeneralFad;
137
template
<
typename
ValT,
unsigned
sl,
unsigned
ss,
typename
U>
138
class
ViewFadPtr;
139
140
template
<
typename
S>
141
KOKKOS_INLINE_FUNCTION
142
void
atomic_add(GeneralFad<S>* dst,
const
GeneralFad<S>& x);
143
144
template
<
typename
ValT,
unsigned
sl,
unsigned
ss,
typename
U,
typename
T>
145
KOKKOS_INLINE_FUNCTION
146
void
atomic_add(ViewFadPtr<ValT,sl,ss,U> dst,
const
Expr<T>& x);
147
}
148
}
149
}
150
151
namespace
Kokkos
{
152
using
Sacado::Fad::Exp::atomic_add;
153
}
154
155
#endif
156
157
#endif // SACADO_FAD_EXP_MATHFUNCTIONS_HPP
sqrt
sqrt(expr.val())
ASinOp
expr expr ASinOp
Definition:
Sacado_Fad_Exp_Ops.hpp:199
asinh
asinh(expr.val())
ATanOp
expr expr ATanOp
Definition:
Sacado_Fad_Exp_Ops.hpp:206
KOKKOS_INLINE_FUNCTION
#define KOKKOS_INLINE_FUNCTION
Definition:
Sacado_ConfigDefs.h:90
sin
sin(expr.val())
cosh
cosh(expr.val())
ACosOp
expr expr ACosOp
Definition:
Sacado_Fad_Exp_Ops.hpp:192
Sacado_cmath.hpp
log
log(expr.val())
atan2
atan2(expr1.val(), expr2.val())
Log10Op
expr expr Log10Op
Definition:
Sacado_Fad_Exp_Ops.hpp:160
cbrt
cbrt(expr.val())
CbrtOp
CbrtOp
Definition:
Sacado_Fad_Exp_Ops.hpp:265
atanh
atanh(expr.val())
asin
asin(expr.val())
BINARYFUNC_MACRO
#define BINARYFUNC_MACRO(OP, FADOP)
Definition:
Sacado_Fad_Exp_MathFunctions.hpp:79
Atan2Op
expr expr expr1 expr1 expr2 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr2 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 expr1 expr1 c *expr2 expr1 c *expr2 expr1 c *expr2 expr1 expr1 expr1 expr2 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 Atan2Op
Definition:
Sacado_Fad_Exp_Ops.hpp:607
MaxOp
MaxOp
Definition:
Sacado_Fad_Exp_Ops.hpp:639
log10
log10(expr.val())
CoshOp
expr expr CoshOp
Definition:
Sacado_Fad_Exp_Ops.hpp:212
ACoshOp
expr expr ACoshOp
Definition:
Sacado_Fad_Exp_Ops.hpp:231
acosh
acosh(expr.val())
tan
tan(expr.val())
abs
abs(expr.val())
fabs
fabs(expr.val())
ASinhOp
expr expr ASinhOp
Definition:
Sacado_Fad_Exp_Ops.hpp:239
exp
exp(expr.val())
Sacado::Fad::min
SimpleFad< ValueT > min(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
Definition:
Sacado_Fad_SimpleFadOps.hpp:498
TanOp
expr expr TanOp
Definition:
Sacado_Fad_Exp_Ops.hpp:184
Sacado
Definition:
Sacado_mpl_apply.hpp:39
cos
cos(expr.val())
MinOp
MinOp
Definition:
Sacado_Fad_Exp_Ops.hpp:653
Sacado_SFINAE_Macros.hpp
tanh
tanh(expr.val())
ATanhOp
expr expr ATanhOp
Definition:
Sacado_Fad_Exp_Ops.hpp:246
SinhOp
expr expr SinhOp
Definition:
Sacado_Fad_Exp_Ops.hpp:218
TanhOp
expr expr TanhOp
Definition:
Sacado_Fad_Exp_Ops.hpp:224
SinOp
expr expr SinOp
Definition:
Sacado_Fad_Exp_Ops.hpp:178
ExpOp
expr expr expr ExpOp
Definition:
Sacado_Fad_Exp_Ops.hpp:148
pow
pow(expr1.val(), expr2.val())
LogOp
LogOp
Definition:
Sacado_Fad_Exp_Ops.hpp:154
acos
acos(expr.val())
AbsOp
expr expr AbsOp
Definition:
Sacado_Fad_Exp_Ops.hpp:253
UNARYFUNC_MACRO
#define UNARYFUNC_MACRO(OP, FADOP)
Definition:
Sacado_Fad_Exp_MathFunctions.hpp:36
Sacado::Fad::max
SimpleFad< ValueT > max(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
Definition:
Sacado_Fad_SimpleFadOps.hpp:434
FAbsOp
FAbsOp
Definition:
Sacado_Fad_Exp_Ops.hpp:259
atan
atan(expr.val())
sinh
sinh(expr.val())
PowerOp
expr2 expr1 expr2 expr2 c *expr2 c *expr1 c *expr2 c *expr1 PowerOp
Definition:
Sacado_Fad_Exp_Ops.hpp:625
SqrtOp
expr expr SqrtOp
Definition:
Sacado_Fad_Exp_Ops.hpp:166
Kokkos
Definition:
Kokkos_LayoutContiguous.hpp:36
CosOp
expr expr CosOp
Definition:
Sacado_Fad_Exp_Ops.hpp:172
Generated by
1.8.16