35 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATSERIALEXPR_H_
36 #define _BLAZE_MATH_EXPRESSIONS_SMATSERIALEXPR_H_
91 class SMatSerialExpr :
public SparseMatrix< SMatSerialExpr<MT,SO>, SO >
92 ,
private MatSerialExpr
113 enum { smpAssignable = MT::smpAssignable };
156 return sm_.columns();
166 return sm_.nonZeros();
177 return sm_.nonZeros(i);
207 template<
typename T >
209 return sm_.canAlias( alias );
219 template<
typename T >
221 return sm_.isAliased( alias );
231 return sm_.canSMPAssign();
252 template<
typename MT2
278 template<
typename MT2
304 template<
typename MT2
330 template<
typename MT2
357 template<
typename MT2
384 template<
typename MT2
411 template<
typename MT2
438 template<
typename MT2
464 template<
typename MT2
490 template<
typename MT2
517 template<
typename MT2
544 template<
typename MT2
571 template<
typename MT2
598 template<
typename MT2
625 template<
typename MT2
652 template<
typename MT2
701 template<
typename MT
731 template<
typename MT
733 inline const SMatSerialExpr<MT,SO>
serial(
const SMatSerialExpr<MT,SO>& sm )
751 template<
typename MT,
bool SO >
752 struct Rows< SMatSerialExpr<MT,SO> > :
public Rows<MT>
768 template<
typename MT,
bool SO >
769 struct Columns< SMatSerialExpr<MT,SO> > :
public Columns<MT>
785 template<
typename MT,
bool SO >
786 struct IsSymmetric< SMatSerialExpr<MT,SO> > :
public IsTrue< IsSymmetric<MT>::value >
802 template<
typename MT,
bool SO >
803 struct IsLower< SMatSerialExpr<MT,SO> > :
public IsTrue< IsLower<MT>::value >
819 template<
typename MT,
bool SO >
820 struct IsUpper< SMatSerialExpr<MT,SO> > :
public IsTrue< IsUpper<MT>::value >
836 template<
typename MT >
837 struct SMatSerialExprTrait< SMatSerialExpr<MT,false> >
841 typedef typename SelectType< IsSparseMatrix<MT>::value && IsRowMajorMatrix<MT>::value
842 , SMatSerialExpr<MT,false>
843 , INVALID_TYPE >::Type Type;
852 template<
typename MT >
853 struct TSMatSerialExprTrait< SMatSerialExpr<MT,true> >
857 typedef typename SelectType< IsSparseMatrix<MT>::value && IsColumnMajorMatrix<MT>::value
858 , SMatSerialExpr<MT,true>
859 , INVALID_TYPE >::Type Type;
868 template<
typename MT,
bool SO,
bool AF >
869 struct SubmatrixExprTrait< SMatSerialExpr<MT,SO>, AF >
873 typedef typename SerialExprTrait< typename SubmatrixExprTrait<const MT,AF>::Type >::Type Type;
882 template<
typename MT,
bool SO >
883 struct RowExprTrait< SMatSerialExpr<MT,SO> >
887 typedef typename SerialExprTrait< typename RowExprTrait<const MT>::Type >::Type Type;
896 template<
typename MT,
bool SO >
897 struct ColumnExprTrait< SMatSerialExpr<MT,SO> >
901 typedef typename SerialExprTrait< typename ColumnExprTrait<const MT>::Type >::Type Type;
BLAZE_ALWAYS_INLINE 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:879
Header file for the Rows type trait.
Header file for the SMatSerialExprTrait class template.
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:121
Header file for the ColumnExprTrait class template.
SMatSerialExpr< MT, SO > This
Type of this SMatSerialExpr instance.
Definition: SMatSerialExpr.h:97
Header file for the IsColumnMajorMatrix type trait.
MT::TransposeType TransposeType
Transpose type for expression template evaluations.
Definition: SMatSerialExpr.h:100
size_t columns() const
Returns the current number of columns of the matrix.
Definition: SMatSerialExpr.h:155
const DMatSerialExpr< MT, SO > serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:695
Header file for the Computation base class.
MT::ReturnType ReturnType
Return type for expression template evaluations.
Definition: SMatSerialExpr.h:102
CompressedMatrix< Type, false > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: CompressedMatrix.h:2474
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:230
Constraint on the data type.
Operand operand() const
Returns the sparse matrix operand.
Definition: SMatSerialExpr.h:186
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:208
Header file for the IsSymmetric type trait.
MT::OppositeType OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: SMatSerialExpr.h:99
const ResultType CompositeType
Data type for composite expression templates.
Definition: SMatSerialExpr.h:105
size_t nonZeros() const
Returns the number of non-zero elements in the sparse matrix.
Definition: SMatSerialExpr.h:165
size_t rows() const
Returns the current number of rows of the matrix.
Definition: SMatSerialExpr.h:145
BLAZE_ALWAYS_INLINE 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:635
Header file for the Columns type trait.
MT::ResultType ResultType
Result type for expression template evaluations.
Definition: SMatSerialExpr.h:98
Header file for the IsLower type trait.
Header file for the SerialExprTrait class template.
CompressedMatrix< Type, false > TransposeType
Transpose type for expression template evaluations.
Definition: CompressedMatrix.h:2475
Constraints on the storage order of matrix types.
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2476
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.
bool isAliased(const T *alias) const
Returns whether the expression is aliased with the given address alias.
Definition: SMatSerialExpr.h:220
SelectType< IsExpression< MT >::value, const MT, const MT & >::Type Operand
Composite data type of the sparse matrix expression.
Definition: SMatSerialExpr.h:108
EnableIf< IsDenseMatrix< MT1 > >::Type 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:160
Header file for the SubmatrixExprTrait class template.
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2477
Header file for run time assertion macros.
EnableIf< IsDenseMatrix< MT1 > >::Type 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:98
Utility type for generic codes.
BLAZE_ALWAYS_INLINE 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:742
MT::ElementType ElementType
Resulting element type.
Definition: SMatSerialExpr.h:101
Header file for the IsRowMajorMatrix type trait.
EnableIf< IsDenseMatrix< MT1 > >::Type 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:129
#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:133
Operand sm_
Sparse matrix of the serial evaluation expression.
Definition: SMatSerialExpr.h:237
This ResultType
Result type for expression template evaluations.
Definition: CompressedMatrix.h:2473
Header file for the IsTrue value trait.
Header file for basic type definitions.
Header file for the IsUpper type trait.
size_t nonZeros(size_t i) const
Returns the number of non-zero elements in the specified row.
Definition: SMatSerialExpr.h:176
Expression object for the forced serial evaluation of sparse matrices.The SMatSerialExpr class repres...
Definition: Forward.h:95
EnableIf< IsDenseVector< VT1 > >::Type 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:189
#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.
BLAZE_ALWAYS_INLINE 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:849