![]() |
Expression object for the transposition of a dense matrix.The DMatTransposer class is a wrapper object for the temporary transposition of a dense matrix. More...
#include <DMatTransposer.h>
Inherits blaze::DenseMatrix< DMatTransposer< MT, SO >, SO >.
Public Types | |
enum | : bool { simdEnabled = MT::simdEnabled } |
Compilation flag for SIMD optimization. More... | |
enum | : bool { smpAssignable = MT::smpAssignable } |
Compilation flag for SMP assignments. More... | |
using | This = DMatTransposer< MT, SO > |
Type of this DMatTransposer instance. | |
using | ResultType = TransposeType_< MT > |
Result type for expression template evaluations. | |
using | OppositeType = OppositeType_< MT > |
Result type with opposite storage order for expression template evaluations. | |
using | TransposeType = ResultType_< MT > |
Transpose type for expression template evaluations. | |
using | ElementType = ElementType_< MT > |
Type of the matrix elements. | |
using | SIMDType = SIMDTrait_< ElementType > |
SIMD type of the matrix elements. | |
using | ReturnType = ReturnType_< MT > |
Return type for expression template evaluations. | |
using | CompositeType = const This & |
Data type for composite expression templates. | |
using | Reference = Reference_< MT > |
Reference to a non-constant matrix value. | |
using | ConstReference = ConstReference_< MT > |
Reference to a constant matrix value. | |
using | Pointer = Pointer_< MT > |
Pointer to a non-constant matrix value. | |
using | ConstPointer = ConstPointer_< MT > |
Pointer to a constant matrix value. | |
using | Iterator = Iterator_< MT > |
Iterator over non-constant elements. | |
using | ConstIterator = ConstIterator_< MT > |
Iterator over constant elements. | |
using | MatrixType = MT |
Type of the matrix. | |
Public Member Functions | |
DMatTransposer (MT &dm) noexcept | |
Constructor for the DMatTransposer class. More... | |
Reference | operator() (size_t i, size_t j) |
2D-access to the matrix elements. More... | |
ConstReference | operator() (size_t i, size_t j) const |
2D-access to the matrix elements. More... | |
Reference | at (size_t i, size_t j) |
Checked access to the matrix elements. More... | |
ConstReference | at (size_t i, size_t j) const |
Checked access to the matrix elements. More... | |
Pointer | data () noexcept |
Low-level data access to the matrix elements. More... | |
ConstPointer | data () const noexcept |
Low-level data access to the matrix elements. More... | |
Iterator | begin (size_t i) |
Returns an iterator to the first non-zero element of row/column i. More... | |
ConstIterator | begin (size_t i) const |
Returns an iterator to the first non-zero element of row/column i. More... | |
ConstIterator | cbegin (size_t i) const |
Returns an iterator to the first non-zero element of row/column i. More... | |
Iterator | end (size_t i) |
Returns an iterator just past the last non-zero element of row/column i. More... | |
ConstIterator | end (size_t i) const |
Returns an iterator just past the last non-zero element of row/column i. More... | |
ConstIterator | cend (size_t i) const |
Returns an iterator just past the last non-zero element of row/column i. More... | |
size_t | rows () const noexcept |
Returns the current number of rows of the matrix. More... | |
size_t | columns () const noexcept |
Returns the current number of columns of the matrix. More... | |
size_t | spacing () const noexcept |
Returns the spacing between the beginning of two rows. More... | |
void | reset () |
Resets the matrix elements. More... | |
bool | isIntact () const noexcept |
Returns whether the invariants of the matrix are intact. More... | |
template<typename Other > | |
bool | canAlias (const Other *alias) const noexcept |
Returns whether the matrix can alias with the given address alias. More... | |
template<typename Other > | |
bool | isAliased (const Other *alias) const noexcept |
Returns whether the matrix is aliased with the given address alias. More... | |
bool | isAligned () const noexcept |
Returns whether the matrix is properly aligned in memory. More... | |
bool | canSMPAssign () const noexcept |
Returns whether the matrix can be used in SMP assignments. More... | |
BLAZE_ALWAYS_INLINE SIMDType | load (size_t i, size_t j) const noexcept |
Load of a SIMD element of the matrix. More... | |
BLAZE_ALWAYS_INLINE SIMDType | loada (size_t i, size_t j) const noexcept |
Aligned load of a SIMD element of the matrix. More... | |
BLAZE_ALWAYS_INLINE SIMDType | loadu (size_t i, size_t j) const noexcept |
Unaligned load of a SIMD element of the matrix. More... | |
BLAZE_ALWAYS_INLINE void | store (size_t i, size_t j, const SIMDType &value) noexcept |
Store of a SIMD element of the matrix. More... | |
BLAZE_ALWAYS_INLINE void | storea (size_t i, size_t j, const SIMDType &value) noexcept |
Aligned store of a SIMD element of the matrix. More... | |
BLAZE_ALWAYS_INLINE void | storeu (size_t i, size_t j, const SIMDType &value) noexcept |
Unaligned store of a SIMD element of the matrix. More... | |
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. More... | |
template<typename MT2 , bool SO2> | |
void | assign (const Matrix< MT2, SO2 > &rhs) |
Implementation of the transpose assignment of a matrix. More... | |
template<typename MT2 , bool SO2> | |
void | addAssign (const Matrix< MT2, SO2 > &rhs) |
Implementation of the transpose addition assignment of a matrix. More... | |
template<typename MT2 , bool SO2> | |
void | subAssign (const Matrix< MT2, SO2 > &rhs) |
Implementation of the transpose subtraction assignment of a matrix. More... | |
template<typename MT2 , bool SO2> | |
void | schurAssign (const Matrix< MT2, SO2 > &rhs) |
Implementation of the transpose Schur product assignment of a matrix. More... | |
BLAZE_ALWAYS_INLINE MatrixType & | operator~ () noexcept |
Conversion operator for non-constant matrices. More... | |
BLAZE_ALWAYS_INLINE const MatrixType & | operator~ () const noexcept |
Conversion operator for constant matrices. More... | |
Private Attributes | |
MT & | dm_ |
The dense matrix operand. | |
Expression object for the transposition of a dense matrix.
The DMatTransposer class is a wrapper object for the temporary transposition of a dense matrix.
anonymous enum : bool |
Compilation flag for SIMD optimization.
The simdEnabled compilation flag indicates whether expressions the matrix is involved in can be optimized via SIMD operations. In case the dense matrix operand is vectorizable, the simdEnabled compilation flag is set to true, otherwise it is set to false.
anonymous enum : bool |
Compilation flag for SMP assignments.
The smpAssignable compilation flag indicates whether the matrix can be used in SMP (shared memory parallel) assignments (both on the left-hand and right-hand side of the assignment).
|
inlineexplicitnoexcept |
Constructor for the DMatTransposer class.
dm | The dense matrix operand. |
|
inline |
Implementation of the transpose addition assignment of a matrix.
rhs | The right-hand side matrix to be added. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Implementation of the transpose assignment of a matrix.
rhs | The right-hand side matrix to be assigned. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inline |
Checked access to the matrix elements.
i | Access index for the row. The index has to be in the range ![]() |
j | Access index for the column. The index has to be in the range ![]() |
std::out_of_range | Invalid matrix access index. |
|
inline |
Checked access to the matrix elements.
i | Access index for the row. The index has to be in the range ![]() |
j | Access index for the column. The index has to be in the range ![]() |
std::out_of_range | Invalid matrix access index. |
|
inline |
Returns an iterator to the first non-zero element of row/column i.
i | The row/column index. |
This function returns a row/column iterator to the first non-zero element of row/column i. In case the storage order is set to rowMajor the function returns an iterator to the first non-zero element of row i, in case the storage flag is set to columnMajor the function returns an iterator to the first non-zero element of column i.
|
inline |
Returns an iterator to the first non-zero element of row/column i.
i | The row/column index. |
This function returns a row/column iterator to the first non-zero element of row/column i. In case the storage order is set to rowMajor the function returns an iterator to the first non-zero element of row i, in case the storage flag is set to columnMajor the function returns an iterator to the first non-zero element of column i.
|
inlinenoexcept |
Returns whether the matrix can alias with the given address alias.
alias | The alias to be checked. |
|
inlinenoexcept |
Returns whether the matrix can be used in SMP assignments.
|
inline |
Returns an iterator to the first non-zero element of row/column i.
i | The row/column index. |
This function returns a row/column iterator to the first non-zero element of row/column i. In case the storage order is set to rowMajor the function returns an iterator to the first non-zero element of row i, in case the storage flag is set to columnMajor the function returns an iterator to the first non-zero element of column i.
|
inline |
Returns an iterator just past the last non-zero element of row/column i.
i | The row/column index. |
This function returns an row/column iterator just past the last non-zero element of row/column i. In case the storage order is set to rowMajor the function returns an iterator just past the last non-zero element of row i, in case the storage flag is set to columnMajor the function returns an iterator just past the last non-zero element of column i.
|
inlinenoexcept |
Returns the current number of columns of the matrix.
|
inlinenoexcept |
Low-level data access to the matrix elements.
|
inlinenoexcept |
Low-level data access to the matrix elements.
|
inline |
Returns an iterator just past the last non-zero element of row/column i.
i | The row/column index. |
This function returns an row/column iterator just past the last non-zero element of row/column i. In case the storage order is set to rowMajor the function returns an iterator just past the last non-zero element of row i, in case the storage flag is set to columnMajor the function returns an iterator just past the last non-zero element of column i.
|
inline |
Returns an iterator just past the last non-zero element of row/column i.
i | The row/column index. |
This function returns an row/column iterator just past the last non-zero element of row/column i. In case the storage order is set to rowMajor the function returns an iterator just past the last non-zero element of row i, in case the storage flag is set to columnMajor the function returns an iterator just past the last non-zero element of column i.
|
inlinenoexcept |
Returns whether the matrix is aliased with the given address alias.
alias | The alias to be checked. |
|
inlinenoexcept |
Returns whether the matrix is properly aligned in memory.
|
inlinenoexcept |
Returns whether the invariants of the matrix are intact.
|
inlinenoexcept |
Load of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inlinenoexcept |
Aligned load of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inlinenoexcept |
Unaligned load of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inline |
2D-access to the matrix elements.
i | Access index for the row. The index has to be in the range ![]() |
j | Access index for the column. The index has to be in the range ![]() |
|
inline |
2D-access to the matrix elements.
i | Access index for the row. The index has to be in the range ![]() |
j | Access index for the column. The index has to be in the range ![]() |
|
inlinenoexceptinherited |
Conversion operator for non-constant matrices.
|
inlinenoexceptinherited |
Conversion operator for constant matrices.
|
inline |
Resets the matrix elements.
|
inlinenoexcept |
Returns the current number of rows of the matrix.
|
inline |
Implementation of the transpose Schur product assignment of a matrix.
rhs | The right-hand side matrix for the Schur product. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.
|
inlinenoexcept |
Returns the spacing between the beginning of two rows.
|
inlinenoexcept |
Store of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
value | The SIMD element to be stored. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inlinenoexcept |
Aligned store of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
value | The SIMD element to be stored. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inlinenoexcept |
Unaligned store of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
value | The SIMD element to be stored. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inlinenoexcept |
Aligned, non-temporal store of a SIMD element of the matrix.
i | Access index for the row. The index has to be in the range [0..M-1]. |
j | Access index for the column. The index has to be in the range [0..N-1]. |
value | The SIMD element to be stored. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors.
|
inline |
Implementation of the transpose subtraction assignment of a matrix.
rhs | The right-hand side matrix to be subtracted. |
This function must NOT be called explicitly! It is used internally for the performance optimized evaluation of expression templates. Calling this function explicitly might result in erroneous results and/or in compilation errors. Instead of using this function use the assignment operator.