35 #ifndef _BLAZE_MATH_EXPRESSIONS_SMATEVALEXPR_H_
36 #define _BLAZE_MATH_EXPRESSIONS_SMATEVALEXPR_H_
91 class SMatEvalExpr :
public SparseMatrix< SMatEvalExpr<MT,SO>, SO >
113 enum { smpAssignable = MT::smpAssignable };
156 return sm_.columns();
166 return sm_.nonZeros();
177 return sm_.nonZeros(i);
197 template<
typename T >
199 return sm_.canAlias( alias );
209 template<
typename T >
211 return sm_.isAliased( alias );
221 return sm_.canSMPAssign();
242 template<
typename MT2
268 template<
typename MT2
294 template<
typename MT2
320 template<
typename MT2
346 template<
typename MT2
372 template<
typename MT2
398 template<
typename MT2
424 template<
typename MT2
450 template<
typename MT2
476 template<
typename MT2
502 template<
typename MT2
528 template<
typename MT2
554 template<
typename MT2
580 template<
typename MT2
607 template<
typename MT2
634 template<
typename MT2
683 template<
typename MT
713 template<
typename MT
715 inline const SMatEvalExpr<MT,SO>
eval(
const SMatEvalExpr<MT,SO>& sm )
733 template<
typename MT,
bool SO >
734 struct Rows< SMatEvalExpr<MT,SO> > :
public Rows<MT>
750 template<
typename MT,
bool SO >
751 struct Columns< SMatEvalExpr<MT,SO> > :
public Columns<MT>
767 template<
typename MT,
bool SO >
768 struct IsSymmetric< SMatEvalExpr<MT,SO> > :
public IsTrue< IsSymmetric<MT>::value >
784 template<
typename MT,
bool SO >
785 struct IsLower< SMatEvalExpr<MT,SO> > :
public IsTrue< IsLower<MT>::value >
801 template<
typename MT,
bool SO >
802 struct IsUpper< SMatEvalExpr<MT,SO> > :
public IsTrue< IsUpper<MT>::value >
818 template<
typename MT >
819 struct SMatEvalExprTrait< SMatEvalExpr<MT,false> >
823 typedef typename SelectType< IsSparseMatrix<MT>::value && IsRowMajorMatrix<MT>::value
824 , SMatEvalExpr<MT,false>
825 , INVALID_TYPE >::Type Type;
834 template<
typename MT >
835 struct TSMatEvalExprTrait< SMatEvalExpr<MT,true> >
839 typedef typename SelectType< IsSparseMatrix<MT>::value && IsColumnMajorMatrix<MT>::value
840 , SMatEvalExpr<MT,true>
841 , INVALID_TYPE >::Type Type;
850 template<
typename MT,
bool SO,
bool AF >
851 struct SubmatrixExprTrait< SMatEvalExpr<MT,SO>, AF >
855 typedef typename EvalExprTrait< typename SubmatrixExprTrait<const MT,AF>::Type >::Type Type;
864 template<
typename MT,
bool SO >
865 struct RowExprTrait< SMatEvalExpr<MT,SO> >
869 typedef typename EvalExprTrait< typename RowExprTrait<const MT>::Type >::Type Type;
878 template<
typename MT,
bool SO >
879 struct ColumnExprTrait< SMatEvalExpr<MT,SO> >
883 typedef typename EvalExprTrait< typename ColumnExprTrait<const MT>::Type >::Type Type;
MT::OppositeType OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: SMatEvalExpr.h:99
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.
SMatEvalExpr< MT, SO > This
Type of this SMatEvalExpr instance.
Definition: SMatEvalExpr.h:97
size_t columns() const
Returns the current number of columns of the matrix.
Definition: SMatEvalExpr.h:155
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
Header file for the ColumnExprTrait class template.
Header file for the TSMatEvalExprTrait class template.
Header file for the IsColumnMajorMatrix type trait.
Operand operand() const
Returns the sparse matrix operand.
Definition: SMatEvalExpr.h:186
Header file for the MatEvalExpr base class.
MT::ElementType ElementType
Resulting element type.
Definition: SMatEvalExpr.h:101
Header file for the Computation base class.
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
SelectType< IsExpression< MT >::value, const MT, const MT & >::Type Operand
Composite data type of the sparse matrix expression.
Definition: SMatEvalExpr.h:108
Constraint on the data type.
const ResultType CompositeType
Data type for composite expression templates.
Definition: SMatEvalExpr.h:105
Header file for the SparseMatrix base class.
Constraint on the data type.
Operand sm_
Sparse matrix of the evaluation expression.
Definition: SMatEvalExpr.h:227
bool canSMPAssign() const
Returns whether the expression can be used in SMP assignments.
Definition: SMatEvalExpr.h:220
Header file for the SMatEvalExprTrait class template.
Compile time type selection.The SelectType class template selects one of the two given types T1 and T...
Definition: SelectType.h:59
Header file for the IsSymmetric type trait.
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.
Header file for the IsLower type trait.
size_t nonZeros(size_t i) const
Returns the number of non-zero elements in the specified row.
Definition: SMatEvalExpr.h:176
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
MT::ResultType ResultType
Result type for expression template evaluations.
Definition: SMatEvalExpr.h:98
Header file for the SelectType class template.
Header file for the RowExprTrait class template.
Header file for all forward declarations for expression class templates.
bool isAliased(const T *alias) const
Returns whether the expression is aliased with the given address alias.
Definition: SMatEvalExpr.h:210
bool canAlias(const T *alias) const
Returns whether the expression can alias with the given address alias.
Definition: SMatEvalExpr.h:198
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
SMatEvalExpr(const MT &sm)
Constructor for the SMatEvalExpr class.
Definition: SMatEvalExpr.h:121
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
Header file for the EvalExprTrait class template.
const DMatEvalExpr< MT, SO > eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:677
size_t nonZeros() const
Returns the number of non-zero elements in the sparse matrix.
Definition: SMatEvalExpr.h:165
ReturnType operator()(size_t i, size_t j) const
2D-access to the matrix elements.
Definition: SMatEvalExpr.h:133
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
MT::ReturnType ReturnType
Return type for expression template evaluations.
Definition: SMatEvalExpr.h:102
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.
Expression object for the forced evaluation of sparse matrices.The SMatEvalExpr class represents the ...
Definition: Forward.h:92
Header file for the IsUpper type trait.
MT::TransposeType TransposeType
Transpose type for expression template evaluations.
Definition: SMatEvalExpr.h:100
size_t rows() const
Returns the current number of rows of the matrix.
Definition: SMatEvalExpr.h:145
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