35 #ifndef _BLAZE_MATH_EXPRESSIONS_DVECTRANSEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_DVECTRANSEXPR_H_ 93 :
public VecTransExpr< DenseVector< DVecTransExpr<VT,TF>, TF > >
94 ,
private If< IsComputation<VT>, Computation, Transformation >::Type
112 template<
typename VT2 >
115 enum :
bool { value = useAssign };
127 template<
typename VT2 >
128 struct UseSMPAssign {
129 enum :
bool { value = VT2::smpAssignable && useAssign };
140 template<
typename VT2 >
141 struct GetConstIterator {
144 struct Failure {
using Type = INVALID_TYPE; };
170 enum :
bool { simdEnabled = VT::simdEnabled };
173 enum :
bool { smpAssignable = VT::smpAssignable };
211 if( index >=
dv_.size() ) {
214 return (*
this)[index];
227 return dv_.load( index );
266 inline size_t size() const noexcept {
287 template<
typename T >
288 inline bool canAlias(
const T* alias )
const noexcept {
289 return dv_.canAlias( alias );
299 template<
typename T >
300 inline bool isAliased(
const T* alias )
const noexcept {
301 return dv_.isAliased( alias );
311 return dv_.isAligned();
321 return dv_.canSMPAssign();
344 template<
typename VT2 >
353 assign( tmp, rhs.
dv_ );
372 template<
typename VT2 >
381 assign( tmp, rhs.
dv_ );
400 template<
typename VT2 >
409 addAssign( tmp, rhs.
dv_ );
432 template<
typename VT2 >
441 subAssign( tmp, rhs.
dv_ );
464 template<
typename VT2 >
473 multAssign( tmp, rhs.
dv_ );
496 template<
typename VT2 >
505 divAssign( tmp, rhs.
dv_ );
528 template<
typename VT2 >
556 template<
typename VT2 >
584 template<
typename VT2 >
616 template<
typename VT2 >
648 template<
typename VT2 >
680 template<
typename VT2 >
735 template<
typename VT
755 template<
typename VT
773 template<
typename VT
833 template<
typename VT
857 template<
typename VT
880 template<
typename VT,
bool TF >
881 struct Size< DVecTransExpr<VT,TF>, 0UL >
882 :
public Size<VT,0UL>
898 template<
typename VT,
bool TF >
916 template<
typename VT,
bool TF >
934 template<
typename VT,
bool TF >
935 struct IsPadded< DVecTransExpr<VT,TF> >
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DVecTransExpr.h:300
LeftOperand leftOperand() const noexcept
Returns the left-hand side dense vector operand.
Definition: DVecScalarMultExpr.h:529
Header file for auxiliary alias declarations.
const ElementType * data() const noexcept
Low-level data access to the vector elements.
Definition: DVecTransExpr.h:236
Compile time check for low-level access to constant data.This type trait tests whether the given data...
Definition: HasConstDataAccess.h:75
Base class for all vector transposition expression templates.The VecTransExpr class serves as a tag f...
Definition: VecTransExpr.h:66
Compile time type selection.The If alias declaration selects one of the two given types T2 and T3 dep...
Definition: If.h:132
Header file for basic type definitions.
ResultType_< VT > TransposeType
Transpose type for expression template evaluations.
Definition: DVecTransExpr.h:154
RightOperand rightOperand() const noexcept
Returns the right-hand side scalar operand.
Definition: DVecScalarMultExpr.h:539
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:164
Header file for the FalseType type/value trait base class.
DVecTransExpr(const VT &dv) noexcept
Constructor for the DVecTransExpr class.
Definition: DVecTransExpr.h:186
ReturnType operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: DVecTransExpr.h:197
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:71
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
IfTrue_< useAssign, const ResultType, const DVecTransExpr &> CompositeType
Data type for composite expression templates.
Definition: DVecTransExpr.h:159
Header file for the DenseVector base class.
#define BLAZE_CREATE_HAS_TYPE_MEMBER_TYPE_TRAIT(TYPE_TRAIT_NAME, MEMBER_NAME)
Macro for the creation of a type trait for compile time checks for member types.This macro creates th...
Definition: HasMember.h:182
If_< IsExpression< VT >, const VT, const VT &> Operand
Composite data type of the dense vector expression.
Definition: DVecTransExpr.h:165
Header file for the Computation base class.
Header file for the RequiresEvaluation type trait.
typename T::ResultType ResultType_
Alias declaration for nested ResultType type definitions.The ResultType_ alias declaration provides a...
Definition: Aliases.h:343
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:133
Operand operand() const noexcept
Returns the dense vector operand.
Definition: DVecTransExpr.h:276
Expression object for the transposition of a dense vector.The DVecTransposer class is a wrapper objec...
Definition: DVecTransposer.h:77
typename IfTrue< Condition, T1, T2 >::Type IfTrue_
Auxiliary alias declaration for the IfTrue class template.The IfTrue_ alias declaration provides a co...
Definition: If.h:109
typename T::ReturnType ReturnType_
Alias declaration for nested ReturnType type definitions.The ReturnType_ alias declaration provides a...
Definition: Aliases.h:363
Operand dv_
Dense vector of the transposition expression.
Definition: DVecTransExpr.h:327
Compile time check for the alignment of data types.This type trait tests whether the given data type ...
Definition: IsAligned.h:87
Compile time check to query the requirement to evaluate an expression.Via this type trait it is possi...
Definition: RequiresEvaluation.h:71
typename T::CompositeType CompositeType_
Alias declaration for nested CompositeType type definitions.The CompositeType_ alias declaration prov...
Definition: Aliases.h:83
TransposeType_< VT > ResultType
Result type for expression template evaluations.
Definition: DVecTransExpr.h:153
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: DVecTransExpr.h:288
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Header file for the If class template.
ReturnType at(size_t index) const
Checked access to the vector elements.
Definition: DVecTransExpr.h:210
Header file for the dense vector transposer.
Compile time check for data types with padding.This type trait tests whether the given data type empl...
Definition: IsPadded.h:76
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:102
ReturnType_< VT > ReturnType
Return type for expression template evaluations.
Definition: DVecTransExpr.h:156
#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
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:3085
typename T::ElementType ElementType_
Alias declaration for nested ElementType type definitions.The ElementType_ alias declaration provides...
Definition: Aliases.h:163
Expression object for the transposition of a sparse vector.The SVecTransposer class is a wrapper obje...
Definition: Forward.h:147
Header file for all SIMD functionality.
BLAZE_ALWAYS_INLINE auto load(size_t index) const noexcept
Access to the SIMD elements of the vector.
Definition: DVecTransExpr.h:224
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:76
typename GetConstIterator< VT >::Type ConstIterator
Iterator over the elements of the dense vector.
Definition: DVecTransExpr.h:162
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: DVecTransExpr.h:266
Header file for the IsAligned type trait.
ConstIterator end() const
Returns an iterator just past the last non-zero element of the dense vector.
Definition: DVecTransExpr.h:256
Constraint on the data type.
decltype(auto) transTo(const DenseVector< VT, TF > &dv)
Conditional calculation of the transpose of the given dense vector.
Definition: DVecTransExpr.h:798
Constraint on the data type.
Header file for the exception macros of the math module.
ElementType_< VT > ElementType
Resulting element type.
Definition: DVecTransExpr.h:155
Header file for all forward declarations for expression class templates.
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: DVecTransExpr.h:320
Header file for the EnableIf class template.
Header file for the IsPadded type trait.
ConstIterator begin() const
Returns an iterator to the first non-zero element of the dense vector.
Definition: DVecTransExpr.h:246
Header file for the HasConstDataAccess type trait.
Header file for the VecTransExpr base class.
bool isAligned() const noexcept
Returns whether the operands of the expression are properly aligned in memory.
Definition: DVecTransExpr.h:310
Header file for run time assertion macros.
Utility type for generic codes.
CompositeType_< VT > CT
Composite type of the dense vector expression.
Definition: DVecTransExpr.h:98
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:154
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
SIMD characteristics of data types.The SIMDTrait class template provides the SIMD characteristics of ...
Definition: SIMDTrait.h:296
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:94
typename EnableIf< Condition, T >::Type EnableIf_
Auxiliary alias declaration for the EnableIf class template.The EnableIf_ alias declaration provides ...
Definition: EnableIf.h:224
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:3080
#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
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:789
Header file for the sparse vector transposer.
Header file for the IsComputation type trait class.
Expression object for dense vector-scalar multiplications.The DVecScalarMultExpr class represents the...
Definition: DVecScalarMultExpr.h:104
Compile time evaluation of the size of vectors and matrices.The Size type trait evaluates the size of...
Definition: Size.h:80
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:130
Header file for the IntegralConstant class template.
Expression object for dense vector transpositions.The DVecTransExpr class represents the compile time...
Definition: DVecTransExpr.h:92
typename T::TransposeType TransposeType_
Alias declaration for nested TransposeType type definitions.The TransposeType_ alias declaration prov...
Definition: Aliases.h:423
System settings for the inline keywords.
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 TrueType type/value trait base class.
Header file for the IsExpression type trait class.
Header file for the function trace functionality.