35 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATSERIALEXPR_H_
36 #define _BLAZE_MATH_EXPRESSIONS_SMATSERIALEXPR_H_
86 class SMatSerialExpr :
public SparseMatrix< SMatSerialExpr<MT,SO>, SO >
87 ,
private MatSerialExpr
108 enum { smpAssignable = MT::smpAssignable };
151 return sm_.columns();
161 return sm_.nonZeros();
172 return sm_.nonZeros(i);
202 template<
typename T >
204 return sm_.canAlias( alias );
214 template<
typename T >
216 return sm_.isAliased( alias );
226 return sm_.canSMPAssign();
247 template<
typename MT2
273 template<
typename MT2
299 template<
typename MT2
325 template<
typename MT2
352 template<
typename MT2
379 template<
typename MT2
406 template<
typename MT2
433 template<
typename MT2
459 template<
typename MT2
485 template<
typename MT2
512 template<
typename MT2
539 template<
typename MT2
566 template<
typename MT2
593 template<
typename MT2
620 template<
typename MT2
647 template<
typename MT2
696 template<
typename MT
726 template<
typename MT
728 inline const SMatSerialExpr<MT,SO>
serial(
const SMatSerialExpr<MT,SO>& sm )
746 template<
typename MT >
747 struct SMatSerialExprTrait< SMatSerialExpr<MT,false> >
751 typedef typename SelectType< IsSparseMatrix<MT>::value && IsRowMajorMatrix<MT>::value
752 , SMatSerialExpr<MT,false>
753 , INVALID_TYPE >::Type Type;
762 template<
typename MT >
763 struct TSMatSerialExprTrait< SMatSerialExpr<MT,true> >
767 typedef typename SelectType< IsSparseMatrix<MT>::value && IsColumnMajorMatrix<MT>::value
768 , SMatSerialExpr<MT,true>
769 , INVALID_TYPE >::Type Type;
778 template<
typename MT,
bool SO,
bool AF >
779 struct SubmatrixExprTrait< SMatSerialExpr<MT,SO>, AF >
783 typedef typename SerialExprTrait< typename SubmatrixExprTrait<const MT,AF>::Type >::Type Type;
792 template<
typename MT,
bool SO >
793 struct RowExprTrait< SMatSerialExpr<MT,SO> >
797 typedef typename SerialExprTrait< typename RowExprTrait<const MT>::Type >::Type Type;
806 template<
typename MT,
bool SO >
807 struct ColumnExprTrait< SMatSerialExpr<MT,SO> >
811 typedef typename SerialExprTrait< typename ColumnExprTrait<const MT>::Type >::Type Type;
Header file for the SMatSerialExprTrait class template.
void smpSubAssign(DenseMatrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the SMP subtraction assignment of a matrix to dense matrix.
Definition: DenseMatrix.h:152
Header file for the IsSparseMatrix type trait.
#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:242
SMatSerialExpr(const MT &sm)
Constructor for the SMatSerialExpr class.
Definition: SMatSerialExpr.h:116
void smpMultAssign(DenseVector< 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:179
Header file for the ColumnExprTrait class template.
SMatSerialExpr< MT, SO > This
Type of this SMatSerialExpr instance.
Definition: SMatSerialExpr.h:92
Header file for the IsColumnMajorMatrix type trait.
MT::TransposeType TransposeType
Transpose type for expression template evaluations.
Definition: SMatSerialExpr.h:95
size_t columns() const
Returns the current number of columns of the matrix.
Definition: SMatSerialExpr.h:150
const DMatSerialExpr< MT, SO > serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:690
Header file for the Computation base class.
MT::ReturnType ReturnType
Return type for expression template evaluations.
Definition: SMatSerialExpr.h:97
CompressedMatrix< Type, false > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: CompressedMatrix.h:2404
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:70
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:107
Constraint on the data type.
Header file for the TSMatSerialExprTrait class template.
Header file for the SparseMatrix base class.
bool canSMPAssign() const
Returns whether the expression can be used in SMP assignments.
Definition: SMatSerialExpr.h:225
Constraint on the data type.
Operand operand() const
Returns the sparse matrix operand.
Definition: SMatSerialExpr.h:181
void smpAddAssign(DenseMatrix< 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:122
Compile time type selection.The SelectType class template selects one of the two given types T1 and T...
Definition: SelectType.h:59
bool canAlias(const T *alias) const
Returns whether the expression can alias with the given address alias.
Definition: SMatSerialExpr.h:203
MT::OppositeType OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: SMatSerialExpr.h:94
const ResultType CompositeType
Data type for composite expression templates.
Definition: SMatSerialExpr.h:100
size_t nonZeros() const
Returns the number of non-zero elements in the sparse matrix.
Definition: SMatSerialExpr.h:160
size_t rows() const
Returns the current number of rows of the matrix.
Definition: SMatSerialExpr.h:140
MT::ResultType ResultType
Result type for expression template evaluations.
Definition: SMatSerialExpr.h:93
void assign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the assignment of a matrix to a matrix.
Definition: Matrix.h:271
Header file for the SerialExprTrait class template.
CompressedMatrix< Type, false > TransposeType
Transpose type for expression template evaluations.
Definition: CompressedMatrix.h:2405
Constraints on the storage order of matrix types.
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2406
void multAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the multiplication assignment of a matrix to a matrix.
Definition: Matrix.h:361
Header file for the SelectType class template.
Header file for the RowExprTrait class template.
Header file for all forward declarations for expression class templates.
Header file for the MatSerialExpr base class.
Header file for the EnableIf class template.
bool isAliased(const T *alias) const
Returns whether the expression is aliased with the given address alias.
Definition: SMatSerialExpr.h:215
SelectType< IsExpression< MT >::value, const MT, const MT & >::Type Operand
Composite data type of the sparse matrix expression.
Definition: SMatSerialExpr.h:103
void smpAssign(DenseMatrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the SMP assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:92
Header file for the SubmatrixExprTrait class template.
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2407
Header file for run time assertion macros.
Utility type for generic codes.
void addAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the addition assignment of a matrix to a matrix.
Definition: Matrix.h:301
MT::ElementType ElementType
Resulting element type.
Definition: SMatSerialExpr.h:96
void subAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs)
Default implementation of the subtraction assignment of a matrix to matrix.
Definition: Matrix.h:331
Header file for the IsRowMajorMatrix type trait.
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:157
ReturnType operator()(size_t i, size_t j) const
2D-access to the matrix elements.
Definition: SMatSerialExpr.h:128
Operand sm_
Sparse matrix of the serial evaluation expression.
Definition: SMatSerialExpr.h:232
This ResultType
Result type for expression template evaluations.
Definition: CompressedMatrix.h:2403
Header file for basic type definitions.
size_t nonZeros(size_t i) const
Returns the number of non-zero elements in the specified row.
Definition: SMatSerialExpr.h:171
Expression object for the forced serial evaluation of sparse matrices.The SMatSerialExpr class repres...
Definition: Forward.h:95
#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:79
Header file for the IsExpression type trait class.
Header file for the FunctionTrace class.