30 #ifndef SACADO_FAD_EXP_MATHFUNCTIONS_HPP
31 #define SACADO_FAD_EXP_MATHFUNCTIONS_HPP
40 #define UNARYFUNC_MACRO(OP,FADOP) \
45 template <typename T> class Expr; \
46 template <typename T> \
47 KOKKOS_INLINE_FUNCTION \
48 FADOP< typename Expr<T>::derived_type, \
49 typename T::expr_spec_type > \
50 OP (const Expr<T>&); \
57 using Sacado::Fad::Exp::OP; \
80 #undef UNARYFUNC_MACRO
82 #define BINARYFUNC_MACRO(OP,FADOP) \
87 template <typename T> class Expr; \
88 template <typename T> struct IsFadExpr; \
89 template <typename T> struct ExprLevel; \
90 template <typename T1, typename T2> \
91 KOKKOS_INLINE_FUNCTION \
92 SACADO_FAD_EXP_OP_ENABLE_EXPR_EXPR(FADOP) \
93 OP (const T1&, const T2&); \
95 template <typename T> \
96 KOKKOS_INLINE_FUNCTION \
97 FADOP< typename T::value_type, typename Expr<T>::derived_type, \
98 true, false, typename T::expr_spec_type > \
99 OP (const typename T::value_type&, const Expr<T>&); \
101 template <typename T> \
102 KOKKOS_INLINE_FUNCTION \
103 FADOP< typename Expr<T>::derived_type, typename T::value_type, \
104 false, true, typename T::expr_spec_type > \
105 OP (const Expr<T>&, const typename T::value_type&); \
107 template <typename T> \
108 KOKKOS_INLINE_FUNCTION \
109 SACADO_FAD_EXP_OP_ENABLE_SCALAR_EXPR(FADOP) \
110 OP (const typename T::scalar_type&, const Expr<T>&); \
112 template <typename T> \
113 KOKKOS_INLINE_FUNCTION \
114 SACADO_FAD_EXP_OP_ENABLE_EXPR_SCALAR(FADOP) \
115 OP (const Expr<T>&, const typename T::scalar_type&); \
122 using Sacado::Fad::Exp::OP; \
130 #undef BINARYFUNC_MACRO
132 #if defined(HAVE_SACADO_KOKKOSCORE)
137 template <
typename S>
class GeneralFad;
138 template <
typename ValT,
unsigned sl,
unsigned ss,
typename U>
141 template <
typename S>
143 void atomic_add(GeneralFad<S>* dst,
const GeneralFad<S>& x);
145 template <
typename ValT,
unsigned sl,
unsigned ss,
typename U,
typename T>
147 void atomic_add(ViewFadPtr<ValT,sl,ss,U> dst,
const Expr<T>& x);
153 using Sacado::Fad::Exp::atomic_add;
158 #endif // SACADO_FAD_EXP_MATHFUNCTIONS_HPP
expr2 expr1 expr2 expr2 c *expr2 c *expr1 c *expr2 c *expr1 MaxOp
expr2 expr1 expr2 expr2 c *expr2 c *expr1 c *expr2 c *expr1 MinOp
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
#define BINARYFUNC_MACRO(OP, FADOP)
KOKKOS_INLINE_FUNCTION mpl::enable_if_c< ExprLevel< Expr< T1 > >::value==ExprLevel< Expr< T2 > >::value, Expr< PowerOp< Expr< T1 >, Expr< T2 > > > >::type pow(const Expr< T1 > &expr1, const Expr< T2 > &expr2)
#define KOKKOS_INLINE_FUNCTION
#define UNARYFUNC_MACRO(OP, FADOP)
SimpleFad< ValueT > min(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
atan2(expr1.val(), expr2.val())
SimpleFad< ValueT > max(const SimpleFad< ValueT > &a, const SimpleFad< ValueT > &b)
expr expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c *expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr2 expr1 expr2 expr1 PowerOp