35 #ifndef _BLAZE_MATH_EXPRESSIONS_DMATTRANSPOSER_H_
36 #define _BLAZE_MATH_EXPRESSIONS_DMATTRANSPOSER_H_
109 enum { vectorizable = MT::vectorizable };
115 enum { smpAssignable = MT::smpAssignable };
149 inline ConstReference
operator()(
size_t i,
size_t j )
const {
164 inline Reference
at(
size_t i,
size_t j ) {
165 if( i >=
dm_.columns() ) {
168 if( j >=
dm_.rows() ) {
183 inline ConstReference
at(
size_t i,
size_t j )
const {
184 if( i >=
dm_.columns() ) {
187 if( j >=
dm_.rows() ) {
209 inline ConstPointer
data()
const {
226 return dm_.begin( i );
241 inline ConstIterator
begin(
size_t i )
const {
242 return dm_.cbegin( i );
257 inline ConstIterator
cbegin(
size_t i )
const {
258 return dm_.cbegin( i );
273 inline Iterator
end(
size_t i ) {
289 inline ConstIterator
end(
size_t i )
const {
290 return dm_.cend( i );
305 inline ConstIterator
cend(
size_t i )
const {
306 return dm_.cend( i );
317 template<
typename Other >
334 template<
typename Other >
350 return dm_.columns();
370 return dm_.spacing();
401 template<
typename Other >
404 return dm_.canAlias( alias );
414 template<
typename Other >
417 return dm_.isAliased( alias );
428 return dm_.isAligned();
439 return dm_.canSMPAssign();
456 return dm_.load( j, i );
473 return dm_.loada( j, i );
490 return dm_.loadu( j, i );
508 dm_.store( j, i, value );
526 dm_.storea( j, i, value );
544 dm_.storeu( j, i, value );
562 dm_.stream( j, i, value );
577 template<
typename MT2 >
585 const size_t m(
rows() );
588 const size_t jpos( n &
size_t(-2) );
591 for(
size_t i=0UL; i<m; ++i ) {
592 for(
size_t j=0UL; j<jpos; j+=2UL ) {
593 dm_(j ,i) = (~rhs)(i,j );
594 dm_(j+1UL,i) = (~rhs)(i,j+1UL);
597 dm_(jpos,i) = (~rhs)(i,jpos);
614 template<
typename MT2 >
622 const size_t m(
rows() );
624 const size_t block( BLOCK_SIZE );
626 for(
size_t ii=0UL; ii<m; ii+=block ) {
627 const size_t iend( ( m < ii+block )?( m ):( ii+block ) );
628 for(
size_t jj=0UL; jj<n; jj+=block ) {
629 const size_t jend( ( n < jj+block )?( n ):( jj+block ) );
630 for(
size_t i=ii; i<iend; ++i ) {
631 for(
size_t j=jj; j<jend; ++j ) {
632 dm_(j,i) = (~rhs)(i,j);
651 template<
typename MT2 >
661 for(
size_t i=0UL; i<(~rhs).
rows(); ++i )
662 for( RhsConstIterator element=(~rhs).begin(i); element!=(~rhs).
end(i); ++element )
663 dm_(element->index(),i) = element->value();
678 template<
typename MT2 >
688 for(
size_t j=0UL; j<(~rhs).
columns(); ++j )
689 for( RhsConstIterator element=(~rhs).begin(j); element!=(~rhs).
end(j); ++element )
690 dm_(j,element->index()) = element->value();
705 template<
typename MT2 >
713 const size_t m(
rows() );
716 const size_t jpos( n &
size_t(-2) );
719 for(
size_t i=0UL; i<m; ++i ) {
720 for(
size_t j=0UL; j<jpos; j+=2UL ) {
721 dm_(j ,i) += (~rhs)(i,j );
722 dm_(j+1UL,i) += (~rhs)(i,j+1UL);
726 dm_(jpos,i) += (~rhs)(i,jpos);
743 template<
typename MT2 >
751 const size_t m(
rows() );
753 const size_t block( BLOCK_SIZE );
755 for(
size_t ii=0UL; ii<m; ii+=block ) {
756 const size_t iend( ( m < ii+block )?( m ):( ii+block ) );
757 for(
size_t jj=0UL; jj<n; jj+=block ) {
758 const size_t jend( ( n < jj+block )?( n ):( jj+block ) );
759 for(
size_t i=ii; i<iend; ++i ) {
760 for(
size_t j=jj; j<jend; ++j ) {
761 dm_(j,i) += (~rhs)(i,j);
780 template<
typename MT2 >
790 for(
size_t i=0UL; i<(~rhs).
rows(); ++i )
791 for( RhsConstIterator element=(~rhs).begin(i); element!=(~rhs).
end(i); ++element )
792 dm_(element->index(),i) += element->value();
807 template<
typename MT2 >
817 for(
size_t j=0UL; j<(~rhs).
columns(); ++j )
818 for( RhsConstIterator element=(~rhs).begin(j); element!=(~rhs).
end(j); ++element )
819 dm_(j,element->index()) += element->value();
834 template<
typename MT2 >
842 const size_t m(
rows() );
845 const size_t jpos( n &
size_t(-2) );
848 for(
size_t i=0UL; i<m; ++i ) {
849 for(
size_t j=0UL; j<jpos; j+=2UL ) {
850 dm_(j ,i) -= (~rhs)(i,j );
851 dm_(j+1UL,i) -= (~rhs)(i,j+1UL);
855 dm_(jpos,i) -= (~rhs)(i,jpos);
872 template<
typename MT2 >
880 const size_t m(
rows() );
882 const size_t block( BLOCK_SIZE );
884 for(
size_t ii=0UL; ii<m; ii+=block ) {
885 const size_t iend( ( m < ii+block )?( m ):( ii+block ) );
886 for(
size_t jj=0UL; jj<n; jj+=block ) {
887 const size_t jend( ( n < jj+block )?( n ):( jj+block ) );
888 for(
size_t i=ii; i<iend; ++i ) {
889 for(
size_t j=jj; j<jend; ++j ) {
890 dm_(j,i) -= (~rhs)(i,j);
909 template<
typename MT2 >
919 for(
size_t i=0UL; i<(~rhs).
rows(); ++i )
920 for( RhsConstIterator element=(~rhs).begin(i); element!=(~rhs).
end(i); ++element )
921 dm_(element->index(),i) -= element->value();
936 template<
typename MT2 >
946 for(
size_t j=0UL; j<(~rhs).
columns(); ++j )
947 for( RhsConstIterator element=(~rhs).begin(j); element!=(~rhs).
end(j); ++element )
948 dm_(j,element->index()) -= element->value();
992 template<
typename MT >
1012 typedef typename MT::Pointer
Pointer;
1023 enum { vectorizable = MT::vectorizable };
1029 enum { smpAssignable = MT::smpAssignable };
1049 inline Reference
operator()(
size_t i,
size_t j ) {
1063 inline ConstReference
operator()(
size_t i,
size_t j )
const {
1078 inline Reference
at(
size_t i,
size_t j ) {
1079 if( i >=
dm_.columns() ) {
1082 if( j >=
dm_.rows() ) {
1085 return (*
this)(i,j);
1097 inline ConstReference
at(
size_t i,
size_t j )
const {
1098 if( i >=
dm_.columns() ) {
1101 if( j >=
dm_.rows() ) {
1104 return (*
this)(i,j);
1113 inline Pointer
data() {
1123 inline ConstPointer
data()
const {
1134 inline Iterator
begin(
size_t j ) {
1135 return dm_.begin(j);
1145 inline ConstIterator
begin(
size_t j )
const {
1146 return dm_.cbegin(j);
1156 inline ConstIterator
cbegin(
size_t j )
const {
1157 return dm_.cbegin(j);
1167 inline Iterator
end(
size_t j ) {
1178 inline ConstIterator
end(
size_t j )
const {
1189 inline ConstIterator
cend(
size_t j )
const {
1201 template<
typename Other >
1218 template<
typename Other >
1233 inline size_t rows()
const {
1234 return dm_.columns();
1243 inline size_t columns()
const {
1253 inline size_t spacing()
const {
1254 return dm_.spacing();
1263 inline void reset() {
1285 template<
typename Other >
1286 inline bool canAlias(
const Other* alias )
const
1288 return dm_.canAlias( alias );
1298 template<
typename Other >
1299 inline bool isAliased(
const Other* alias )
const
1301 return dm_.isAliased( alias );
1312 return dm_.isAligned();
1323 return dm_.canSMPAssign();
1340 return dm_.load( j, i );
1357 return dm_.loada( j, i );
1374 return dm_.loadu( j, i );
1392 dm_.store( j, i, value );
1410 dm_.storea( j, i, value );
1428 dm_.storeu( j, i, value );
1446 dm_.stream( j, i, value );
1461 template<
typename MT2 >
1462 inline void assign(
const DenseMatrix<MT2,true>& rhs )
1469 const size_t m(
rows() );
1472 const size_t ipos( m &
size_t(-2) );
1475 for(
size_t j=0UL; j<n; ++j ) {
1476 for(
size_t i=0UL; i<ipos; i+=2UL ) {
1477 dm_(j,i ) = (~rhs)(i ,j);
1478 dm_(j,i+1UL) = (~rhs)(i+1UL,j);
1481 dm_(j,ipos) = (~rhs)(ipos,j);
1498 template<
typename MT2 >
1499 inline void assign(
const DenseMatrix<MT2,false>& rhs )
1506 const size_t m(
rows() );
1508 const size_t block( BLOCK_SIZE );
1510 for(
size_t jj=0UL; jj<n; jj+=block ) {
1511 const size_t jend( ( n < jj+block )?( n ):( jj+block ) );
1512 for(
size_t ii=0UL; ii<m; ii+=block ) {
1513 const size_t iend( ( m < ii+block )?( m ):( ii+block ) );
1514 for(
size_t j=jj; j<jend; ++j ) {
1515 for(
size_t i=ii; i<iend; ++i ) {
1516 dm_(j,i) = (~rhs)(i,j);
1535 template<
typename MT2 >
1536 inline void assign(
const SparseMatrix<MT2,true>& rhs )
1545 for(
size_t j=0UL; j<(~rhs).
columns(); ++j )
1546 for( RhsConstIterator element=(~rhs).begin(j); element!=(~rhs).
end(j); ++element )
1547 dm_(j,element->index()) = element->value();
1562 template<
typename MT2 >
1563 inline void assign(
const SparseMatrix<MT2,false>& rhs )
1572 for(
size_t i=0UL; i<(~rhs).
rows(); ++i )
1573 for( RhsConstIterator element=(~rhs).begin(i); element!=(~rhs).
end(i); ++element )
1574 dm_(element->index(),i) = element->value();
1589 template<
typename MT2 >
1590 inline void addAssign(
const DenseMatrix<MT2,true>& rhs )
1597 const size_t m(
rows() );
1600 const size_t ipos( m &
size_t(-2) );
1603 for(
size_t j=0UL; j<n; ++j ) {
1604 for(
size_t i=0UL; i<ipos; i+=2UL ) {
1605 dm_(j,i ) += (~rhs)(i ,j);
1606 dm_(j,i+1UL) += (~rhs)(i+1UL,j);
1609 dm_(j,ipos) += (~rhs)(ipos,j);
1626 template<
typename MT2 >
1627 inline void addAssign(
const DenseMatrix<MT2,false>& rhs )
1634 const size_t m(
rows() );
1636 const size_t block( BLOCK_SIZE );
1638 for(
size_t jj=0UL; jj<n; jj+=block ) {
1639 const size_t jend( ( n < jj+block )?( n ):( jj+block ) );
1640 for(
size_t ii=0UL; ii<m; ii+=block ) {
1641 const size_t iend( ( m < ii+block )?( m ):( ii+block ) );
1642 for(
size_t j=jj; j<jend; ++j ) {
1643 for(
size_t i=ii; i<iend; ++i ) {
1644 dm_(j,i) += (~rhs)(i,j);
1663 template<
typename MT2 >
1664 inline void addAssign(
const SparseMatrix<MT2,true>& rhs )
1673 for(
size_t j=0UL; j<(~rhs).
columns(); ++j )
1674 for( RhsConstIterator element=(~rhs).begin(j); element!=(~rhs).
end(j); ++element )
1675 dm_(j,element->index()) += element->value();
1690 template<
typename MT2 >
1691 inline void addAssign(
const SparseMatrix<MT2,false>& rhs )
1700 for(
size_t i=0UL; i<(~rhs).
rows(); ++i )
1701 for( RhsConstIterator element=(~rhs).begin(i); element!=(~rhs).
end(i); ++element )
1702 dm_(element->index(),i) += element->value();
1717 template<
typename MT2 >
1718 inline void subAssign(
const DenseMatrix<MT2,true>& rhs )
1725 const size_t m(
rows() );
1728 const size_t ipos( m &
size_t(-2) );
1731 for(
size_t j=0UL; j<n; ++j ) {
1732 for(
size_t i=0UL; i<ipos; i+=2UL ) {
1733 dm_(j,i ) -= (~rhs)(i ,j);
1734 dm_(j,i+1UL) -= (~rhs)(i+1UL,j);
1737 dm_(j,ipos) -= (~rhs)(ipos,j);
1754 template<
typename MT2 >
1755 inline void subAssign(
const DenseMatrix<MT2,false>& rhs )
1762 const size_t m(
rows() );
1764 const size_t block( BLOCK_SIZE );
1766 for(
size_t jj=0UL; jj<n; jj+=block ) {
1767 const size_t jend( ( n < jj+block )?( n ):( jj+block ) );
1768 for(
size_t ii=0UL; ii<m; ii+=block ) {
1769 const size_t iend( ( m < ii+block )?( m ):( ii+block ) );
1770 for(
size_t j=jj; j<jend; ++j ) {
1771 for(
size_t i=ii; i<iend; ++i ) {
1772 dm_(j,i) -= (~rhs)(i,j);
1791 template<
typename MT2 >
1792 inline void subAssign(
const SparseMatrix<MT2,true>& rhs )
1801 for(
size_t j=0UL; j<(~rhs).
columns(); ++j )
1802 for( RhsConstIterator element=(~rhs).begin(j); element!=(~rhs).
end(j); ++element )
1803 dm_(j,element->index()) -= element->value();
1818 template<
typename MT2 >
1819 inline void subAssign(
const SparseMatrix<MT2,false>& rhs )
1828 for(
size_t i=0UL; i<(~rhs).
rows(); ++i )
1829 for( RhsConstIterator element=(~rhs).begin(i); element!=(~rhs).
end(i); ++element )
1830 dm_(element->index(),i) -= element->value();
1875 template<
typename MT
1877 inline void reset( DMatTransposer<MT,SO>& m )
1893 template<
typename MT
1895 inline bool isIntact(
const DMatTransposer<MT,SO>& m )
1897 return m.isIntact();
1913 template<
typename MT,
bool SO >
1914 struct HasMutableDataAccess< DMatTransposer<MT,SO> >
1915 :
public IsTrue< HasMutableDataAccess<MT>::value >
1931 template<
typename MT,
bool SO >
1932 struct IsAligned< DMatTransposer<MT,SO> > :
public IsTrue< IsAligned<MT>::value >
1948 template<
typename MT,
bool SO >
1949 struct IsPadded< DMatTransposer<MT,SO> > :
public IsTrue< IsPadded<MT>::value >
1965 template<
typename MT,
bool SO >
1966 struct SubmatrixTrait< DMatTransposer<MT,SO> >
ConstReference operator()(size_t i, size_t j) const
2D-access to the matrix elements.
Definition: DMatTransposer.h:149
Constraint on the data type.
void addAssign(const SparseMatrix< MT2, SO > &rhs)
Implementation of the transpose addition assignment of a row-major sparse matrix. ...
Definition: DMatTransposer.h:781
Header file for kernel specific block sizes.
bool canSMPAssign() const
Returns whether the matrix can be used in SMP assignments.
Definition: DMatTransposer.h:437
#define BLAZE_USER_ASSERT(expr, msg)
Run time assertion macro for user checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_USER_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERT flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:117
DMatTransposer< MT, SO > This
Type of this DMatTransposer instance.
Definition: DMatTransposer.h:88
Header file for basic type definitions.
ConstIterator end(size_t i) const
Returns an iterator just past the last non-zero element of row/column i.
Definition: DMatTransposer.h:289
BLAZE_ALWAYS_INLINE IntrinsicType load(size_t i, size_t j) const
Load of an intrinsic element of the matrix.
Definition: DMatTransposer.h:454
EnableIf< IsNumeric< Other >, DMatTransposer >::Type & operator/=(Other rhs)
Division assignment operator for the division of a matrix by a scalar value ( ).
Definition: DMatTransposer.h:335
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.In case the given data type T is a computational expression (i...
Definition: Computation.h:118
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is not a dense, N-dimensional matrix type...
Definition: DenseMatrix.h:79
void subAssign(const SparseMatrix< MT2,!SO > &rhs)
Implementation of the transpose subtraction assignment of a column-major sparse matrix.
Definition: DMatTransposer.h:937
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:507
size_t rows() const
Returns the current number of rows of the matrix.
Definition: DMatTransposer.h:349
Constraints on the storage order of matrix types.
void addAssign(const DenseMatrix< MT2, SO > &rhs)
Implementation of the transpose addition assignment of a row-major dense matrix.
Definition: DMatTransposer.h:706
size_t columns() const
Returns the current number of columns of the matrix.
Definition: DMatTransposer.h:359
MT::ReturnType ReturnType
Return type for expression template evaluations.
Definition: DMatTransposer.h:94
CompressedMatrix< Type, false > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: CompressedMatrix.h:2584
Header file for the intrinsic trait.
BLAZE_ALWAYS_INLINE void storea(size_t i, size_t j, const IntrinsicType &value)
Aligned store of an intrinsic element of the matrix.
Definition: DMatTransposer.h:524
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:70
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:117
MT::Iterator Iterator
Iterator over non-constant elements.
Definition: DMatTransposer.h:100
const This & CompositeType
Data type for composite expression templates.
Definition: DMatTransposer.h:95
Constraint on the data type.
Pointer data()
Low-level data access to the matrix elements.
Definition: DMatTransposer.h:199
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
void subAssign(const DenseMatrix< MT2, SO > &rhs)
Implementation of the transpose subtraction assignment of a row-major dense matrix.
Definition: DMatTransposer.h:835
#define BLAZE_CONSTRAINT_MUST_BE_COLUMN_MAJOR_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is not a column-major dense or sparse matri...
Definition: ColumnMajorMatrix.h:79
Reference operator()(size_t i, size_t j)
2D-access to the matrix elements.
Definition: DMatTransposer.h:135
MT::ConstPointer ConstPointer
Pointer to a constant matrix value.
Definition: DMatTransposer.h:99
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:2592
#define BLAZE_THROW_OUT_OF_RANGE(MESSAGE)
Macro for the emission of a std::out_of_range exceptionThis macro encapsulates the default way of Bla...
Definition: Exception.h:331
bool isAliased(const Other *alias) const
Returns whether the matrix is aliased with the given address alias.
Definition: DMatTransposer.h:415
Header file for the DenseMatrix base class.
EnableIf< IsNumeric< Other >, DMatTransposer >::Type & operator*=(Other rhs)
Multiplication assignment operator for the multiplication between a matrix and a scalar value ( )...
Definition: DMatTransposer.h:318
Expression object for the transposition of a dense matrix.The DMatTransposer class is a wrapper objec...
Definition: DMatTransposer.h:79
MT & dm_
The dense matrix operand.
Definition: DMatTransposer.h:962
Header file for the IsAligned type trait.
bool isAligned() const
Returns whether the matrix is properly aligned in memory.
Definition: DMatTransposer.h:426
CompressedMatrix< Type, false > TransposeType
Transpose type for expression template evaluations.
Definition: CompressedMatrix.h:2585
BLAZE_ALWAYS_INLINE IntrinsicType loadu(size_t i, size_t j) const
Unaligned load of an intrinsic element of the matrix.
Definition: DMatTransposer.h:488
MT::TransposeType ResultType
Result type for expression template evaluations.
Definition: DMatTransposer.h:89
void assign(const SparseMatrix< MT2,!SO > &rhs)
Implementation of the transpose assignment of a column-major sparse matrix.
Definition: DMatTransposer.h:679
Type ElementType
Type of the sparse matrix elements.
Definition: CompressedMatrix.h:2586
BLAZE_ALWAYS_INLINE void stream(size_t i, size_t j, const IntrinsicType &value)
Aligned, non-temporal store of an intrinsic element of the matrix.
Definition: DMatTransposer.h:560
const Type & ConstReference
Reference to a constant matrix value.
Definition: CompressedMatrix.h:2590
ConstPointer data() const
Low-level data access to the matrix elements.
Definition: DMatTransposer.h:209
void reset()
Resets the matrix elements.
Definition: DMatTransposer.h:379
Header file for the EnableIf class template.
void assign(const DenseMatrix< MT2,!SO > &rhs)
Implementation of the transpose assignment of a column-major dense matrix.
Definition: DMatTransposer.h:615
Header file for the IsPadded type trait.
size_t spacing() const
Returns the spacing between the beginning of two rows.
Definition: DMatTransposer.h:369
void assign(const DenseMatrix< MT2, SO > &rhs)
Implementation of the transpose assignment of a row-major dense matrix.
Definition: DMatTransposer.h:578
Header file for the IsNumeric type trait.
IntrinsicTrait< typename MT::ElementType > IT
Intrinsic trait for the vector element type.
Definition: DMatTransposer.h:83
void subAssign(const SparseMatrix< MT2, SO > &rhs)
Implementation of the transpose subtraction assignment of a row-major sparse matrix.
Definition: DMatTransposer.h:910
#define BLAZE_CONSTRAINT_MUST_BE_ROW_MAJOR_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is not a row-major dense or sparse matrix t...
Definition: RowMajorMatrix.h:79
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:2587
MT::ElementType ElementType
Type of the matrix elements.
Definition: DMatTransposer.h:92
Intrinsic characteristics of data types.The IntrinsicTrait class template provides the intrinsic char...
Definition: IntrinsicTrait.h:1232
IT::Type IntrinsicType
Intrinsic type of the matrix elements.
Definition: DMatTransposer.h:93
Header file for run time assertion macros.
bool isIntact() const
Returns whether the invariants of the matrix are intact.
Definition: DMatTransposer.h:389
void subAssign(const DenseMatrix< MT2,!SO > &rhs)
Implementation of the transpose subtraction assignment of a column-major dense matrix.
Definition: DMatTransposer.h:873
Header file for the submatrix trait.
ConstIterator cend(size_t i) const
Returns an iterator just past the last non-zero element of row/column i.
Definition: DMatTransposer.h:305
MT::OppositeType OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: DMatTransposer.h:90
void addAssign(const DenseMatrix< MT2,!SO > &rhs)
Implementation of the transpose addition assignment of a column-major dense matrix.
Definition: DMatTransposer.h:744
Substitution Failure Is Not An Error (SFINAE) class.The EnableIf class template is an auxiliary tool ...
Definition: EnableIf.h:184
ConstIterator cbegin(size_t i) const
Returns an iterator to the first non-zero element of row/column i.
Definition: DMatTransposer.h:257
Element * Iterator
Iterator over non-constant elements.
Definition: CompressedMatrix.h:2591
ConstReference at(size_t i, size_t j) const
Checked access to the matrix elements.
Definition: DMatTransposer.h:183
bool canAlias(const Other *alias) const
Returns whether the matrix can alias with the given address alias.
Definition: DMatTransposer.h:402
MT::Reference Reference
Reference to a non-constant matrix value.
Definition: DMatTransposer.h:96
BLAZE_ALWAYS_INLINE void storeu(size_t i, size_t j, const IntrinsicType &value)
Unaligned store of an intrinsic element of the matrix.
Definition: DMatTransposer.h:542
Constraints on the storage order of matrix types.
Header file for the HasMutableDataAccess type trait.
MT::ResultType TransposeType
Transpose type for expression template evaluations.
Definition: DMatTransposer.h:91
MT::ConstReference ConstReference
Reference to a constant matrix value.
Definition: DMatTransposer.h:97
void addAssign(const SparseMatrix< MT2,!SO > &rhs)
Implementation of the transpose addition assignment of a column-major sparse matrix.
Definition: DMatTransposer.h:808
Reference at(size_t i, size_t j)
Checked access to the matrix elements.
Definition: DMatTransposer.h:164
MT::ConstIterator ConstIterator
Iterator over constant elements.
Definition: DMatTransposer.h:101
Iterator begin(size_t i)
Returns an iterator to the first non-zero element of row/column i.
Definition: DMatTransposer.h:225
MT::Pointer Pointer
Pointer to a non-constant matrix value.
Definition: DMatTransposer.h:98
void assign(const SparseMatrix< MT2, SO > &rhs)
Implementation of the transpose assignment of a row-major sparse matrix.
Definition: DMatTransposer.h:652
This ResultType
Result type for expression template evaluations.
Definition: CompressedMatrix.h:2583
Header file for the IsTrue value trait.
BLAZE_ALWAYS_INLINE IntrinsicType loada(size_t i, size_t j) const
Aligned load of an intrinsic element of the matrix.
Definition: DMatTransposer.h:471
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:237
DMatTransposer(MT &dm)
Constructor for the DMatTransposer class.
Definition: DMatTransposer.h:123
MatrixAccessProxy< This > Reference
Reference to a non-constant matrix value.
Definition: CompressedMatrix.h:2589
Header file for exception macros.
System settings for the inline keywords.
#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
BLAZE_ALWAYS_INLINE void store(size_t i, size_t j, const IntrinsicType &value)
Store of an intrinsic element of the matrix.
Definition: DMatTransposer.h:506
ConstIterator begin(size_t i) const
Returns an iterator to the first non-zero element of row/column i.
Definition: DMatTransposer.h:241
Iterator end(size_t i)
Returns an iterator just past the last non-zero element of row/column i.
Definition: DMatTransposer.h:273