Sacado Package Browser (Single Doxygen Collection)  Version of the Day
Namespaces | Macros | Functions | Variables
Sacado_Fad_Ops.hpp File Reference
#include "Sacado_Fad_Expression.hpp"
#include "Sacado_cmath.hpp"
#include <ostream>
Include dependency graph for Sacado_Fad_Ops.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 Sacado
 
 Sacado::Fad
 Namespace for forward-mode AD classes.
 

Macros

#define FAD_UNARYOP_MACRO(OPNAME, OP, USING, VALUE, DX, FASTACCESSDX)
 
#define FAD_BINARYOP_MACRO(OPNAME, OP, USING, VALUE, DX, FASTACCESSDX, VAL_CONST_DX_1, VAL_CONST_DX_2, CONST_DX_1, CONST_DX_2, CONST_FASTACCESSDX_1, CONST_FASTACCESSDX_2)
 
#define FAD_RELOP_MACRO(OP)
 
#define FAD_BOOL_MACRO(OP)
 

Functions

 FAD_UNARYOP_MACRO (operator+, UnaryPlusOp, ;, expr.val(), expr.dx(i), expr.fastAccessDx(i)) FAD_UNARYOP_MACRO(operator-
 
expr val ()
 
expr expr dx (i)
 
expr expr expr fastAccessDx (i)) FAD_UNARYOP_MACRO(exp
 
 exp (expr.val())
 
 log (expr.val())
 
 log10 (expr.val())
 
 sqrt (expr.val())
 
 cos (expr.val())
 
 sin (expr.val())
 
 acos (expr.val())
 
 asin (expr.val())
 
 atan (expr.val())
 
 cosh (expr.val())
 
 sinh (expr.val())
 
 tanh (expr.val())
 
 acosh (expr.val())
 
 asinh (expr.val())
 
 atanh (expr.val())
 
 abs (expr.val())
 
 if_then_else (expr.val() >=0, expr.dx(i), value_type(-expr.dx(i)))
 
 if_then_else (expr.val() >=0, expr.fastAccessDx(i), value_type(-expr.fastAccessDx(i)))) FAD_UNARYOP_MACRO(fabs
 
 fabs (expr.val())
 
 atan2 (expr1.val(), expr2.val())
 
expr2 expr2 atan2 (c.val(), expr2.val())
 
expr2 expr2 atan2 (expr1.val(), c.val())
 
 pow (expr1.val(), expr2.val())
 
 if_then_else (expr1.val()==value_type(0.0), value_type(0.0), value_type((expr2.dx(i) *log(expr1.val())+expr2.val() *expr1.dx(i)/expr1.val()) *pow(expr1.val(), expr2.val())))
 
 if_then_else (expr1.val()==value_type(0.0), value_type(0.0), value_type((expr2.fastAccessDx(i) *log(expr1.val())+expr2.val() *expr1.fastAccessDx(i)/expr1.val()) *pow(expr1.val(), expr2.val())))
 
 pow (c.val(), expr2.val())
 
 pow (expr1.val(), c.val())
 
 if_then_else (c.val()==value_type(0.0), value_type(0.0), value_type(expr2.dx(i) *log(c.val()) *pow(c.val(), expr2.val())))
 
 if_then_else (expr1.val()==value_type(0.0), value_type(0.0), value_type(c.val() *expr1.dx(i)/expr1.val() *pow(expr1.val(), c.val())))
 
 if_then_else (c.val()==value_type(0.0), value_type(0.0), value_type(expr2.fastAccessDx(i) *log(c.val()) *pow(c.val(), expr2.val())))
 
 if_then_else (expr1.val()==value_type(0.0), value_type(0.0), value_type(c.val() *expr1.fastAccessDx(i)/expr1.val() *pow(expr1.val(), c.val())))) FAD_BINARYOP_MACRO(max
 
 if_then_else (expr1.val() >=expr2.val(), expr1.val(), expr2.val())
 
 if_then_else (expr1.val() >=expr2.val(), expr1.dx(i), expr2.dx(i))
 
 if_then_else (c.val() >=expr2.val(), value_type(c.val()), expr2.val())
 
 if_then_else (expr1.val() >=c.val(), expr1.val(), value_type(c.val()))
 
 if_then_else (c.val() >=expr2.val(), value_type(0.0), expr2.dx(i))
 
 if_then_else (expr1.val() >=c.val(), expr1.dx(i), value_type(0.0))
 
 if_then_else (expr1.val()<=expr2.val(), expr1.val(), expr2.val())
 
 if_then_else (expr1.val()<=expr2.val(), expr1.dx(i), expr2.dx(i))
 
 if_then_else (c.val()<=expr2.val(), value_type(c.val()), expr2.val())
 
 if_then_else (expr1.val()<=c.val(), expr1.val(), value_type(c.val()))
 
 if_then_else (c.val()<=expr2.val(), value_type(0), expr2.dx(i))
 
 if_then_else (expr1.val()<=c.val(), expr1.dx(i), value_type(0))
 
template<typename ExprT >
KOKKOS_INLINE_FUNCTION bool Sacado::Fad::operator! (const Expr< ExprT > &expr)
 
template<typename ExprT >
KOKKOS_INLINE_FUNCTION bool Sacado::Fad::toBool (const Expr< ExprT > &x)
 
template<typename ExprT >
std::ostream & Sacado::Fad::operator<< (std::ostream &os, const Expr< ExprT > &x)
 

Variables

 UnaryMinusOp
 
expr expr expr ExpOp
 
 LogOp
 
expr expr Log10Op
 
expr expr SqrtOp
 
expr expr CosOp
 
expr expr SinOp
 
expr expr TanOp
 
expr expr ACosOp
 
expr expr ASinOp
 
expr expr ATanOp
 
expr expr CoshOp
 
expr expr SinhOp
 
expr expr TanhOp
 
expr expr ACoshOp
 
expr expr ASinhOp
 
expr expr ATanhOp
 
expr expr AbsOp
 
 FAbsOp
 
 AdditionOp
 
expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 SubtractionOp
 
expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 DivisionOp
 
expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 Atan2Op
 
expr2 expr2 c c c c PowerOp
 
 MaxOp
 
 MinOp
 

Macro Definition Documentation

◆ FAD_UNARYOP_MACRO

#define FAD_UNARYOP_MACRO (   OPNAME,
  OP,
  USING,
  VALUE,
  DX,
  FASTACCESSDX 
)

Definition at line 59 of file Sacado_Fad_Ops.hpp.

◆ FAD_BINARYOP_MACRO

#define FAD_BINARYOP_MACRO (   OPNAME,
  OP,
  USING,
  VALUE,
  DX,
  FASTACCESSDX,
  VAL_CONST_DX_1,
  VAL_CONST_DX_2,
  CONST_DX_1,
  CONST_DX_2,
  CONST_FASTACCESSDX_1,
  CONST_FASTACCESSDX_2 
)

◆ FAD_RELOP_MACRO

#define FAD_RELOP_MACRO (   OP)
Value:
namespace Sacado { \
namespace Fad { \
template <typename ExprT1, typename ExprT2> \
KOKKOS_INLINE_FUNCTION \
bool \
operator OP (const Expr<ExprT1>& expr1, \
const Expr<ExprT2>& expr2) \
{ \
return expr1.val() OP expr2.val(); \
} \
\
template <typename ExprT2> \
KOKKOS_INLINE_FUNCTION \
bool \
operator OP (const typename Expr<ExprT2>::value_type& a, \
const Expr<ExprT2>& expr2) \
{ \
return a OP expr2.val(); \
} \
\
template <typename ExprT1> \
KOKKOS_INLINE_FUNCTION \
bool \
operator OP (const Expr<ExprT1>& expr1, \
const typename Expr<ExprT1>::value_type& b) \
{ \
return expr1.val() OP b; \
} \
} \
}

Definition at line 1378 of file Sacado_Fad_Ops.hpp.

◆ FAD_BOOL_MACRO

#define FAD_BOOL_MACRO (   OP)
Value:
namespace Sacado { \
namespace Fad { \
template <typename ExprT1, typename ExprT2> \
KOKKOS_INLINE_FUNCTION \
bool \
operator OP (const Expr<ExprT1>& expr1, \
const Expr<ExprT2>& expr2) \
{ \
return toBool(expr1) OP toBool(expr2); \
} \
\
template <typename ExprT2> \
KOKKOS_INLINE_FUNCTION \
bool \
operator OP (const typename Expr<ExprT2>::value_type& a, \
const Expr<ExprT2>& expr2) \
{ \
return a OP toBool(expr2); \
} \
\
template <typename ExprT1> \
KOKKOS_INLINE_FUNCTION \
bool \
operator OP (const Expr<ExprT1>& expr1, \
const typename Expr<ExprT1>::value_type& b) \
{ \
return toBool(expr1) OP b; \
} \
} \
}
KOKKOS_INLINE_FUNCTION bool toBool(const Expr< ExprT > &x)

Definition at line 1458 of file Sacado_Fad_Ops.hpp.

Function Documentation

◆ FAD_UNARYOP_MACRO()

FAD_UNARYOP_MACRO ( operator+  ,
UnaryPlusOp  ,
,
expr.  val(),
expr.  dxi,
expr.  fastAccessDx
)

◆ val()

expr val ( )

◆ dx()

expr expr dx ( )

◆ fastAccessDx()

expr expr expr fastAccessDx ( )

◆ exp()

exp ( expr.  val())

◆ log()

log ( expr.  val())

◆ log10()

log10 ( expr.  val())

◆ sqrt()

sqrt ( expr.  val())

◆ cos()

cos ( expr.  val())

◆ sin()

sin ( expr.  val())

◆ acos()

acos ( expr.  val())

◆ asin()

asin ( expr.  val())

◆ atan()

atan ( expr.  val())

◆ cosh()

cosh ( expr.  val())

◆ sinh()

sinh ( expr.  val())

◆ tanh()

tanh ( expr.  val())

◆ acosh()

acosh ( expr.  val())

◆ asinh()

asinh ( expr.  val())

◆ atanh()

atanh ( expr.  val())

◆ abs()

abs ( expr.  val())

◆ if_then_else() [1/20]

if_then_else ( expr.val() >=  0,
expr.  dxi,
value_type(-expr.dx(i))   
)

◆ if_then_else() [2/20]

if_then_else ( expr.val() >=  0,
expr.  fastAccessDxi,
value_type(-expr.fastAccessDx(i))   
)

◆ fabs()

fabs ( expr.  val())

◆ atan2() [1/3]

atan2 ( expr1.  val(),
expr2.  val() 
)

◆ atan2() [2/3]

expr2 expr2 atan2 ( c.  val(),
expr2.  val() 
)

◆ atan2() [3/3]

expr2 expr2 atan2 ( expr1.  val(),
c.  val() 
)

◆ pow() [1/3]

pow ( expr1.  val(),
expr2.  val() 
)

◆ if_then_else() [3/20]

if_then_else ( expr1.  val() = = value_type(0.0),
value_type(0.0)  ,
value_type((expr2.dx(i) *log(expr1.val())+expr2.val() *expr1.dx(i)/expr1.val()) *pow(expr1.val(), expr2.val()))   
)

◆ if_then_else() [4/20]

if_then_else ( expr1.  val() = = value_type(0.0),
value_type(0.0)  ,
value_type((expr2.fastAccessDx(i) *log(expr1.val())+expr2.val() *expr1.fastAccessDx(i)/expr1.val()) *pow(expr1.val(), expr2.val()))   
)

◆ pow() [2/3]

pow ( c.  val(),
expr2.  val() 
)

◆ pow() [3/3]

pow ( expr1.  val(),
c.  val() 
)

◆ if_then_else() [5/20]

if_then_else ( c.  val() = = value_type(0.0),
value_type(0.0)  ,
value_type(expr2.dx(i) *log(c.val()) *pow(c.val(), expr2.val()))   
)

◆ if_then_else() [6/20]

if_then_else ( expr1.  val() = = value_type(0.0),
value_type(0.0)  ,
value_type(c.val() *expr1.dx(i)/expr1.val() *pow(expr1.val(), c.val()))   
)

◆ if_then_else() [7/20]

if_then_else ( c.  val() = = value_type(0.0),
value_type(0.0)  ,
value_type(expr2.fastAccessDx(i) *log(c.val()) *pow(c.val(), expr2.val()))   
)

◆ if_then_else() [8/20]

if_then_else ( expr1.  val() = = value_type(0.0),
value_type(0.0)  ,
value_type(c.val() *expr1.fastAccessDx(i)/expr1.val() *pow(expr1.val(), c.val()))   
)

◆ if_then_else() [9/20]

if_then_else ( expr1.  val) >=expr2.val(,
expr1.  val(),
expr2.  val() 
)

◆ if_then_else() [10/20]

if_then_else ( expr1.  val) >=expr2.val(,
expr1.  dxi,
expr2.  dx
)

◆ if_then_else() [11/20]

if_then_else ( c.  val) >=expr2.val(,
value_type(c.val())  ,
expr2.  val() 
)

◆ if_then_else() [12/20]

if_then_else ( expr1.  val) >=c.val(,
expr1.  val(),
value_type(c.val())   
)

◆ if_then_else() [13/20]

if_then_else ( c.  val) >=expr2.val(,
value_type(0.0)  ,
expr2.  dx
)

◆ if_then_else() [14/20]

if_then_else ( expr1.  val) >=c.val(,
expr1.  dxi,
value_type(0.0)   
)

◆ if_then_else() [15/20]

if_then_else ( expr1.  val)<=expr2.val(,
expr1.  val(),
expr2.  val() 
)

◆ if_then_else() [16/20]

if_then_else ( expr1.  val)<=expr2.val(,
expr1.  dxi,
expr2.  dx
)

◆ if_then_else() [17/20]

if_then_else ( c.  val)<=expr2.val(,
value_type(c.val())  ,
expr2.  val() 
)

◆ if_then_else() [18/20]

if_then_else ( expr1.  val)<=c.val(,
expr1.  val(),
value_type(c.val())   
)

◆ if_then_else() [19/20]

if_then_else ( c.  val)<=expr2.val(,
value_type(0)  ,
expr2.  dx
)

◆ if_then_else() [20/20]

if_then_else ( expr1.  val)<=c.val(,
expr1.  dxi,
value_type(0)   
)

Definition at line 690 of file Sacado_Fad_Ops.hpp.

Variable Documentation

◆ UnaryMinusOp

UnaryMinusOp

Definition at line 140 of file Sacado_Fad_Ops.hpp.

◆ ExpOp

expr expr expr ExpOp

Definition at line 146 of file Sacado_Fad_Ops.hpp.

◆ LogOp

LogOp

Definition at line 152 of file Sacado_Fad_Ops.hpp.

◆ Log10Op

expr expr Log10Op

Definition at line 158 of file Sacado_Fad_Ops.hpp.

◆ SqrtOp

expr expr SqrtOp

Definition at line 164 of file Sacado_Fad_Ops.hpp.

◆ CosOp

expr expr CosOp

Definition at line 170 of file Sacado_Fad_Ops.hpp.

◆ SinOp

expr expr SinOp

Definition at line 176 of file Sacado_Fad_Ops.hpp.

◆ TanOp

expr expr TanOp

Definition at line 182 of file Sacado_Fad_Ops.hpp.

◆ ACosOp

expr expr ACosOp

Definition at line 190 of file Sacado_Fad_Ops.hpp.

◆ ASinOp

expr expr ASinOp

Definition at line 197 of file Sacado_Fad_Ops.hpp.

◆ ATanOp

expr expr ATanOp

Definition at line 204 of file Sacado_Fad_Ops.hpp.

◆ CoshOp

expr expr CoshOp

Definition at line 210 of file Sacado_Fad_Ops.hpp.

◆ SinhOp

expr expr SinhOp

Definition at line 216 of file Sacado_Fad_Ops.hpp.

◆ TanhOp

expr expr TanhOp

Definition at line 222 of file Sacado_Fad_Ops.hpp.

◆ ACoshOp

expr expr ACoshOp

Definition at line 229 of file Sacado_Fad_Ops.hpp.

◆ ASinhOp

expr expr ASinhOp

Definition at line 237 of file Sacado_Fad_Ops.hpp.

◆ ATanhOp

expr expr ATanhOp

Definition at line 244 of file Sacado_Fad_Ops.hpp.

◆ AbsOp

expr expr AbsOp

Definition at line 251 of file Sacado_Fad_Ops.hpp.

◆ FAbsOp

FAbsOp

Definition at line 257 of file Sacado_Fad_Ops.hpp.

◆ AdditionOp

AdditionOp

Definition at line 590 of file Sacado_Fad_Ops.hpp.

◆ SubtractionOp

expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 SubtractionOp

Definition at line 602 of file Sacado_Fad_Ops.hpp.

◆ DivisionOp

expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 DivisionOp

Definition at line 627 of file Sacado_Fad_Ops.hpp.

◆ Atan2Op

expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr1 expr2 expr1 expr2 expr1 Atan2Op

Definition at line 642 of file Sacado_Fad_Ops.hpp.

◆ PowerOp

expr2 expr2 c c c c PowerOp

Definition at line 656 of file Sacado_Fad_Ops.hpp.

◆ MaxOp

MaxOp

Definition at line 668 of file Sacado_Fad_Ops.hpp.

◆ MinOp

MinOp

Definition at line 680 of file Sacado_Fad_Ops.hpp.