Sacado Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Sacado_Fad_Exp_Ops_Fwd.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Sacado Package
4 //
5 // Copyright 2006 NTESS and the Sacado contributors.
6 // SPDX-License-Identifier: LGPL-2.1-or-later
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef SACADO_EXP_FAD_OPS_FWD_HPP
11 #define SACADO_EXP_FAD_OPS_FWD_HPP
12 
13 #include <type_traits>
14 
15 namespace Sacado {
16 
17  template <typename T> struct IsSimdType;
18  template <typename T> struct IsFad;
19  template <typename T> struct ValueType;
20 
21  namespace Fad {
22  namespace Exp {
23 
24  template <typename T, typename E> class UnaryPlusOp;
25  template <typename T, typename E> class UnaryMinusOp;
26  template <typename T, typename E> class ExpOp;
27  template <typename T, typename E> class LogOp;
28  template <typename T, typename E> class Log10Op;
29  template <typename T, typename E> class SqrtOp;
30  template <typename T, typename E> class CosOp;
31  template <typename T, typename E> class SinOp;
32  template <typename T, typename E> class TanOp;
33  template <typename T, typename E> class ACosOp;
34  template <typename T, typename E> class ASinOp;
35  template <typename T, typename E> class ATanOp;
36  template <typename T, typename E> class CoshOp;
37  template <typename T, typename E> class SinhOp;
38  template <typename T, typename E> class TanhOp;
39  template <typename T, typename E> class ACoshOp;
40  template <typename T, typename E> class ASinhOp;
41  template <typename T, typename E> class ATanhOp;
42  template <typename T, typename E> class AbsOp;
43  template <typename T, typename E> class FAbsOp;
44  template <typename T, typename E> class CbrtOp;
46  class SafeSqrtOp;
47 
48  template <typename T1, typename T2, bool, bool, typename E>
49  class AdditionOp;
50  template <typename T1, typename T2, bool, bool, typename E>
52  template <typename T1, typename T2, bool, bool, typename E>
54  template <typename T1, typename T2, bool, bool, typename E>
55  class DivisionOp;
56  template <typename T1, typename T2, bool, bool, typename E> class Atan2Op;
57  template <typename T1, typename T2, bool, bool, typename E> class MaxOp;
58  template <typename T1, typename T2, bool, bool, typename E> class MinOp;
59 
60  namespace PowerImpl {
61  struct Simd {};
62  struct Nested {};
63  struct NestedSimd {};
64  struct Scalar {};
65 
66  template <typename T1, typename T2>
67  struct Selector {
68  static constexpr bool is_simd =
70  static constexpr bool is_fad =
73  typedef typename std::conditional<
74  is_simd && is_fad,
75  NestedSimd,
76  typename std::conditional<
77  is_simd,
78  Simd,
79  typename std::conditional<
80  is_fad,
81  Nested,
83  >::type
85  };
86  }
87  template <typename T1, typename T2, bool, bool, typename E,
88  typename Impl = typename PowerImpl::Selector<T1,T2>::type >
89  class PowerOp;
90 
91  } // namespace Exp
92  } // namespace Fad
93 
94 } // namespace Sacado
95 
96 #endif // SACADO_FAD_EXPRESSION_HPP
std::conditional< is_simd &&is_fad, NestedSimd, typename std::conditional< is_simd, Simd, typename std::conditional< is_fad, Nested, Scalar >::type >::type >::type type
Base template specification for whether a type is a Fad type.
Base template specification for IsSimdType.
#define T2(r, f)
Definition: Sacado_rad.hpp:558
#define T1(r, f)
Definition: Sacado_rad.hpp:583
int value
Base template specification for ValueType.