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; \
81 #undef UNARYFUNC_MACRO
83 #define BINARYFUNC_MACRO(OP,FADOP) \
88 template <typename T> class Expr; \
89 template <typename T> struct IsFadExpr; \
90 template <typename T> struct ExprLevel; \
91 template <typename T1, typename T2> \
92 KOKKOS_INLINE_FUNCTION \
93 SACADO_FAD_EXP_OP_ENABLE_EXPR_EXPR(FADOP) \
94 OP (const T1&, const T2&); \
96 template <typename T> \
97 KOKKOS_INLINE_FUNCTION \
98 FADOP< typename T::value_type, typename Expr<T>::derived_type, \
99 true, false, typename T::expr_spec_type > \
100 OP (const typename T::value_type&, const Expr<T>&); \
102 template <typename T> \
103 KOKKOS_INLINE_FUNCTION \
104 FADOP< typename Expr<T>::derived_type, typename T::value_type, \
105 false, true, typename T::expr_spec_type > \
106 OP (const Expr<T>&, const typename T::value_type&); \
108 template <typename T> \
109 KOKKOS_INLINE_FUNCTION \
110 SACADO_FAD_EXP_OP_ENABLE_SCALAR_EXPR(FADOP) \
111 OP (const typename T::scalar_type&, const Expr<T>&); \
113 template <typename T> \
114 KOKKOS_INLINE_FUNCTION \
115 SACADO_FAD_EXP_OP_ENABLE_EXPR_SCALAR(FADOP) \
116 OP (const Expr<T>&, const typename T::scalar_type&); \
123 using Sacado::Fad::Exp::OP; \
131 #undef BINARYFUNC_MACRO
133 #if defined(HAVE_SACADO_KOKKOSCORE)
138 template <
typename S>
class GeneralFad;
139 template <
typename ValT,
unsigned sl,
unsigned ss,
typename U>
142 template <
typename S>
144 void atomic_add(GeneralFad<S>* dst,
const GeneralFad<S>& x);
146 template <
typename ValT,
unsigned sl,
unsigned ss,
typename U,
typename T>
148 void atomic_add(ViewFadPtr<ValT,sl,ss,U> dst,
const Expr<T>& x);
154 using Sacado::Fad::Exp::atomic_add;
159 #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
#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)
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 KOKKOS_INLINE_FUNCTION
KOKKOS_INLINE_FUNCTION T safe_sqrt(const T &x)
#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