Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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::FAbsOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:84
Sacado::Fad::ACosOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:74
Sacado::Fad::SafeSqrtOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:87
Sacado::Fad::ASinOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:75
Sacado::Fad::ExpOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:67
Sacado::IsFad
Base template specification for whether a type is a Fad type.
Definition:
Sacado_Fad_Exp_Ops_Fwd.hpp:38
Sacado::Fad::TanhOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:79
Sacado::Fad::PowerImpl::Selector::is_fad
static constexpr bool is_fad
Definition:
Sacado_Fad_Ops_Fwd.hpp:107
Sacado::Fad::CosOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:71
Sacado::Fad::Atan2Op
Definition:
Sacado_Fad_Ops_Fwd.hpp:93
Sacado::Fad::ACoshOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:80
Sacado::Fad::PowerImpl::NestedSimd
Definition:
Sacado_Fad_Ops_Fwd.hpp:100
Sacado::Fad::DivisionOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:92
Sacado::Fad::PowerImpl::Nested
Definition:
Sacado_Fad_Ops_Fwd.hpp:99
Sacado::Fad::UnaryPlusOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:65
Sacado::Fad::SqrtOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:70
Sacado::Fad::TanOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:73
Sacado::IsSimdType
Base template specification for IsSimdType.
Definition:
Sacado_Fad_Exp_Ops_Fwd.hpp:37
Sacado::Fad::MinOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:95
Sacado::Fad::AbsOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:83
Sacado::Fad::SinhOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:78
Sacado::Fad::CoshOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:77
Sacado::Fad::PowerImpl::Scalar
Definition:
Sacado_Fad_Ops_Fwd.hpp:101
Sacado::Fad::PowerImpl::Selector::is_simd
static constexpr bool is_simd
Definition:
Sacado_Fad_Ops_Fwd.hpp:105
Sacado::Fad::CbrtOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:85
Sacado::Fad::MaxOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:94
Sacado::Fad::AdditionOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:89
Sacado::Fad::ASinhOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:81
Sacado::Fad::UnaryMinusOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:66
Sacado::Fad::LogOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:68
Sacado::Fad::Multiplicationp
Definition:
Sacado_Fad_Ops_Fwd.hpp:91
Sacado::Fad::Log10Op
Definition:
Sacado_Fad_Ops_Fwd.hpp:69
Sacado::Fad::PowerImpl::Selector
Definition:
Sacado_Fad_Ops_Fwd.hpp:104
value
int value
Definition:
gmock-matchers_test.cc:664
Sacado::Fad::ATanOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:76
Sacado::Fad::SubtractionOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:90
Sacado::Fad::ATanhOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:82
Sacado::Fad::PowerImpl::Selector::type
std::conditional< is_simd &&is_fad, NestedSimd, typename std::conditional< is_simd, Simd, typename std::conditional< is_fad, Nested, Scalar >::type >::type >::type type
Definition:
Sacado_Fad_Ops_Fwd.hpp:121
Sacado::Fad::PowerImpl::Simd
Definition:
Sacado_Fad_Ops_Fwd.hpp:98
Sacado::Fad::SinOp
Definition:
Sacado_Fad_Ops_Fwd.hpp:72
Sacado::Fad::PowerOp
Definition:
Sacado_Fad_Ops.hpp:1146
Generated on Thu Mar 28 2024 09:23:23 for Sacado Package Browser (Single Doxygen Collection) by
1.8.5