35 #ifndef _BLAZE_MATH_EXPRESSIONS_SVECEVALEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_SVECEVALEXPR_H_ 86 class SVecEvalExpr :
public SparseVector< SVecEvalExpr<VT,TF>, TF >
107 enum :
bool { smpAssignable = VT::smpAssignable };
139 inline ReturnType
at(
size_t index )
const {
140 if( index >=
sv_.size() ) {
143 return (*
this)[index];
152 inline size_t size() const noexcept {
163 return sv_.nonZeros();
183 template<
typename T >
184 inline bool canAlias(
const T* alias )
const noexcept {
185 return sv_.canAlias( alias );
195 template<
typename T >
196 inline bool isAliased(
const T* alias )
const noexcept {
197 return sv_.isAliased( alias );
207 return sv_.canSMPAssign();
228 template<
typename VT2 >
235 assign( ~lhs, rhs.sv_ );
252 template<
typename VT2 >
259 assign( ~lhs, rhs.sv_ );
276 template<
typename VT2 >
283 addAssign( ~lhs, rhs.sv_ );
300 template<
typename VT2 >
307 addAssign( ~lhs, rhs.sv_ );
324 template<
typename VT2 >
331 subAssign( ~lhs, rhs.sv_ );
348 template<
typename VT2 >
355 subAssign( ~lhs, rhs.sv_ );
372 template<
typename VT2 >
379 multAssign( ~lhs, rhs.sv_ );
396 template<
typename VT2 >
403 multAssign( ~lhs, rhs.sv_ );
420 template<
typename VT2 >
444 template<
typename VT2 >
468 template<
typename VT2 >
492 template<
typename VT2 >
516 template<
typename VT2 >
540 template<
typename VT2 >
564 template<
typename VT2 >
588 template<
typename VT2 >
635 template<
typename VT
665 template<
typename VT
685 template<
typename VT,
bool TF >
686 struct Size< SVecEvalExpr<VT,TF> > :
public Size<VT>
702 template<
typename VT >
718 template<
typename VT >
734 template<
typename VT,
bool TF,
bool AF >
Compile time check for row vector types.This type trait tests whether or not the given template argum...
Definition: IsRowVector.h:80
Header file for auxiliary alias declarations.
Evaluation of the expression type type of a subvector operation.Via this type trait it is possible to...
Definition: SubvectorExprTrait.h:79
Header file for basic type definitions.
Header file for the SparseVector base class.
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:160
ReturnType_< VT > ReturnType
Return type for expression template evaluations.
Definition: SVecEvalExpr.h:96
Header file for the IsRowVector type trait.
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
Expression object for the forced evaluation of sparse vectors.The SVecEvalExpr class represents the c...
Definition: Forward.h:126
Header file for the And class template.
Operand sv_
Sparse vector of the evaluation expression.
Definition: SVecEvalExpr.h:213
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: SVecEvalExpr.h:152
const ResultType CompositeType
Data type for composite expression templates.
Definition: SVecEvalExpr.h:99
Header file for the Computation base class.
typename EvalExprTrait< T >::Type EvalExprTrait_
Auxiliary alias declaration for the EvalExprTrait class template.The EvalExprTrait_ alias declaration...
Definition: EvalExprTrait.h:142
ReturnType at(size_t index) const
Checked access to the vector elements.
Definition: SVecEvalExpr.h:139
Header file for the VecEvalExpr base class.
typename T::ResultType ResultType_
Alias declaration for nested ResultType type definitions.The ResultType_ alias declaration provides a...
Definition: Aliases.h:323
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:129
TransposeType_< VT > TransposeType
Transpose type for expression template evaluations.
Definition: SVecEvalExpr.h:94
Evaluation of the expression type of a sparse vector evaluation operation.Via this type trait it is p...
Definition: TSVecEvalExprTrait.h:74
typename T::ReturnType ReturnType_
Alias declaration for nested ReturnType type definitions.The ReturnType_ alias declaration provides a...
Definition: Aliases.h:343
SVecEvalExpr< VT, TF > This
Type of this SVecEvalExpr instance.
Definition: SVecEvalExpr.h:92
SVecEvalExpr(const VT &sv) noexcept
Constructor for the SVecEvalExpr class.
Definition: SVecEvalExpr.h:115
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
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:98
#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
typename T::ElementType ElementType_
Alias declaration for nested ElementType type definitions.The ElementType_ alias declaration provides...
Definition: Aliases.h:163
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:70
#define BLAZE_CONSTRAINT_MUST_BE_SPARSE_VECTOR_TYPE(T)
Constraint on the data type.In case the given data type T is not a sparse, N-dimensional vector type...
Definition: SparseVector.h:61
Constraint on the data type.
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: SVecEvalExpr.h:184
Compile time check for column vector types.This type trait tests whether or not the given template ar...
Definition: IsColumnVector.h:80
Header file for the exception macros of the math module.
Header file for all forward declarations for expression class templates.
Constraint on the data type.
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: SVecEvalExpr.h:206
Header file for the IsSparseVector type trait.
Header file for run time assertion macros.
Utility type for generic codes.
Header file for the EvalExprTrait class template.
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:160
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:93
Header file for the TSVecEvalExprTrait class template.
size_t nonZeros() const
Returns the number of non-zero elements in the sparse vector.
Definition: SVecEvalExpr.h:162
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: SVecEvalExpr.h:126
Evaluation of the expression type of a sparse vector evaluation operation.Via this type trait it is p...
Definition: SVecEvalExprTrait.h:74
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: SVecEvalExpr.h:196
const DMatEvalExpr< MT, SO > eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:703
Operand operand() const noexcept
Returns the sparse vector operand.
Definition: SVecEvalExpr.h:172
ElementType_< VT > ElementType
Resulting element type.
Definition: SVecEvalExpr.h:95
If_< IsExpression< VT >, const VT, const VT &> Operand
Composite data type of the sparse vector expression.
Definition: SVecEvalExpr.h:102
Header file for the IsComputation type trait class.
Compile time evaluation of the size of a vector.The Size type trait evaluates the size of the given v...
Definition: Size.h:75
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:120
ResultType_< VT > ResultType
Result type for expression template evaluations.
Definition: SVecEvalExpr.h:93
Header file for the SubvectorExprTrait class template.
typename T::TransposeType TransposeType_
Alias declaration for nested TransposeType type definitions.The TransposeType_ alias declaration prov...
Definition: Aliases.h:403
Header file for the SVecEvalExprTrait class template.
Header file for the IsColumnVector type trait.
Header file for the Size type trait.
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T, TF)
Constraint on the data type.In case the given data type T is not a dense or sparse vector type and in...
Definition: TransposeFlag.h:63
#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
Header file for the IsExpression type trait class.
Header file for the function trace functionality.