35#ifndef _BLAZE_MATH_EXPRESSIONS_DMATTRANSPOSER_H_
36#define _BLAZE_MATH_EXPRESSIONS_DMATTRANSPOSER_H_
147 return const_cast<const MT&
>(
dm_ )(j,i);
160 if( i >=
dm_.columns() ) {
163 if( j >=
dm_.rows() ) {
179 if( i >=
dm_.columns() ) {
182 if( j >=
dm_.rows() ) {
221 return dm_.begin( i );
237 return dm_.cbegin( i );
253 return dm_.cbegin( i );
285 return dm_.cend( i );
301 return dm_.cend( i );
310 inline size_t rows() const noexcept {
311 return dm_.columns();
331 return dm_.spacing();
353 inline void resize(
size_t m,
size_t n,
bool preserve=
true ) {
354 dm_.resize( m, n, preserve );
375 template<
typename Other >
376 inline bool canAlias(
const Other* alias )
const noexcept
378 return dm_.canAlias( alias );
388 template<
typename Other >
389 inline bool isAliased(
const Other* alias )
const noexcept
391 return dm_.isAliased( alias );
402 return dm_.isAligned();
413 return dm_.canSMPAssign();
430 return dm_.load( j, i );
447 return dm_.loada( j, i );
464 return dm_.loadu( j, i );
482 dm_.store( j, i, value );
500 dm_.storea( j, i, value );
518 dm_.storeu( j, i, value );
536 dm_.stream( j, i, value );
551 template<
typename MT2
570 template<
typename MT2
589 template<
typename MT2
608 template<
typename MT2
671template<
typename MT,
bool SO >
672struct Size< DMatTransposer<MT,SO>, 0UL >
673 :
public Size<MT,0UL>
676template<
typename MT,
bool SO >
677struct Size< DMatTransposer<MT,SO>, 1UL >
678 :
public Size<MT,1UL>
694template<
typename MT,
bool SO >
695struct MaxSize< DMatTransposer<MT,SO>, 0UL >
696 :
public MaxSize<MT,0UL>
699template<
typename MT,
bool SO >
700struct MaxSize< DMatTransposer<MT,SO>, 1UL >
701 :
public MaxSize<MT,1UL>
717template<
typename MT,
bool SO >
718struct HasConstDataAccess< DMatTransposer<MT,SO> >
719 :
public HasConstDataAccess<MT>
735template<
typename MT,
bool SO >
736struct HasMutableDataAccess< DMatTransposer<MT,SO> >
737 :
public HasMutableDataAccess<MT>
753template<
typename MT,
bool SO >
754struct IsAligned< DMatTransposer<MT,SO> >
755 :
public IsAligned<MT>
771template<
typename MT,
bool SO >
772struct IsContiguous< DMatTransposer<MT,SO> >
773 :
public IsContiguous<MT>
789template<
typename MT,
bool SO >
790struct IsPadded< DMatTransposer<MT,SO> >
791 :
public IsPadded<MT>
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::OppositeType OppositeType_t
Alias declaration for nested OppositeType type definitions.
Definition: Aliases.h:310
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.
Header file for the MaxSize type trait.
Header file for the SIMD trait.
Expression object for the transposition of a dense matrix.
Definition: DMatTransposer.h:79
size_t columns() const noexcept
Returns the current number of columns of the matrix.
Definition: DMatTransposer.h:320
MT & dm_
The dense matrix operand.
Definition: DMatTransposer.h:622
void addAssign(const Matrix< MT2, SO2 > &rhs)
Implementation of the transpose addition assignment of a matrix.
Definition: DMatTransposer.h:572
void resize(size_t m, size_t n, bool preserve=true)
Changing the size of the matrix.
Definition: DMatTransposer.h:353
bool isIntact() const noexcept
Returns whether the invariants of the matrix are intact.
Definition: DMatTransposer.h:363
ConstIterator end(size_t i) const
Returns an iterator just past the last non-zero element of row/column i.
Definition: DMatTransposer.h:284
ReturnType_t< MT > ReturnType
Return type for expression template evaluations.
Definition: DMatTransposer.h:89
Pointer data() noexcept
Low-level data access to the matrix elements.
Definition: DMatTransposer.h:194
ConstIterator cbegin(size_t i) const
Returns an iterator to the first non-zero element of row/column i.
Definition: DMatTransposer.h:252
TransposeType_t< MT > ResultType
Result type for expression template evaluations.
Definition: DMatTransposer.h:84
void assign(const Matrix< MT2, SO2 > &rhs)
Implementation of the transpose assignment of a matrix.
Definition: DMatTransposer.h:553
ConstPointer data() const noexcept
Low-level data access to the matrix elements.
Definition: DMatTransposer.h:204
DMatTransposer(MT &dm) noexcept
Constructor for the DMatTransposer class.
Definition: DMatTransposer.h:118
Pointer_t< MT > Pointer
Pointer to a non-constant matrix value.
Definition: DMatTransposer.h:93
Reference operator()(size_t i, size_t j)
2D-access to the matrix elements.
Definition: DMatTransposer.h:130
Iterator_t< MT > Iterator
Iterator over non-constant elements.
Definition: DMatTransposer.h:95
static constexpr bool smpAssignable
Compilation flag for SMP assignments.
Definition: DMatTransposer.h:110
BLAZE_ALWAYS_INLINE SIMDType loadu(size_t i, size_t j) const noexcept
Unaligned load of a SIMD element of the matrix.
Definition: DMatTransposer.h:462
bool isAliased(const Other *alias) const noexcept
Returns whether the matrix is aliased with the given address alias.
Definition: DMatTransposer.h:389
void subAssign(const Matrix< MT2, SO2 > &rhs)
Implementation of the transpose subtraction assignment of a matrix.
Definition: DMatTransposer.h:591
Reference_t< MT > Reference
Reference to a non-constant matrix value.
Definition: DMatTransposer.h:91
BLAZE_ALWAYS_INLINE void storea(size_t i, size_t j, const SIMDType &value) noexcept
Aligned store of a SIMD element of the matrix.
Definition: DMatTransposer.h:498
size_t spacing() const noexcept
Returns the spacing between the beginning of two rows.
Definition: DMatTransposer.h:330
void schurAssign(const Matrix< MT2, SO2 > &rhs)
Implementation of the transpose Schur product assignment of a matrix.
Definition: DMatTransposer.h:610
OppositeType_t< MT > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: DMatTransposer.h:85
SIMDTrait_t< ElementType > SIMDType
SIMD type of the matrix elements.
Definition: DMatTransposer.h:88
size_t rows() const noexcept
Returns the current number of rows of the matrix.
Definition: DMatTransposer.h:310
BLAZE_ALWAYS_INLINE void storeu(size_t i, size_t j, const SIMDType &value) noexcept
Unaligned store of a SIMD element of the matrix.
Definition: DMatTransposer.h:516
ConstReference_t< MT > ConstReference
Reference to a constant matrix value.
Definition: DMatTransposer.h:92
BLAZE_ALWAYS_INLINE void store(size_t i, size_t j, const SIMDType &value) noexcept
Store of a SIMD element of the matrix.
Definition: DMatTransposer.h:480
BLAZE_ALWAYS_INLINE void stream(size_t i, size_t j, const SIMDType &value) noexcept
Aligned, non-temporal store of a SIMD element of the matrix.
Definition: DMatTransposer.h:534
ConstIterator begin(size_t i) const
Returns an iterator to the first non-zero element of row/column i.
Definition: DMatTransposer.h:236
ConstPointer_t< MT > ConstPointer
Pointer to a constant matrix value.
Definition: DMatTransposer.h:94
static constexpr bool simdEnabled
Compilation flag for SIMD optimization.
Definition: DMatTransposer.h:104
BLAZE_ALWAYS_INLINE SIMDType loada(size_t i, size_t j) const noexcept
Aligned load of a SIMD element of the matrix.
Definition: DMatTransposer.h:445
Iterator end(size_t i)
Returns an iterator just past the last non-zero element of row/column i.
Definition: DMatTransposer.h:268
bool isAligned() const noexcept
Returns whether the matrix is properly aligned in memory.
Definition: DMatTransposer.h:400
bool canAlias(const Other *alias) const noexcept
Returns whether the matrix can alias with the given address alias.
Definition: DMatTransposer.h:376
bool canSMPAssign() const noexcept
Returns whether the matrix can be used in SMP assignments.
Definition: DMatTransposer.h:411
Reference at(size_t i, size_t j)
Checked access to the matrix elements.
Definition: DMatTransposer.h:159
Iterator begin(size_t i)
Returns an iterator to the first non-zero element of row/column i.
Definition: DMatTransposer.h:220
ConstReference at(size_t i, size_t j) const
Checked access to the matrix elements.
Definition: DMatTransposer.h:178
ResultType_t< MT > TransposeType
Transpose type for expression template evaluations.
Definition: DMatTransposer.h:86
ConstReference operator()(size_t i, size_t j) const
2D-access to the matrix elements.
Definition: DMatTransposer.h:144
void reset()
Resets the matrix elements.
Definition: DMatTransposer.h:340
ElementType_t< MT > ElementType
Type of the matrix elements.
Definition: DMatTransposer.h:87
BLAZE_ALWAYS_INLINE SIMDType load(size_t i, size_t j) const noexcept
Load of a SIMD element of the matrix.
Definition: DMatTransposer.h:428
ConstIterator cend(size_t i) const
Returns an iterator just past the last non-zero element of row/column i.
Definition: DMatTransposer.h:300
ConstIterator_t< MT > ConstIterator
Iterator over constant elements.
Definition: DMatTransposer.h:96
Base class for dense matrices.
Definition: DenseMatrix.h:82
Base class for matrices.
Definition: Matrix.h:85
Constraint on the data type.
Constraint on the data type.
Header file for the DenseMatrix 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_DENSE_MATRIX_TYPE(T)
Constraint on the data type.
Definition: DenseMatrix.h:61
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.
Definition: Computation.h:81
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
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.
Header file for the Size type trait.
System settings for the inline keywords.
Header file for basic type definitions.