35 #ifndef _BLAZE_MATH_EXPRESSIONS_SVECSERIALEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_SVECSERIALEXPR_H_ 86 class SVecSerialExpr :
public SparseVector< SVecSerialExpr<VT,TF>, TF >
87 ,
private VecSerialExpr
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();
193 template<
typename T >
194 inline bool canAlias(
const T* alias )
const noexcept {
195 return sv_.canAlias( alias );
205 template<
typename T >
206 inline bool isAliased(
const T* alias )
const noexcept {
207 return sv_.isAliased( alias );
217 return sv_.canSMPAssign();
238 template<
typename VT2 >
245 assign( ~lhs, rhs.sv_ );
262 template<
typename VT2 >
269 assign( ~lhs, rhs.sv_ );
286 template<
typename VT2 >
293 addAssign( ~lhs, rhs.sv_ );
310 template<
typename VT2 >
317 addAssign( ~lhs, rhs.sv_ );
335 template<
typename VT2 >
342 subAssign( ~lhs, rhs.sv_ );
360 template<
typename VT2 >
367 subAssign( ~lhs, rhs.sv_ );
385 template<
typename VT2 >
392 multAssign( ~lhs, rhs.sv_ );
410 template<
typename VT2 >
417 multAssign( ~lhs, rhs.sv_ );
434 template<
typename VT2 >
441 assign( ~lhs, rhs.sv_ );
458 template<
typename VT2 >
465 assign( ~lhs, rhs.sv_ );
483 template<
typename VT2 >
490 addAssign( ~lhs, rhs.sv_ );
508 template<
typename VT2 >
515 addAssign( ~lhs, rhs.sv_ );
533 template<
typename VT2 >
540 subAssign( ~lhs, rhs.sv_ );
558 template<
typename VT2 >
565 subAssign( ~lhs, rhs.sv_ );
583 template<
typename VT2 >
590 multAssign( ~lhs, rhs.sv_ );
608 template<
typename VT2 >
615 multAssign( ~lhs, rhs.sv_ );
655 template<
typename VT
685 template<
typename VT
705 template<
typename VT,
bool TF >
706 struct Size< SVecSerialExpr<VT,TF> > :
public Size<VT>
722 template<
typename VT >
738 template<
typename VT >
754 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
SVecSerialExpr< VT, TF > This
Type of this SVecSerialExpr instance.
Definition: SVecSerialExpr.h:92
Header file for basic type definitions.
Header file for the SparseVector base class.
If_< IsExpression< VT >, const VT, const VT &> Operand
Composite data type of the sparse vector expression.
Definition: SVecSerialExpr.h:102
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
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
Header file for the And class template.
const DMatSerialExpr< MT, SO > serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:721
Header file for the Computation base class.
SVecSerialExpr(const VT &sv) noexcept
Constructor for the SVecSerialExpr class.
Definition: SVecSerialExpr.h:115
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: SVecSerialExpr.h:206
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
typename T::ReturnType ReturnType_
Alias declaration for nested ReturnType type definitions.The ReturnType_ alias declaration provides a...
Definition: Aliases.h:343
size_t nonZeros() const
Returns the number of non-zero elements in the sparse vector.
Definition: SVecSerialExpr.h:162
const ResultType CompositeType
Data type for composite expression templates.
Definition: SVecSerialExpr.h:99
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the If class template.
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: SVecSerialExpr.h:126
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
ReturnType at(size_t index) const
Checked access to the vector elements.
Definition: SVecSerialExpr.h:139
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
Operand operand() const noexcept
Returns the sparse vector operand.
Definition: SVecSerialExpr.h:172
#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
Header file for the SerialExprTrait class template.
Constraint on the data type.
Header file for the SVecSerialExprTrait class template.
Compile time check for column vector types.This type trait tests whether or not the given template ar...
Definition: IsColumnVector.h:80
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: SVecSerialExpr.h:216
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.
Expression object for the forced serial evaluation of sparse vectors.The SVecSerialExpr class represe...
Definition: Forward.h:130
ReturnType_< VT > ReturnType
Return type for expression template evaluations.
Definition: SVecSerialExpr.h:96
Header file for the VecSerialExpr base class.
Header file for the IsSparseVector type trait.
Header file for run time assertion macros.
Utility type for generic codes.
ResultType_< VT > ResultType
Result type for expression template evaluations.
Definition: SVecSerialExpr.h:93
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
Header file for the TSVecSerialExprTrait class template.
#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
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: SVecSerialExpr.h:194
ElementType_< VT > ElementType
Resulting element type.
Definition: SVecSerialExpr.h:95
Operand sv_
Sparse vector of the serial evaluation expression.
Definition: SVecSerialExpr.h:223
TransposeType_< VT > TransposeType
Transpose type for expression template evaluations.
Definition: SVecSerialExpr.h:94
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
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: SVecSerialExpr.h:152
Evaluation of the expression type of a sparse vector serial evaluation operation.Via this type trait ...
Definition: SVecSerialExprTrait.h:74
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 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
typename SerialExprTrait< T >::Type SerialExprTrait_
Auxiliary alias declaration for the SerialExprTrait class template.The SerialExprTrait_ alias declara...
Definition: SerialExprTrait.h:142
Evaluation of the expression type of a sparse vector serial evaluation operation.Via this type trait ...
Definition: TSVecSerialExprTrait.h:74
Header file for the IsExpression type trait class.
Header file for the function trace functionality.