Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Sacado_Fad_Ops_Fwd.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
//
29
// The forward-mode AD classes in Sacado are a derivative work of the
30
// expression template classes in the Fad package by Nicolas Di Cesare.
31
// The following banner is included in the original Fad source code:
32
//
33
// ************ DO NOT REMOVE THIS BANNER ****************
34
//
35
// Nicolas Di Cesare <Nicolas.Dicesare@ann.jussieu.fr>
36
// http://www.ann.jussieu.fr/~dicesare
37
//
38
// CEMRACS 98 : C++ courses,
39
// templates : new C++ techniques
40
// for scientific computing
41
//
42
//********************************************************
43
//
44
// A short implementation ( not all operators and
45
// functions are overloaded ) of 1st order Automatic
46
// Differentiation in forward mode (FAD) using
47
// EXPRESSION TEMPLATES.
48
//
49
//********************************************************
50
// @HEADER
51
52
#ifndef SACADO_FAD_OPS_FWD_HPP
53
#define SACADO_FAD_OPS_FWD_HPP
54
55
#include <type_traits>
56
57
namespace
Sacado
{
58
59
template
<
typename
T>
struct
IsSimdType
;
60
template
<
typename
T>
struct
IsFad
;
61
template
<
typename
T>
struct
ValueType
;
62
63
namespace
Fad
{
64
65
template
<
typename
ExprT>
class
UnaryPlusOp
;
66
template
<
typename
ExprT>
class
UnaryMinusOp
;
67
template
<
typename
ExprT>
class
ExpOp
;
68
template
<
typename
ExprT>
class
LogOp
;
69
template
<
typename
ExprT>
class
Log10Op
;
70
template
<
typename
ExprT>
class
SqrtOp
;
71
template
<
typename
ExprT>
class
CosOp
;
72
template
<
typename
ExprT>
class
SinOp
;
73
template
<
typename
ExprT>
class
TanOp
;
74
template
<
typename
ExprT>
class
ACosOp
;
75
template
<
typename
ExprT>
class
ASinOp
;
76
template
<
typename
ExprT>
class
ATanOp
;
77
template
<
typename
ExprT>
class
CoshOp
;
78
template
<
typename
ExprT>
class
SinhOp
;
79
template
<
typename
ExprT>
class
TanhOp
;
80
template
<
typename
ExprT>
class
ACoshOp
;
81
template
<
typename
ExprT>
class
ASinhOp
;
82
template
<
typename
ExprT>
class
ATanhOp
;
83
template
<
typename
ExprT>
class
AbsOp
;
84
template
<
typename
ExprT>
class
FAbsOp
;
85
template
<
typename
ExprT>
class
CbrtOp
;
86
template <typename ExprT, bool is_simd = IsSimdType<ExprT>::value>
87
class
SafeSqrtOp
;
88
89
template
<
typename
ExprT1,
typename
ExprT2>
class
AdditionOp
;
90
template
<
typename
ExprT1,
typename
ExprT2>
class
SubtractionOp
;
91
template
<
typename
ExprT1,
typename
ExprT2>
class
Multiplicationp
;
92
template
<
typename
ExprT1,
typename
ExprT2>
class
DivisionOp
;
93
template
<
typename
ExprT1,
typename
ExprT2>
class
Atan2Op
;
94
template
<
typename
ExprT1,
typename
ExprT2>
class
MaxOp
;
95
template
<
typename
ExprT1,
typename
ExprT2>
class
MinOp
;
96
97
namespace
PowerImpl
{
98
struct
Simd
{};
99
struct
Nested
{};
100
struct
NestedSimd
{};
101
struct
Scalar
{};
102
103
template
<
typename
T1,
typename
T2>
104
struct
Selector
{
105
static
constexpr
bool
is_simd
=
106
IsSimdType<T1>::value
||
IsSimdType<T2>::value
;
107
static
constexpr
bool
is_fad
=
108
IsFad< typename Sacado::ValueType<T1>::type
>::value ||
109
IsFad< typename Sacado::ValueType<T2>::type
>::value;
110
typedef
typename
std::conditional<
111
is_simd
&&
is_fad
,
112
NestedSimd
,
113
typename
std::conditional<
114
is_simd
,
115
Simd
,
116
typename
std::conditional<
117
is_fad
,
118
Nested
,
119
Scalar
>
::type
120
>
::type
121
>
::type
type
;
122
};
123
}
124
template
<
typename
ExprT1,
typename
ExprT2,
125
typename
Impl
=
typename
PowerImpl::Selector<ExprT1,ExprT2>::type
>
126
class
PowerOp
;
127
128
}
// namespace Fad
129
130
}
// namespace Sacado
131
132
#endif
// SACADO_FAD_EXPRESSION_HPP
Sacado::Fad::ACosOp
Definition
Sacado_Fad_Ops_Fwd.hpp:74
Sacado::Fad::ACoshOp
Definition
Sacado_Fad_Ops_Fwd.hpp:80
Sacado::Fad::ASinOp
Definition
Sacado_Fad_Ops_Fwd.hpp:75
Sacado::Fad::ASinhOp
Definition
Sacado_Fad_Ops_Fwd.hpp:81
Sacado::Fad::ATanOp
Definition
Sacado_Fad_Ops_Fwd.hpp:76
Sacado::Fad::ATanhOp
Definition
Sacado_Fad_Ops_Fwd.hpp:82
Sacado::Fad::AbsOp
Definition
Sacado_Fad_Ops_Fwd.hpp:83
Sacado::Fad::AdditionOp
Definition
Sacado_Fad_Ops_Fwd.hpp:89
Sacado::Fad::Atan2Op
Definition
Sacado_Fad_Ops_Fwd.hpp:93
Sacado::Fad::CbrtOp
Definition
Sacado_Fad_Ops_Fwd.hpp:85
Sacado::Fad::CosOp
Definition
Sacado_Fad_Ops_Fwd.hpp:71
Sacado::Fad::CoshOp
Definition
Sacado_Fad_Ops_Fwd.hpp:77
Sacado::Fad::DivisionOp
Definition
Sacado_Fad_Ops_Fwd.hpp:92
Sacado::Fad::ExpOp
Definition
Sacado_Fad_Ops_Fwd.hpp:67
Sacado::Fad::FAbsOp
Definition
Sacado_Fad_Ops_Fwd.hpp:84
Sacado::Fad::Log10Op
Definition
Sacado_Fad_Ops_Fwd.hpp:69
Sacado::Fad::LogOp
Definition
Sacado_Fad_Ops_Fwd.hpp:68
Sacado::Fad::MaxOp
Definition
Sacado_Fad_Ops_Fwd.hpp:94
Sacado::Fad::MinOp
Definition
Sacado_Fad_Ops_Fwd.hpp:95
Sacado::Fad::Multiplicationp
Definition
Sacado_Fad_Ops_Fwd.hpp:91
Sacado::Fad::PowerOp
Definition
Sacado_Fad_Ops.hpp:1146
Sacado::Fad::SafeSqrtOp
Definition
Sacado_Fad_Ops_Fwd.hpp:87
Sacado::Fad::SinOp
Definition
Sacado_Fad_Ops_Fwd.hpp:72
Sacado::Fad::SinhOp
Definition
Sacado_Fad_Ops_Fwd.hpp:78
Sacado::Fad::SqrtOp
Definition
Sacado_Fad_Ops_Fwd.hpp:70
Sacado::Fad::SubtractionOp
Definition
Sacado_Fad_Ops_Fwd.hpp:90
Sacado::Fad::TanOp
Definition
Sacado_Fad_Ops_Fwd.hpp:73
Sacado::Fad::TanhOp
Definition
Sacado_Fad_Ops_Fwd.hpp:79
Sacado::Fad::UnaryMinusOp
Definition
Sacado_Fad_Ops_Fwd.hpp:66
Sacado::Fad::UnaryPlusOp
Definition
Sacado_Fad_Ops_Fwd.hpp:65
Sacado::Fad::PowerImpl
Definition
Sacado_Fad_Ops_Fwd.hpp:97
Sacado::Fad
Namespace for forward-mode AD classes.
Definition
Sacado_Fad_Exp_DFad.hpp:38
Sacado::Impl
Definition
Sacado_DynamicArrayTraits.hpp:182
Sacado
Definition
Sacado_mpl_apply.hpp:39
Sacado::Fad::PowerImpl::NestedSimd
Definition
Sacado_Fad_Ops_Fwd.hpp:100
Sacado::Fad::PowerImpl::Nested
Definition
Sacado_Fad_Ops_Fwd.hpp:99
Sacado::Fad::PowerImpl::Scalar
Definition
Sacado_Fad_Ops_Fwd.hpp:101
Sacado::Fad::PowerImpl::Selector
Definition
Sacado_Fad_Ops_Fwd.hpp:104
Sacado::Fad::PowerImpl::Selector::is_simd
static constexpr bool is_simd
Definition
Sacado_Fad_Ops_Fwd.hpp:105
Sacado::Fad::PowerImpl::Selector::type
std::conditional< is_simd &&is_fad, NestedSimd, typenamestd::conditional< is_simd, Simd, typenamestd::conditional< is_fad, Nested, Scalar >::type >::type >::type type
Definition
Sacado_Fad_Ops_Fwd.hpp:121
Sacado::Fad::PowerImpl::Selector::is_fad
static constexpr bool is_fad
Definition
Sacado_Fad_Ops_Fwd.hpp:107
Sacado::Fad::PowerImpl::Simd
Definition
Sacado_Fad_Ops_Fwd.hpp:98
Sacado::IsFad
Base template specification for whether a type is a Fad type.
Definition
Sacado_Traits.hpp:439
Sacado::IsSimdType
Base template specification for IsSimdType.
Definition
Sacado_Traits.hpp:355
Sacado::IsSimdType::value
static const bool value
Definition
Sacado_Traits.hpp:356
Sacado::ValueType
Base template specification for ValueType.
Definition
Sacado_Traits.hpp:320
Generated by
1.17.0