35#ifndef _BLAZE_MATH_EXPRESSIONS_DVECTRANSPOSER_H_
36#define _BLAZE_MATH_EXPRESSIONS_DVECTRANSPOSER_H_
144 return const_cast<const VT&
>(
dv_ )[index];
156 if( index >=
dv_.size() ) {
159 return (*
this)[index];
171 if( index >=
dv_.size() ) {
174 return (*
this)[index];
263 inline size_t size() const noexcept {
296 template<
typename Other >
297 inline bool canAlias(
const Other* alias )
const noexcept
299 return dv_.canAlias( alias );
309 template<
typename Other >
310 inline bool isAliased(
const Other* alias )
const noexcept
312 return dv_.isAliased( alias );
323 return dv_.isAligned();
334 return dv_.canSMPAssign();
350 return dv_.load( index );
366 return dv_.loada( index );
382 return dv_.loadu( index );
399 dv_.store( index, value );
416 dv_.storea( index, value );
433 dv_.storeu( index, value );
450 dv_.stream( index, value );
465 template<
typename VT2 >
485 template<
typename VT2 >
505 template<
typename VT2 >
525 template<
typename VT2 >
545 template<
typename VT2 >
606template<
typename VT,
bool TF >
607struct Size< DVecTransposer<VT,TF>, 0UL >
608 :
public Size<VT,0UL>
624template<
typename VT,
bool TF >
625struct MaxSize< DVecTransposer<VT,TF>, 0UL >
626 :
public MaxSize<VT,0UL>
642template<
typename VT,
bool TF >
643struct HasConstDataAccess< DVecTransposer<VT,TF> >
644 :
public HasConstDataAccess<VT>
660template<
typename VT,
bool TF >
661struct HasMutableDataAccess< DVecTransposer<VT,TF> >
662 :
public HasMutableDataAccess<VT>
678template<
typename VT,
bool TF >
679struct IsAligned< DVecTransposer<VT,TF> >
680 :
public IsAligned<VT>
696template<
typename VT,
bool TF >
697struct IsContiguous< DVecTransposer<VT,TF> >
698 :
public IsContiguous<VT>
714template<
typename VT,
bool TF >
715struct IsPadded< DVecTransposer<VT,TF> >
716 :
public IsPadded<VT>
Header file for auxiliary alias declarations.
typename T::ConstReference ConstReference_t
Alias declaration for nested ConstReference type definitions.
Definition: Aliases.h:170
typename T::Pointer Pointer_t
Alias declaration for nested Pointer type definitions.
Definition: Aliases.h:330
typename T::ReturnType ReturnType_t
Alias declaration for nested ReturnType type definitions.
Definition: Aliases.h:470
typename T::ResultType ResultType_t
Alias declaration for nested ResultType type definitions.
Definition: Aliases.h:450
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.
Definition: Aliases.h:190
typename T::Iterator Iterator_t
Alias declaration for nested Iterator type definitions.
Definition: Aliases.h:210
typename T::ConstIterator ConstIterator_t
Alias declaration for nested ConstIterator type definitions.
Definition: Aliases.h:130
typename T::Reference Reference_t
Alias declaration for nested Reference type definitions.
Definition: Aliases.h:390
typename T::TransposeType TransposeType_t
Alias declaration for nested TransposeType type definitions.
Definition: Aliases.h:550
typename T::ConstPointer ConstPointer_t
Alias declaration for nested ConstPointer type definitions.
Definition: Aliases.h:150
Header file for run time assertion macros.
Header file for the HasConstDataAccess type trait.
Header file for the HasMutableDataAccess type trait.
Header file for the IsAligned type trait.
Header file for the IsContiguous type trait.
Header file for the IsPadded type trait.
Deactivation of problematic macros.
Header file for the MaxSize type trait.
Header file for the SIMD trait.
Expression object for the transposition of a dense vector.
Definition: DVecTransposer.h:81
ConstReference_t< VT > ConstReference
Reference to a constant vector value.
Definition: DVecTransposer.h:93
BLAZE_ALWAYS_INLINE SIMDType loada(size_t index) const noexcept
Aligned load of a SIMD element of the vector.
Definition: DVecTransposer.h:364
Iterator begin()
Returns an iterator to the first element of the dense vector.
Definition: DVecTransposer.h:203
ElementType_t< VT > ElementType
Type of the vector elements.
Definition: DVecTransposer.h:88
Iterator end()
Returns an iterator just past the last element of the dense vector.
Definition: DVecTransposer.h:233
void multAssign(const Vector< VT2, TF > &rhs)
Implementation of the transpose multiplication assignment of a vector.
Definition: DVecTransposer.h:526
Reference operator[](size_t index)
Subscript operator for the direct access to the vector elements.
Definition: DVecTransposer.h:130
ConstIterator cend() const
Returns an iterator just past the last element of the dense vector.
Definition: DVecTransposer.h:253
ReturnType_t< VT > ReturnType
Return type for expression template evaluations.
Definition: DVecTransposer.h:90
ConstIterator begin() const
Returns an iterator to the first element of the dense vector.
Definition: DVecTransposer.h:213
ConstReference at(size_t index) const
Checked access to the vector elements.
Definition: DVecTransposer.h:170
void subAssign(const Vector< VT2, TF > &rhs)
Implementation of the transpose subtraction assignment of a vector.
Definition: DVecTransposer.h:506
BLAZE_ALWAYS_INLINE void storeu(size_t index, const SIMDType &value) noexcept
Unaligned store of a SIMD element of the vector.
Definition: DVecTransposer.h:431
ResultType_t< VT > TransposeType
Transpose type for expression template evaluations.
Definition: DVecTransposer.h:87
void assign(const Vector< VT2, TF > &rhs)
Implementation of the transpose assignment of a vector.
Definition: DVecTransposer.h:466
bool canAlias(const Other *alias) const noexcept
Returns whether the vector can alias with the given address alias.
Definition: DVecTransposer.h:297
ConstIterator end() const
Returns an iterator just past the last element of the dense vector.
Definition: DVecTransposer.h:243
BLAZE_ALWAYS_INLINE SIMDType load(size_t index) const noexcept
Load of a SIMD element of the vector.
Definition: DVecTransposer.h:348
void divAssign(const DenseVector< VT2, TF > &rhs)
Implementation of the transpose division assignment of a dense vector.
Definition: DVecTransposer.h:546
BLAZE_ALWAYS_INLINE void store(size_t index, const SIMDType &value) noexcept
Store of a SIMD element of the vector.
Definition: DVecTransposer.h:397
BLAZE_ALWAYS_INLINE void storea(size_t index, const SIMDType &value) noexcept
Aligned store of a SIMD element of the vector.
Definition: DVecTransposer.h:414
bool isAligned() const noexcept
Returns whether the vector is properly aligned in memory.
Definition: DVecTransposer.h:321
static constexpr bool smpAssignable
Compilation flag for SMP assignments.
Definition: DVecTransposer.h:111
Reference at(size_t index)
Checked access to the vector elements.
Definition: DVecTransposer.h:155
bool canSMPAssign() const noexcept
Returns whether the vector can be used in SMP assignments.
Definition: DVecTransposer.h:332
void reset()
Resets the vector elements.
Definition: DVecTransposer.h:273
BLAZE_ALWAYS_INLINE SIMDType loadu(size_t index) const noexcept
Unaligned load of a SIMD element of the vector.
Definition: DVecTransposer.h:380
void addAssign(const Vector< VT2, TF > &rhs)
Implementation of the transpose addition assignment of a vector.
Definition: DVecTransposer.h:486
SIMDTrait_t< ElementType > SIMDType
SIMD type of the vector elements.
Definition: DVecTransposer.h:89
ConstPointer data() const noexcept
Low-level data access to the vector elements.
Definition: DVecTransposer.h:193
BLAZE_ALWAYS_INLINE void stream(size_t index, const SIMDType &value) noexcept
Aligned, non-temporal store of a SIMD element of the vector.
Definition: DVecTransposer.h:448
TransposeType_t< VT > ResultType
Result type for expression template evaluations.
Definition: DVecTransposer.h:86
ConstIterator cbegin() const
Returns an iterator to the first element of the dense vector.
Definition: DVecTransposer.h:223
DVecTransposer(VT &dv) noexcept
Constructor for the DVecTransposer class.
Definition: DVecTransposer.h:119
Pointer_t< VT > Pointer
Pointer to a non-constant vector value.
Definition: DVecTransposer.h:94
Pointer data() noexcept
Low-level data access to the vector elements.
Definition: DVecTransposer.h:183
Reference_t< VT > Reference
Reference to a non-constant vector value.
Definition: DVecTransposer.h:92
static constexpr bool simdEnabled
Compilation flag for SIMD optimization.
Definition: DVecTransposer.h:105
bool isIntact() const noexcept
Returns whether the invariants of the vector are intact.
Definition: DVecTransposer.h:283
VT & dv_
The dense vector operand.
Definition: DVecTransposer.h:556
Iterator_t< VT > Iterator
Iterator over non-constant elements.
Definition: DVecTransposer.h:96
ConstIterator_t< VT > ConstIterator
Iterator over constant elements.
Definition: DVecTransposer.h:97
bool isAliased(const Other *alias) const noexcept
Returns whether the vector is aliased with the given address alias.
Definition: DVecTransposer.h:310
size_t size() const noexcept
Returns the current size/dimension of the vector.
Definition: DVecTransposer.h:263
ConstPointer_t< VT > ConstPointer
Pointer to a constant vector value.
Definition: DVecTransposer.h:95
ConstReference operator[](size_t index) const
Subscript operator for the direct access to the vector elements.
Definition: DVecTransposer.h:142
Base class for N-dimensional dense vectors.
Definition: DenseVector.h:77
Base class for N-dimensional vectors.
Definition: Vector.h:82
Constraint on the data type.
Constraint on the data type.
Header file for the DenseVector base class.
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:766
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:207
#define BLAZE_CONSTRAINT_MUST_BE_VECTOR_WITH_TRANSPOSE_FLAG(T, TF)
Constraint on the data type.
Definition: TransposeFlag.h:63
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.
Definition: Computation.h:81
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_VECTOR_TYPE(T)
Constraint on the data type.
Definition: DenseVector.h:61
#define BLAZE_USER_ASSERT(expr, msg)
Run time assertion macro for user checks.
Definition: Assert.h:117
typename SIMDTrait< T >::Type SIMDTrait_t
Auxiliary alias declaration for the SIMDTrait class template.
Definition: SIMDTrait.h:315
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
#define BLAZE_THROW_OUT_OF_RANGE(MESSAGE)
Macro for the emission of a std::out_of_range exception.
Definition: Exception.h:331
Header file for the exception macros of the math module.
Constraint on the data type.
Header file for the Size type trait.
System settings for the inline keywords.
Header file for basic type definitions.