41#include "../../../expressions/lhsExpressionInterface.hpp"
42#include "../../../misc/exceptions.hpp"
43#include "../../../traits/tapeTraits.hpp"
44#include "../../data/direction.hpp"
45#include "linearSystemFlags.hpp"
46#include "linearSystemInterface.hpp"
56 template<
typename T_LinearSystem>
63 CODI_DEFAULT_LHS_EXPRESSION);
65 using Matrix =
typename LinearSystem::Matrix;
68 using Vector =
typename LinearSystem::Vector;
74 using Real =
typename Type::Real;
75 using Identifier =
typename Type::Identifier;
79 static void dyadicProxy(Identifier&, Real&, Real&) {}
85 #pragma GCC diagnostic push
86 #pragma GCC diagnostic ignored "-Waddress"
92 &LinearSystem::iterateDyadic) !=
113 #pragma GCC diagnostic pop
#define CODI_INLINE
See codi::Config::ForcedInlines.
Definition config.h:457
#define CODI_DD(Type, Default)
Abbreviation for CODI_DECLARE_DEFAULT.
Definition macros.hpp:94
#define CODI_T(...)
Abbreviation for CODI_TEMPLATE.
Definition macros.hpp:111
CoDiPack - Code Differentiation Package.
Definition codi.hpp:90
Definition linearSystemInterface.hpp:109
MatrixReal * transposeMatrix(MatrixReal *A_v)
Create a transposed matrix.
Definition linearSystemInterface.hpp:208
void subtractMultiply(VectorReal *t, VectorReal const *b_d, MatrixReal const *A_d, VectorReal const *x)
Computes t = b_d - A_d * x.
Definition linearSystemInterface.hpp:219
void iterateDyadic(Func func, MatrixIdentifier *mat_id, VectorReal *x_v, VectorReal *b_b)
Definition linearSystemInterface.hpp:203
void solveSystemPrimal(MatrixReal const *A, VectorReal const *b, VectorReal *x)
Definition linearSystemInterface.hpp:231
Definition linearSystemSpecializationDetection.hpp:57
T_LinearSystem LinearSystem
See LinearSystemOverloadDetection.
Definition linearSystemSpecializationDetection.hpp:58
typename LinearSystem::MatrixReal MatrixReal
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:66
typename LinearSystem::VectorIdentifier VectorIdentifier
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:70
typename LinearSystem::Vector Vector
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:68
static bool SupportsForwardMode()
True if all functions for the forward mode support are specialized.
Definition linearSystemSpecializationDetection.hpp:122
static bool IsSubtractMultiplyImplemented()
Checks if subtractMultiply is specialized in LinearSystem.
Definition linearSystemSpecializationDetection.hpp:103
static bool IsDyadicImplemented()
Checks if iterateDyadic is specialized in LinearSystem.
Definition linearSystemSpecializationDetection.hpp:90
typename LinearSystem::Matrix Matrix
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:65
typename LinearSystem::VectorReal VectorReal
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:69
static bool IsSolvePrimalImplemented()
Checks if solveSystemPrimal is specialized in LinearSystem.
Definition linearSystemSpecializationDetection.hpp:108
static bool SupportsReverseMode()
True if all functions for the reverse mode support are specialized.
Definition linearSystemSpecializationDetection.hpp:117
typename LinearSystem::MatrixIdentifier MatrixIdentifier
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:67
typename LinearSystem::Type Type
See LinearSystemInterfaceTypes.
Definition linearSystemSpecializationDetection.hpp:62
static bool IsTransposeImplemented()
Checks if transposeMatrix is specialized in LinearSystem.
Definition linearSystemSpecializationDetection.hpp:98