35 #ifndef _BLAZE_MATH_EXPRESSIONS_DVECSERIALEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_DVECSERIALEXPR_H_ 108 enum :
bool { simdEnabled =
false };
111 enum :
bool { smpAssignable = VT::smpAssignable };
143 inline ReturnType
at(
size_t index )
const {
144 if( index >=
dv_.size() ) {
147 return (*
this)[index];
156 inline size_t size() const noexcept {
187 template<
typename T >
188 inline bool canAlias(
const T* alias )
const noexcept {
189 return dv_.canAlias( alias );
199 template<
typename T >
200 inline bool isAliased(
const T* alias )
const noexcept {
201 return dv_.isAliased( alias );
211 return dv_.isAligned();
221 return dv_.canSMPAssign();
242 template<
typename VT2 >
249 assign( ~lhs, rhs.
dv_ );
266 template<
typename VT2 >
273 assign( ~lhs, rhs.
dv_ );
290 template<
typename VT2 >
297 addAssign( ~lhs, rhs.
dv_ );
314 template<
typename VT2 >
321 addAssign( ~lhs, rhs.
dv_ );
339 template<
typename VT2 >
346 subAssign( ~lhs, rhs.
dv_ );
364 template<
typename VT2 >
371 subAssign( ~lhs, rhs.
dv_ );
389 template<
typename VT2 >
396 multAssign( ~lhs, rhs.
dv_ );
414 template<
typename VT2 >
421 multAssign( ~lhs, rhs.
dv_ );
438 template<
typename VT2 >
445 divAssign( ~lhs, rhs.
dv_ );
462 template<
typename VT2 >
469 divAssign( ~lhs, rhs.
dv_ );
486 template<
typename VT2 >
493 assign( ~lhs, rhs.
dv_ );
510 template<
typename VT2 >
517 assign( ~lhs, rhs.
dv_ );
535 template<
typename VT2 >
542 addAssign( ~lhs, rhs.
dv_ );
560 template<
typename VT2 >
567 addAssign( ~lhs, rhs.
dv_ );
585 template<
typename VT2 >
592 subAssign( ~lhs, rhs.
dv_ );
610 template<
typename VT2 >
617 subAssign( ~lhs, rhs.
dv_ );
635 template<
typename VT2 >
642 multAssign( ~lhs, rhs.
dv_ );
660 template<
typename VT2 >
667 multAssign( ~lhs, rhs.
dv_ );
685 template<
typename VT2 >
692 divAssign( ~lhs, rhs.
dv_ );
710 template<
typename VT2 >
717 divAssign( ~lhs, rhs.
dv_ );
757 template<
typename VT
787 template<
typename VT
807 template<
typename VT,
bool TF >
808 struct Size< DVecSerialExpr<VT,TF> > :
public Size<VT>
824 template<
typename VT,
bool TF >
825 struct IsAligned< DVecSerialExpr<VT,TF> >
842 template<
typename VT >
858 template<
typename VT >
874 template<
typename VT,
bool TF,
bool AF >
Expression object for the forced serial evaluation of dense vectors.The DVecSerialExpr class represen...
Definition: DVecSerialExpr.h:87
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 the TDVecSerialExprTrait class template.
ElementType_< VT > ElementType
Resulting element type.
Definition: DVecSerialExpr.h:96
Header file for auxiliary alias declarations.
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: DVecSerialExpr.h:130
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.
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
TransposeType_< VT > TransposeType
Transpose type for expression template evaluations.
Definition: DVecSerialExpr.h:95
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:71
const ResultType CompositeType
Data type for composite expression templates.
Definition: DVecSerialExpr.h:100
Base class for all vector serial evaluation expression templates.The VecSerialExpr class serves as a ...
Definition: VecSerialExpr.h:65
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.
Header file for the DenseVector base class.
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.
Operand dv_
Dense vector of the serial evaluation expression.
Definition: DVecSerialExpr.h:227
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
Operand operand() const noexcept
Returns the dense vector operand.
Definition: DVecSerialExpr.h:166
Compile time check for the alignment of data types.This type trait tests whether the given data type ...
Definition: IsAligned.h:87
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: DVecSerialExpr.h:220
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Header file for the If class template.
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: DVecSerialExpr.h:188
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
Evaluation of the expression type of a dense vector serial evaluation operation.Via this type trait i...
Definition: DVecSerialExprTrait.h:74
ResultType_< VT > ResultType
Result type for expression template evaluations.
Definition: DVecSerialExpr.h:94
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:70
Header file for the IsAligned type trait.
Header file for the SerialExprTrait class template.
Constraint on the data type.
Compile time check for column vector types.This type trait tests whether or not the given template ar...
Definition: IsColumnVector.h:80
Constraint on the data type.
Header file for the exception macros of the math module.
Header file for all forward declarations for expression class templates.
DVecSerialExpr(const VT &dv) noexcept
Constructor for the DVecSerialExpr class.
Definition: DVecSerialExpr.h:119
Header file for the VecSerialExpr base class.
bool isAligned() const noexcept
Returns whether the operands of the expression are properly aligned in memory.
Definition: DVecSerialExpr.h:210
Evaluation of the expression type of a dense vector serial evaluation operation.Via this type trait i...
Definition: TDVecSerialExprTrait.h:74
Header file for run time assertion macros.
Utility type for generic codes.
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DVecSerialExpr.h:200
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
EnableIf_< IsDenseVector< VT1 > > smpDivAssign(Vector< VT1, TF1 > &lhs, const Vector< VT2, TF2 > &rhs)
Default implementation of the SMP division assignment of a vector to a dense vector.
Definition: DenseVector.h:222
#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
If_< IsExpression< VT >, const VT, const VT &> Operand
Composite data type of the dense vector expression.
Definition: DVecSerialExpr.h:103
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: DVecSerialExpr.h:156
Header file for the IsDenseVector type trait.
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_VECTOR_TYPE(T)
Constraint on the data type.In case the given data type T is not a dense, N-dimensional vector type...
Definition: DenseVector.h:61
Header file for the DVecSerialExprTrait class template.
ReturnType_< VT > ReturnType
Return type for expression template evaluations.
Definition: DVecSerialExpr.h:97
Base class for all compute expression templates.The Computation class serves as a tag for all computa...
Definition: Computation.h:59
Compile time evaluation of the size of a vector.The Size type trait evaluates the size of the given v...
Definition: Size.h:75
ReturnType at(size_t index) const
Checked access to the vector elements.
Definition: DVecSerialExpr.h:143
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:120
Header file for the IntegralConstant class template.
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.
DVecSerialExpr< VT, TF > This
Type of this DVecSerialExpr instance.
Definition: DVecSerialExpr.h:93
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
Header file for the IsExpression type trait class.
Header file for the function trace functionality.