35#ifndef _BLAZE_MATH_EXPRESSIONS_DMATDVECSOLVEEXPR_H_
36#define _BLAZE_MATH_EXPRESSIONS_DMATDVECSOLVEEXPR_H_
83 :
public MatVecSolveExpr< DenseVector< DMatDVecSolveExpr<MT,VT,TF>, TF > >
140 inline size_t size() const noexcept {
171 template<
typename T >
172 inline bool canAlias(
const T* alias )
const noexcept {
173 return (
mat_.isAliased( alias ) ||
vec_.isAliased( alias ) );
183 template<
typename T >
184 inline bool isAliased(
const T* alias )
const noexcept {
185 return (
mat_.isAliased( alias ) ||
vec_.isAliased( alias ) );
207 template<
typename VT2 >
231 template<
typename VT2 >
260 template<
typename VT2 >
261 friend inline void addAssign( DenseVector<VT2,TF>& lhs,
const DMatDVecSolveExpr& rhs )
272 addAssign( *lhs, tmp );
294 template<
typename VT2 >
295 friend inline void subAssign( DenseVector<VT2,TF>& lhs,
const DMatDVecSolveExpr& rhs )
306 subAssign( *lhs, tmp );
328 template<
typename VT2 >
329 friend inline void multAssign( DenseVector<VT2,TF>& lhs,
const DMatDVecSolveExpr& rhs )
340 multAssign( *lhs, tmp );
361 template<
typename VT2 >
362 friend inline void divAssign( DenseVector<VT2,TF>& lhs,
const DMatDVecSolveExpr& rhs )
373 divAssign( *lhs, tmp );
483 else if( (*A).rows() != (*b).size() ) {
488 return ReturnType( *A, *b );
Header file for auxiliary alias declarations.
typename T::ReturnType ReturnType_t
Alias declaration for nested ReturnType type definitions.
Definition: Aliases.h:470
typename T::ResultType ResultType_t
Alias declaration for nested ResultType type definitions.
Definition: Aliases.h:450
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.
Definition: Aliases.h:190
typename T::TransposeType TransposeType_t
Alias declaration for nested TransposeType type definitions.
Definition: Aliases.h:550
Header file for run time assertion macros.
Header file for the function trace functionality.
Header file for the If class template.
Header file for the IsExpression type trait class.
Deactivation of problematic macros.
Header file for the Solver trait.
Expression object for dense matrix-dense vector solvers.
Definition: DMatDVecSolveExpr.h:85
TransposeType_t< ResultType > TransposeType
Transpose type for expression template evaluations.
Definition: DMatDVecSolveExpr.h:101
static constexpr bool simdEnabled
Compilation switch for the expression template evaluation strategy.
Definition: DMatDVecSolveExpr.h:117
const ResultType CompositeType
Data type for composite expression templates.
Definition: DMatDVecSolveExpr.h:106
static constexpr bool smpAssignable
Compilation switch for the expression template assignment strategy.
Definition: DMatDVecSolveExpr.h:120
If_t< IsExpression_v< MT >, const MT, const MT & > LeftOperand
Composite type of the left-hand side dense matrix expression.
Definition: DMatDVecSolveExpr.h:109
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: DMatDVecSolveExpr.h:172
ReturnType_t< ResultType > ReturnType
Return type for expression template evaluations.
Definition: DMatDVecSolveExpr.h:103
RightOperand rightOperand() const noexcept
Returns the right-hand side dense vector operand.
Definition: DMatDVecSolveExpr.h:160
If_t< IsExpression_v< VT >, const VT, const VT & > RightOperand
Composite type of the right-hand side dense vector expression.
Definition: DMatDVecSolveExpr.h:112
LeftOperand leftOperand() const noexcept
Returns the left-hand side dense matrix operand.
Definition: DMatDVecSolveExpr.h:150
ResultType_t< MT > MRT
Result type of the left-hand side dense matrix expression.
Definition: DMatDVecSolveExpr.h:88
ResultType_t< VT > VRT
Result type of the right-hand side dense vector expression.
Definition: DMatDVecSolveExpr.h:89
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DMatDVecSolveExpr.h:184
SolveTrait_t< MRT, VRT > ResultType
Result type for expression template evaluations.
Definition: DMatDVecSolveExpr.h:100
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: DMatDVecSolveExpr.h:140
LeftOperand mat_
Left-hand side dense matrix of the solver expression.
Definition: DMatDVecSolveExpr.h:191
DMatDVecSolveExpr(const MT &mat, const VT &vec) noexcept
Constructor for the DMatDVecSolveExpr class.
Definition: DMatDVecSolveExpr.h:129
RightOperand vec_
Right-hand side dense vector of the solver expression.
Definition: DMatDVecSolveExpr.h:192
ElementType_t< ResultType > ElementType
Resulting element type.
Definition: DMatDVecSolveExpr.h:102
Base class for dense matrices.
Definition: DenseMatrix.h:82
Base class for N-dimensional dense vectors.
Definition: DenseVector.h:77
Base class for sparse vectors.
Definition: SparseVector.h:72
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
Constraint on the data type.
Header file for the Computation base class.
Header file for the DenseVector base class.
Header file for the MatVecSolveExpr base class.
decltype(auto) serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:812
decltype(auto) solve(const DenseMatrix< MT, SO > &A, const DenseVector< VT, TF > &b)
Solving the given linear system of equations ( ).
Definition: DMatDVecSolveExpr.h:476
#define BLAZE_CONSTRAINT_MUST_NOT_REQUIRE_EVALUATION(T)
Constraint on the data type.
Definition: RequiresEvaluation.h:81
#define BLAZE_CONSTRAINT_MUST_FORM_VALID_MATVECSOLVEEXPR(T1, T2)
Constraint on the data type.
Definition: MatVecSolveExpr.h:104
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T, TF)
Constraint on the data type.
Definition: TransposeFlag.h:63
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_MATRIX_TYPE(T)
Constraint on the data type.
Definition: DenseMatrix.h:61
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_VECTOR_TYPE(T)
Constraint on the data type.
Definition: DenseVector.h:61
typename SolveTrait< T1, T2 >::Type SolveTrait_t
Auxiliary alias declaration for the SolveTrait class template.
Definition: SolveTrait.h:138
bool isSquare(const Matrix< MT, SO > &matrix) noexcept
Checks if the given matrix is a square matrix.
Definition: Matrix.h:1383
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
typename If< Condition >::template Type< T1, T2 > If_t
Auxiliary alias template for the If class template.
Definition: If.h:108
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
Header file for the exception macros of the math module.
Constraint on the data type.
Header file for all forward declarations for expression class templates.
Header file for the serial shim.
Base class for all compute expression templates.
Definition: Computation.h:68
Base class for all single LSE solver expression templates.
Definition: MatVecSolveExpr.h:69
Header file for basic type definitions.