35 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATSERIALEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_SMATSERIALEXPR_H_ 85 :
public MatSerialExpr< SparseMatrix< SMatSerialExpr<MT,SO>, SO > >
106 enum :
bool { smpAssignable = MT::smpAssignable };
142 if( i >=
sm_.rows() ) {
145 if( j >=
sm_.columns() ) {
157 inline size_t rows() const noexcept {
168 return sm_.columns();
178 return sm_.nonZeros();
189 return sm_.nonZeros(i);
219 template<
typename T >
220 inline bool canAlias(
const T* alias )
const noexcept {
221 return sm_.canAlias( alias );
231 template<
typename T >
232 inline bool isAliased(
const T* alias )
const noexcept {
233 return sm_.isAliased( alias );
243 return sm_.canSMPAssign();
264 template<
typename MT2
273 assign( ~lhs, rhs.sm_ );
290 template<
typename MT2
299 assign( ~lhs, rhs.sm_ );
316 template<
typename MT2
325 addAssign( ~lhs, rhs.sm_ );
342 template<
typename MT2
351 addAssign( ~lhs, rhs.sm_ );
369 template<
typename MT2
378 subAssign( ~lhs, rhs.sm_ );
396 template<
typename MT2
405 subAssign( ~lhs, rhs.sm_ );
423 template<
typename MT2
432 schurAssign( ~lhs, rhs.sm_ );
450 template<
typename MT2
459 schurAssign( ~lhs, rhs.sm_ );
477 template<
typename MT2
486 multAssign( ~lhs, rhs.sm_ );
504 template<
typename MT2
513 multAssign( ~lhs, rhs.sm_ );
530 template<
typename MT2
539 assign( ~lhs, rhs.sm_ );
556 template<
typename MT2
565 assign( ~lhs, rhs.sm_ );
583 template<
typename MT2
592 addAssign( ~lhs, rhs.sm_ );
610 template<
typename MT2
619 addAssign( ~lhs, rhs.sm_ );
637 template<
typename MT2
646 subAssign( ~lhs, rhs.sm_ );
664 template<
typename MT2
673 subAssign( ~lhs, rhs.sm_ );
691 template<
typename MT2
700 schurAssign( ~lhs, rhs.sm_ );
718 template<
typename MT2
727 schurAssign( ~lhs, rhs.sm_ );
745 template<
typename MT2
754 multAssign( ~lhs, rhs.sm_ );
772 template<
typename MT2
781 multAssign( ~lhs, rhs.sm_ );
821 template<
typename MT
852 template<
typename MT
872 template<
typename MT,
bool SO >
873 struct Size< SMatSerialExpr<MT,SO>, 0UL >
874 :
public Size<MT,0UL>
877 template<
typename MT,
bool SO >
878 struct Size< SMatSerialExpr<MT,SO>, 1UL >
879 :
public Size<MT,1UL>
895 template<
typename MT,
bool SO >
913 template<
typename MT,
bool SO >
931 template<
typename MT,
bool SO >
932 struct IsLower< SMatSerialExpr<MT,SO> >
949 template<
typename MT,
bool SO >
967 template<
typename MT,
bool SO >
985 template<
typename MT,
bool SO >
986 struct IsUpper< SMatSerialExpr<MT,SO> >
1003 template<
typename MT,
bool SO >
1021 template<
typename MT,
bool SO >
Header file for auxiliary alias declarations.
SMatSerialExpr(const MT &sm) noexcept
Constructor for the SMatSerialExpr class.
Definition: SMatSerialExpr.h:114
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: SMatSerialExpr.h:232
ResultType_< MT > ResultType
Result type for expression template evaluations.
Definition: SMatSerialExpr.h:91
Header file for the IsUniUpper type trait.
EnableIf_< IsDenseMatrix< MT1 > > smpSchurAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the SMP Schur product assignment of a matrix to dense matrix.
Definition: DenseMatrix.h:196
Header file for basic type definitions.
EnableIf_< IsDenseMatrix< MT1 > > smpSubAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the SMP subtraction assignment of a matrix to dense matrix.
Definition: DenseMatrix.h:164
#define BLAZE_CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER(T, SO)
Constraint on the data type.In case the given data type T is not a dense or sparse matrix type and in...
Definition: StorageOrder.h:63
size_t nonZeros() const
Returns the number of non-zero elements in the sparse matrix.
Definition: SMatSerialExpr.h:177
EnableIf_< IsDenseVector< VT1 > > smpMultAssign(Vector< VT1, TF1 > &lhs, const Vector< VT2, TF2 > &rhs)
Default implementation of the SMP multiplication assignment of a vector to a dense vector...
Definition: DenseVector.h:193
Compile time check for lower triangular matrices.This type trait tests whether or not the given templ...
Definition: IsLower.h:87
Header file for the Computation base class.
Compile time check for upper triangular matrices.This type trait tests whether or not the given templ...
Definition: IsUpper.h:87
ReturnType at(size_t i, size_t j) const
Checked access to the matrix elements.
Definition: SMatSerialExpr.h:141
If_< IsExpression< MT >, const MT, const MT &> Operand
Composite data type of the sparse matrix expression.
Definition: SMatSerialExpr.h:101
Header file for the IsUniLower type trait.
typename T::ResultType ResultType_
Alias declaration for nested ResultType type definitions.The ResultType_ alias declaration provides a...
Definition: Aliases.h:343
EnableIf_< IsDenseMatrix< MT1 > > smpAddAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the SMP addition assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:133
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:80
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:129
typename T::ReturnType ReturnType_
Alias declaration for nested ReturnType type definitions.The ReturnType_ alias declaration provides a...
Definition: Aliases.h:363
Header file for the SparseMatrix base class.
Constraint on the data type.
Compile time check for upper unitriangular matrices.This type trait tests whether or not the given te...
Definition: IsUniUpper.h:86
Header file for the IsStrictlyUpper type trait.
Header file for the IsSymmetric type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Operand operand() const noexcept
Returns the sparse matrix operand.
Definition: SMatSerialExpr.h:198
Header file for the If class template.
EnableIf_< IsDenseMatrix< MT1 > > smpAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the SMP assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:102
#define BLAZE_THROW_OUT_OF_RANGE(MESSAGE)
Macro for the emission of a std::out_of_range exception.This macro encapsulates the default way of Bl...
Definition: Exception.h:331
size_t rows() const noexcept
Returns the current number of rows of the matrix.
Definition: SMatSerialExpr.h:157
ElementType_< MT > ElementType
Resulting element type.
Definition: SMatSerialExpr.h:94
typename T::ElementType ElementType_
Alias declaration for nested ElementType type definitions.The ElementType_ alias declaration provides...
Definition: Aliases.h:163
Header file for the IsLower type trait.
TransposeType_< MT > TransposeType
Transpose type for expression template evaluations.
Definition: SMatSerialExpr.h:93
Constraints on the storage order of matrix types.
Compile time check for symmetric matrices.This type trait tests whether or not the given template par...
Definition: IsSymmetric.h:85
Header file for the exception macros of the math module.
Compile time check for strictly upper triangular matrices.This type trait tests whether or not the gi...
Definition: IsStrictlyUpper.h:86
Header file for all forward declarations for expression class templates.
Header file for the MatSerialExpr base class.
Header file for the IsStrictlyLower type trait.
Operand sm_
Sparse matrix of the serial evaluation expression.
Definition: SMatSerialExpr.h:249
Compile time check for lower unitriangular matrices.This type trait tests whether or not the given te...
Definition: IsUniLower.h:86
Header file for run time assertion macros.
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: SMatSerialExpr.h:242
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: SMatSerialExpr.h:220
typename If< T1, T2, T3 >::Type If_
Auxiliary alias declaration for the If class template.The If_ alias declaration provides a convenient...
Definition: If.h:154
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:94
Compile time check for Hermitian matrices.This type trait tests whether or not the given template par...
Definition: IsHermitian.h:85
size_t nonZeros(size_t i) const
Returns the number of non-zero elements in the specified row.
Definition: SMatSerialExpr.h:188
decltype(auto) serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:816
typename T::OppositeType OppositeType_
Alias declaration for nested OppositeType type definitions.The OppositeType_ alias declaration provid...
Definition: Aliases.h:263
ReturnType_< MT > ReturnType
Return type for expression template evaluations.
Definition: SMatSerialExpr.h:95
OppositeType_< MT > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: SMatSerialExpr.h:92
const ResultType CompositeType
Data type for composite expression templates.
Definition: SMatSerialExpr.h:98
Compile time check for strictly lower triangular matrices.This type trait tests whether or not the gi...
Definition: IsStrictlyLower.h:86
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:3080
Compile time evaluation of the size of vectors and matrices.The Size type trait evaluates the size of...
Definition: Size.h:80
ReturnType operator()(size_t i, size_t j) const
2D-access to the matrix elements.
Definition: SMatSerialExpr.h:126
typename T::TransposeType TransposeType_
Alias declaration for nested TransposeType type definitions.The TransposeType_ alias declaration prov...
Definition: Aliases.h:423
Header file for the IsUpper type trait.
size_t columns() const noexcept
Returns the current number of columns of the matrix.
Definition: SMatSerialExpr.h:167
Expression object for the forced serial evaluation of sparse matrices.The SMatSerialExpr class repres...
Definition: Forward.h:115
Header file for the IsHermitian type trait.
Header file for the Size type trait.
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101
#define BLAZE_CONSTRAINT_MUST_BE_SPARSE_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is not a sparse, N-dimensional matrix type...
Definition: SparseMatrix.h:61
Header file for the IsExpression type trait class.
Header file for the function trace functionality.