41#include "../expressions/complex/complexPredef.hpp"
43#include "../misc/self.hpp"
44#include "expressionTraits.hpp"
50 template<
typename T_Type,
typename>
54 namespace ComputationTraits {
63 template<
typename T_Jacobian,
typename =
void>
67 "Instantiation of unspecialized Jacobian transpose.");
78 template<
typename Jacobian>
91 template<
typename T_Lhs,
typename T_Rhs,
typename =
void>
106 template<
typename Lhs,
typename Rhs>
115#define CODI_CREATE_TRANSPOSE(Type, RType, trans) \
117 struct ComputationTraits::TransposeImpl<Type> { \
119 using Jacobian = Type; \
120 using Return = RType; \
121 static Return transpose(Type const& jacobian) { \
129#define CODI_CREATE_UPDATE(LhsType, RhsType, up) \
131 struct ComputationTraits::UpdateImpl<LhsType, RhsType> { \
133 using Lhs = LhsType; \
134 using Rhs = RhsType; \
135 using Return = LhsType&; \
136 static Return update(Lhs& lhs, Rhs const& rhs) { \
141#ifndef DOXYGEN_DISABLE
159 ExpressionTraits::isExpression<T> &
160 std::is_floating_point<typename RealTraits::TraitsImplementation<T, void>::PassiveReal>::value>> {
171 template<
typename Inner>
174 using Jacobian = std::complex<Inner>;
175 using Return = std::complex<Inner>;
178 return std::conj(jacobian);
183 template<
typename Inner>
186 using Jacobian = ActiveComplex<Inner>;
187 using Return = ActiveComplex<Inner>;
190 return conj(jacobian);
199 template<
typename Inner>
203 using Rhs = std::complex<Inner>;
208 return lhs += std::real(rhs);
214 template<
typename Inner>
218 using Rhs = ActiveComplex<Inner>;
223 return lhs +=
real(rhs);
#define CODI_INLINE
See codi::Config::ForcedInlines.
Definition config.h:469
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition macros.hpp:96
#define CODI_ANY
Used in default declarations of expression templates.
Definition macros.hpp:100
#define CODI_STATIC_ASSERT(cond, message)
Static assert definition for CoDiPack. Not evaluated in IDE mode.
Definition macros.hpp:129
Traits for values that can be used as real values, e.g. double, float, codi::RealReverse etc....
Definition stdComplex.hpp:204
CoDiPack - Code Differentiation Package.
Definition codi.hpp:94
inlineauto conj(ExpressionInterface< Real, Arg > const &arg)
Function overload for FUNCTION.
Definition allOperators.hpp:71
CODI_CREATE_TRANSPOSE(Vector4, Vector4Transpose, jacobian.transpose())
Transpose operation for the vector type.
inlineauto real(ExpressionInterface< std::complex< Real >, Arg > const &arg)
Function overload for FUNCTION.
Definition allOperators.hpp:75
Definition stdComplex.hpp:107
Perform or if entries are complex. No default implementation available.
Definition computationTraits.hpp:64
T_Jacobian Jacobian
See TransposeImpl.
Definition computationTraits.hpp:68
static Return transpose(Jacobian const &jacobian)
Perform or if entries are complex.
int Return
Deduced return type.
Definition computationTraits.hpp:70
Perform the operation lhs += rhs. Default logic uses operator +=.
Definition computationTraits.hpp:92
static Return update(Lhs &lhs, Rhs const &rhs)
Perform lhs += rhs.
Definition computationTraits.hpp:100
T_Rhs Rhs
See UpdateImpl.
Definition computationTraits.hpp:95
T_Lhs Lhs
See UpdateImpl.
Definition computationTraits.hpp:94
Lhs & Return
Deduced return type.
Definition computationTraits.hpp:97
Default implementation of the Jacobian interface.
Definition jacobian.hpp:60
Common traits for all types used as real values.
Definition realTraits.hpp:66