Sacado Package Browser (Single Doxygen Collection)
Version of the Day
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
#ifdef HAVE_SACADO_CXX11
86
template
<
typename
ExprT>
class
CbrtOp
;
87
#endif
88
template <typename ExprT, bool is_simd = IsSimdType<ExprT>::value
>
89
class
SafeSqrtOp
;
90
91
template
<
typename
ExprT1,
typename
ExprT2>
class
AdditionOp
;
92
template
<
typename
ExprT1,
typename
ExprT2>
class
SubtractionOp
;
93
template
<
typename
ExprT1,
typename
ExprT2>
class
Multiplicationp
;
94
template
<
typename
ExprT1,
typename
ExprT2>
class
DivisionOp
;
95
template
<
typename
ExprT1,
typename
ExprT2>
class
Atan2Op
;
96
template
<
typename
ExprT1,
typename
ExprT2>
class
MaxOp
;
97
template
<
typename
ExprT1,
typename
ExprT2>
class
MinOp
;
98
99
namespace
PowerImpl {
100
struct
Simd
{};
101
struct
Nested
{};
102
struct
NestedSimd
{};
103
struct
Scalar
{};
104
105
template
<
typename
T1,
typename
T2>
106
struct
Selector
{
107
static
constexpr
bool
is_simd
=
108
IsSimdType<T1>::value
||
IsSimdType<T2>::value
;
109
static
constexpr
bool
is_fad
=
110
IsFad< typename Sacado::ValueType<T1>::type
>
::value
||
111
IsFad< typename Sacado::ValueType<T2>::type
>
::value
;
112
typedef
typename
std::conditional<
113
is_simd
&&
is_fad
,
114
NestedSimd
,
115
typename
std::conditional<
116
is_simd
,
117
Simd
,
118
typename
std::conditional<
119
is_fad
,
120
Nested
,
121
Scalar
>
::type
122
>
::type
123
>
::type
type
;
124
};
125
}
126
template
<
typename
ExprT1,
typename
ExprT2,
127
typename
Impl =
typename
PowerImpl::Selector<ExprT1,ExprT2>::type
>
128
class
PowerOp
;
129
130
}
// namespace Fad
131
132
}
// namespace Sacado
133
134
#endif
// SACADO_FAD_EXPRESSION_HPP
CbrtOp
CbrtOp
Definition
Sacado_Fad_Exp_Ops.hpp:284
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:91
Sacado::Fad::Atan2Op
Definition
Sacado_Fad_Ops_Fwd.hpp:95
Sacado::Fad::BLAS
Fad specializations for Teuchos::BLAS wrappers.
Definition
Sacado_Fad_BLAS.hpp:184
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:94
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:96
Sacado::Fad::MinOp
Definition
Sacado_Fad_Ops_Fwd.hpp:97
Sacado::Fad::Multiplicationp
Definition
Sacado_Fad_Ops_Fwd.hpp:93
Sacado::Fad::PowerOp
Definition
Sacado_Fad_Ops.hpp:1148
Sacado::Fad::SafeSqrtOp
Definition
Sacado_Fad_Ops_Fwd.hpp:89
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:92
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
value
int value
Definition
gmock-matchers_test.cc:664
Sacado
Definition
Sacado_mpl_apply.hpp:39
Sacado::Fad::PowerImpl::NestedSimd
Definition
Sacado_Fad_Ops_Fwd.hpp:102
Sacado::Fad::PowerImpl::Nested
Definition
Sacado_Fad_Ops_Fwd.hpp:101
Sacado::Fad::PowerImpl::Scalar
Definition
Sacado_Fad_Ops_Fwd.hpp:103
Sacado::Fad::PowerImpl::Selector
Definition
Sacado_Fad_Ops_Fwd.hpp:106
Sacado::Fad::PowerImpl::Selector::is_simd
static constexpr bool is_simd
Definition
Sacado_Fad_Ops_Fwd.hpp:107
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:123
Sacado::Fad::PowerImpl::Selector::is_fad
static constexpr bool is_fad
Definition
Sacado_Fad_Ops_Fwd.hpp:109
Sacado::Fad::PowerImpl::Simd
Definition
Sacado_Fad_Ops_Fwd.hpp:100
Sacado::IsSimdType
Base template specification for IsSimdType.
Definition
Sacado_Traits.hpp:355
Generated by
1.10.0