35 #ifndef _BLAZE_MATH_ADAPTORS_STRICTLYLOWERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_STRICTLYLOWERMATRIX_H_ 100 template<
typename MT,
bool SO,
bool DF >
101 inline void reset( StrictlyLowerMatrix<MT,SO,DF>& m );
103 template<
typename MT,
bool SO,
bool DF >
104 inline void reset( StrictlyLowerMatrix<MT,SO,DF>& m,
size_t i );
106 template<
typename MT,
bool SO,
bool DF >
107 inline void clear( StrictlyLowerMatrix<MT,SO,DF>& m );
109 template<
bool RF,
typename MT,
bool SO,
bool DF >
110 inline bool isDefault(
const StrictlyLowerMatrix<MT,SO,DF>& m );
112 template<
typename MT,
bool SO,
bool DF >
113 inline bool isIntact(
const StrictlyLowerMatrix<MT,SO,DF>& m );
115 template<
typename MT,
bool SO,
bool DF >
116 inline void swap( StrictlyLowerMatrix<MT,SO,DF>& a, StrictlyLowerMatrix<MT,SO,DF>& b ) noexcept;
128 template<
typename MT
151 template<
typename MT
168 template<
typename MT
195 return ( m.rows() == 0UL );
219 for(
size_t j=0UL; j<m.columns(); ++j ) {
220 for(
size_t i=j+1UL; i<m.rows(); ++i ) {
221 if( !isDefault<RF>( m(i,j) ) )
227 for(
size_t i=1UL; i<m.rows(); ++i ) {
228 for(
size_t j=0UL; j<i; ++j ) {
229 if( !isDefault<RF>( m(i,j) ) )
299 template<
typename MT
317 template<
typename MT
343 template<
typename MT
376 template<
typename MT
382 return trySet( mat, i, j, value );
404 template<
typename MT
410 return trySet( mat, i, j, value );
433 template<
typename MT
451 const size_t iend(
min( column - row + 1UL, (~rhs).
size() ) );
453 for(
size_t i=0UL; i<iend; ++i ) {
481 template<
typename MT
496 const size_t ibegin( ( row <= column )?( 0UL ):( row - column ) );
498 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
527 template<
typename MT
545 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
574 template<
typename MT
594 const RhsIterator last( (~rhs).lowerBound( column - row + 1UL ) );
596 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
624 template<
typename MT
641 const RhsIterator last( (~rhs).
end() );
642 RhsIterator element( (~rhs).lowerBound( ( row <= column )?( 0UL ):( row - column ) ) );
644 for( ; element!=last; ++element ) {
673 template<
typename MT
679 ptrdiff_t band,
size_t row,
size_t column )
691 for(
const auto& element : ~rhs ) {
720 template<
typename MT1
736 const size_t M( (~rhs).
rows() );
737 const size_t N( (~rhs).
columns() );
739 if( row >= column + N )
742 const size_t iend(
min( column + N - row, M ) );
744 for(
size_t i=0UL; i<iend; ++i )
746 const bool containsDiagonal( row + i >= column );
747 const size_t jbegin( ( containsDiagonal )?( row + i - column ):( 0UL ) );
749 for(
size_t j=jbegin; j<N; ++j ) {
778 template<
typename MT1
794 const size_t M( (~rhs).
rows() );
795 const size_t N( (~rhs).
columns() );
797 if( row >= column + N )
800 const size_t jbegin( ( row <= column )?( 0UL ):( row - column ) );
802 for(
size_t j=jbegin; j<N; ++j )
804 const size_t iend(
min( column + j - row + 1UL, M ) );
806 for(
size_t i=0UL; i<iend; ++i ) {
835 template<
typename MT1
853 const size_t M( (~rhs).
rows() );
854 const size_t N( (~rhs).
columns() );
856 if( row >= column + N )
859 const size_t iend(
min( column + N - row, M ) );
861 for(
size_t i=0UL; i<iend; ++i )
863 const bool containsDiagonal( row + i >= column );
864 const size_t index( ( containsDiagonal )?( row + i - column ):( 0UL ) );
866 const RhsIterator last( (~rhs).
end(i) );
867 RhsIterator element( (~rhs).lowerBound( i, index ) );
869 for( ; element!=last; ++element ) {
898 template<
typename MT1
916 const size_t M( (~rhs).
rows() );
917 const size_t N( (~rhs).
columns() );
919 if( row >= column + N )
922 const size_t jbegin( ( row < column )?( 0UL ):( row - column ) );
924 for(
size_t j=jbegin; j<N; ++j )
926 const size_t index( column + j - row + 1UL );
927 const RhsIterator last( (~rhs).lowerBound(
min( index, M ), j ) );
929 for( RhsIterator element=(~rhs).
begin(j); element!=last; ++element ) {
958 template<
typename MT
966 return tryAssign( lhs, ~rhs, row, column );
990 template<
typename MT
996 ptrdiff_t band,
size_t row,
size_t column )
998 return tryAssign( lhs, ~rhs, band, row, column );
1021 template<
typename MT1
1029 return tryAssign( lhs, ~rhs, row, column );
1052 template<
typename MT
1060 return tryAssign( lhs, ~rhs, row, column );
1084 template<
typename MT
1090 ptrdiff_t band,
size_t row,
size_t column )
1092 return tryAssign( lhs, ~rhs, band, row, column );
1115 template<
typename MT1
1123 return tryAssign( lhs, ~rhs, row, column );
1143 template<
typename MT
1164 template<
typename MT,
bool SO,
bool DF >
1165 struct Size< StrictlyLowerMatrix<MT,SO,DF>, 0UL >
1166 :
public Size<MT,0UL>
1169 template<
typename MT,
bool SO,
bool DF >
1170 struct Size< StrictlyLowerMatrix<MT,SO,DF>, 1UL >
1171 :
public Size<MT,1UL>
1187 template<
typename MT,
bool SO,
bool DF >
1188 struct IsSquare< StrictlyLowerMatrix<MT,SO,DF> >
1205 template<
typename MT,
bool SO,
bool DF >
1223 template<
typename MT,
bool SO,
bool DF >
1224 struct IsAdaptor< StrictlyLowerMatrix<MT,SO,DF> >
1241 template<
typename MT,
bool SO,
bool DF >
1259 template<
typename MT,
bool SO >
1277 template<
typename MT,
bool SO,
bool DF >
1278 struct IsAligned< StrictlyLowerMatrix<MT,SO,DF> >
1295 template<
typename MT,
bool SO,
bool DF >
1313 template<
typename MT,
bool SO,
bool DF >
1314 struct IsPadded< StrictlyLowerMatrix<MT,SO,DF> >
1331 template<
typename MT,
bool SO,
bool DF >
1332 struct IsResizable< StrictlyLowerMatrix<MT,SO,DF> >
1349 template<
typename MT,
bool SO,
bool DF >
1367 template<
typename MT,
bool SO,
bool DF >
1386 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1387 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1392 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1393 struct AddTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1398 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1399 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1404 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1405 struct AddTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1410 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1411 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1416 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1417 struct AddTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1422 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1423 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1428 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1429 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1434 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1435 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1440 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1441 struct AddTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1446 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1447 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1452 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1453 struct AddTrait< IdentityMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1458 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1459 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1464 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1465 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1470 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1471 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1476 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1477 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1482 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1483 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1488 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1489 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1494 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1495 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1500 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1501 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1506 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1507 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1525 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1526 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1531 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1532 struct SubTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1537 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1538 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1543 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1544 struct SubTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1549 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1550 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1555 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1556 struct SubTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1561 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1562 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1567 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1568 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1573 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1574 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1579 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1580 struct SubTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1585 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1586 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1591 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1592 struct SubTrait< IdentityMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1597 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1598 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1603 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1604 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1609 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1610 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1615 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1616 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1621 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1622 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1627 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1628 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1633 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1634 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1639 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1640 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1645 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1646 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1664 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1665 struct SchurTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1670 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1671 struct SchurTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1676 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1677 struct SchurTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1682 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1683 struct SchurTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1688 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1689 struct SchurTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1694 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1695 struct SchurTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1700 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1701 struct SchurTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1706 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1707 struct SchurTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1712 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1713 struct SchurTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1718 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1719 struct SchurTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1724 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1725 struct SchurTrait< StrictlyLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1730 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1731 struct SchurTrait< IdentityMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1736 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1737 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1742 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1743 struct SchurTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1748 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1749 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1754 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1755 struct SchurTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1760 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1761 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1766 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1767 struct SchurTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1772 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1773 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1778 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1779 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1784 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1785 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1803 template<
typename MT,
bool SO,
bool DF,
typename T >
1804 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
1809 template<
typename T,
typename MT,
bool SO,
bool DF >
1810 struct MultTrait< T, StrictlyLowerMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
1815 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1816 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, StaticVector<T,N,false> >
1821 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1822 struct MultTrait< StaticVector<T,N,true>, StrictlyLowerMatrix<MT,SO,DF> >
1827 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1828 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, HybridVector<T,N,false> >
1833 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1834 struct MultTrait< HybridVector<T,N,true>, StrictlyLowerMatrix<MT,SO,DF> >
1839 template<
typename MT,
bool SO,
bool DF,
typename T >
1840 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, DynamicVector<T,false> >
1845 template<
typename T,
typename MT,
bool SO,
bool DF >
1846 struct MultTrait< DynamicVector<T,true>, StrictlyLowerMatrix<MT,SO,DF> >
1851 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
1852 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
1857 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
1858 struct MultTrait< CustomVector<T,AF,PF,true>, StrictlyLowerMatrix<MT,SO,DF> >
1863 template<
typename MT,
bool SO,
bool DF,
typename T >
1864 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, CompressedVector<T,false> >
1869 template<
typename T,
typename MT,
bool SO,
bool DF >
1870 struct MultTrait< CompressedVector<T,true>, StrictlyLowerMatrix<MT,SO,DF> >
1875 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1876 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1881 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1882 struct MultTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1887 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1888 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1893 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1894 struct MultTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1899 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1900 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1905 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1906 struct MultTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1911 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1912 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1917 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1918 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1923 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1924 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1929 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1930 struct MultTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1935 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1936 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1941 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1942 struct MultTrait< IdentityMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1947 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1948 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1953 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1954 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1959 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1960 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1965 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1966 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1971 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1972 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1977 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1978 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1983 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1984 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1989 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1990 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1995 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1996 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2014 template<
typename MT,
bool SO,
bool DF,
typename T >
2015 struct DivTrait< StrictlyLowerMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
2033 template<
typename MT,
bool SO,
bool DF >
2039 template<
typename MT,
bool SO,
bool DF >
2040 struct UnaryMapTrait< StrictlyLowerMatrix<MT,SO,DF>, Floor >
2045 template<
typename MT,
bool SO,
bool DF >
2051 template<
typename MT,
bool SO,
bool DF >
2052 struct UnaryMapTrait< StrictlyLowerMatrix<MT,SO,DF>, Trunc >
2057 template<
typename MT,
bool SO,
bool DF >
2058 struct UnaryMapTrait< StrictlyLowerMatrix<MT,SO,DF>, Round >
2063 template<
typename MT,
bool SO,
bool DF >
2069 template<
typename MT,
bool SO,
bool DF >
2075 template<
typename MT,
bool SO,
bool DF >
2081 template<
typename MT,
bool SO,
bool DF >
2087 template<
typename MT,
bool SO,
bool DF >
2093 template<
typename MT,
bool SO,
bool DF >
2099 template<
typename MT,
bool SO,
bool DF >
2105 template<
typename MT,
bool SO,
bool DF >
2111 template<
typename MT,
bool SO,
bool DF >
2112 struct UnaryMapTrait< StrictlyLowerMatrix<MT,SO,DF>, Asinh >
2117 template<
typename MT,
bool SO,
bool DF >
2123 template<
typename MT,
bool SO,
bool DF >
2129 template<
typename MT,
bool SO,
bool DF >
2135 template<
typename MT,
bool SO,
bool DF >
2136 struct UnaryMapTrait< StrictlyLowerMatrix<MT,SO,DF>, Atanh >
2141 template<
typename MT,
bool SO,
bool DF >
2160 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2161 struct BinaryMapTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2>, Min >
2166 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2167 struct BinaryMapTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2>, Max >
2172 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2173 struct BinaryMapTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2>, Min >
2178 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2179 struct BinaryMapTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2>, Max >
2184 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2185 struct BinaryMapTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2>, Min >
2190 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2191 struct BinaryMapTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2>, Max >
2196 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2197 struct BinaryMapTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2>, Min >
2202 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2203 struct BinaryMapTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2>, Max >
2208 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2209 struct BinaryMapTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2>, Min >
2214 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2215 struct BinaryMapTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2>, Max >
2233 template<
typename MT,
bool SO,
bool DF >
2252 template<
typename MT,
bool SO,
bool DF >
2271 template<
typename MT,
bool SO,
bool DF >
2290 template<
typename MT,
bool SO,
bool DF >
2309 template<
typename MT,
bool SO,
bool DF >
2328 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2329 struct HighType< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2347 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2348 struct LowType< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2366 template<
typename MT,
bool SO,
bool DF,
size_t... CSAs >
2385 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
2386 struct RowTrait< StrictlyLowerMatrix<MT,SO,DF>, CRAs... >
2404 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
2405 struct RowsTrait< StrictlyLowerMatrix<MT,SO,DF>, CRAs... >
2423 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
2424 struct ColumnTrait< StrictlyLowerMatrix<MT,SO,DF>, CCAs... >
2442 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
2443 struct ColumnsTrait< StrictlyLowerMatrix<MT,SO,DF>, CCAs... >
2461 template<
typename MT,
bool SO,
bool DF,
ptrdiff_t... CBAs >
2462 struct BandTrait< StrictlyLowerMatrix<MT,SO,DF>, CBAs... >
Pointer difference type of the Blaze library.
decltype(auto) column(Matrix< MT, SO > &matrix, RCAs... args)
Creating a view on a specific column of the given matrix.
Definition: Column.h:131
Headerfile for the generic min algorithm.
Header file for the decldiag trait.
Header file for the Schur product trait.
Compile time check for low-level access to constant data.This type trait tests whether the given data...
Definition: HasConstDataAccess.h:75
Header file for the UNUSED_PARAMETER function template.
StrictlyLowerMatrix specialization for sparse matrices.
Header file for the subtraction trait.
Header file for the implementation of the base template of the StrictlyLowerMatrix.
Header file for the row trait.
Header file for the declherm trait.
Base template for the SubmatrixTrait class.
Definition: SubmatrixTrait.h:109
Base template for the ColumnTrait class.
Definition: ColumnTrait.h:108
BLAZE_ALWAYS_INLINE size_t size(const Vector< VT, TF > &vector) noexcept
Returns the current size/dimension of the vector.
Definition: Vector.h:265
Base template for the DeclUppTrait class.
Definition: DeclUppTrait.h:113
Generic wrapper for a compile time constant integral value.The IntegralConstant class template repres...
Definition: IntegralConstant.h:71
Matrix adapter for lower triangular matrices.
Definition: BaseTemplate.h:553
Base template for the SchurTrait class.
Definition: SchurTrait.h:112
BLAZE_ALWAYS_INLINE MT::Iterator begin(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:364
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:588
const ElementType_< MT > min(const DenseMatrix< MT, SO > &dm)
Returns the smallest element of the dense matrix.
Definition: DenseMatrix.h:1903
typename MultTrait< T1, T2 >::Type MultTrait_
Auxiliary alias declaration for the MultTrait class template.The MultTrait_ alias declaration provide...
Definition: MultTrait.h:291
typename SubmatrixTrait< MT, CSAs... >::Type SubmatrixTrait_
Auxiliary alias declaration for the SubmatrixTrait type trait.The SubmatrixTrait_ alias declaration p...
Definition: SubmatrixTrait.h:145
typename RowTrait< MT, CRAs... >::Type RowTrait_
Auxiliary alias declaration for the RowTrait type trait.The RowTrait_ alias declaration provides a co...
Definition: RowTrait.h:145
Base template for the RowsTrait class.
Definition: RowsTrait.h:109
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:80
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:129
Header file for the band trait.
Compile time check for data types with restricted data access.This type trait tests whether the given...
Definition: IsRestricted.h:82
Header file for the IsSquare type trait.
Compile time check for the alignment of data types.This type trait tests whether the given data type ...
Definition: IsAligned.h:87
Base template for the RowTrait class.
Definition: RowTrait.h:109
Compile time check for the memory layout of data types.This type trait tests whether the given data t...
Definition: IsContiguous.h:86
typename ColumnTrait< MT, CCAs... >::Type ColumnTrait_
Auxiliary alias declaration for the ColumnTrait type trait.The ColumnTrait_ alias declaration provide...
Definition: ColumnTrait.h:144
Header file for the LowType type trait.
Base template for the HighType type trait.
Definition: HighType.h:133
Header file for the multiplication trait.
Header file for the unary map trait.
typename ColumnsTrait< MT, CCAs... >::Type ColumnsTrait_
Auxiliary alias declaration for the ColumnsTrait type trait.The ColumnsTrait_ alias declaration provi...
Definition: ColumnsTrait.h:145
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Header file for the IsShrinkable type trait.
StrictlyLowerMatrix specialization for dense matrices.
Header file for all forward declarations of the math module.
Compile time check for data types with padding.This type trait tests whether the given data type empl...
Definition: IsPadded.h:76
Header file for the decllow trait.
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:3085
Base class for N-dimensional dense vectors.The DenseVector class is a base class for all arbitrarily ...
Definition: DenseVector.h:76
Compile time check for square matrices.This type trait tests whether or not the given template parame...
Definition: IsSquare.h:88
Header file for the IsAligned type trait.
BLAZE_ALWAYS_INLINE size_t columns(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of columns of the matrix.
Definition: Matrix.h:506
Base template for the DeclSymTrait class.
Definition: DeclSymTrait.h:113
BLAZE_ALWAYS_INLINE MT::Iterator end(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator just past the last element of row/column i.
Definition: Matrix.h:430
Header file for the RemoveAdaptor type trait.
Constraint on the data type.
Compile time check for adaptors.This type trait tests whether the given template parameter is an adap...
Definition: IsAdaptor.h:88
typename BandTrait< MT, CBAs... >::Type BandTrait_
Auxiliary alias declaration for the BandTrait type trait.The BandTrait_ alias declaration provides a ...
Definition: BandTrait.h:145
Header file for the EnableIf class template.
Header file for the IsStrictlyLower type trait.
void clear(const DiagonalProxy< MT > &proxy)
Clearing the represented element.
Definition: DiagonalProxy.h:608
Header file for the IsPadded type trait.
Header file for the IsAdaptor type trait.
decltype(auto) band(Matrix< MT, SO > &matrix, RBAs... args)
Creating a view on a specific band of the given matrix.
Definition: Band.h:134
typename RowsTrait< MT, CRAs... >::Type RowsTrait_
Auxiliary alias declaration for the RowsTrait type trait.The RowsTrait_ alias declaration provides a ...
Definition: RowsTrait.h:145
Compile time check for shrinkable data types.This type trait tests whether the given data type is a s...
Definition: IsShrinkable.h:75
Header file for the IsNumeric type trait.
Base template for the LowType type trait.
Definition: LowType.h:133
Header file for the HasConstDataAccess type trait.
Compile time check for resizable data types.This type trait tests whether the given data type is a re...
Definition: IsResizable.h:75
Header file for the declupp trait.
Header file for the binary map trait.
Header file for run time assertion macros.
Base template for the AddTrait class.
Definition: AddTrait.h:119
Base template for the DeclHermTrait class.
Definition: DeclHermTrait.h:113
Base template for the MultTrait class.
Definition: MultTrait.h:119
Header file for the addition trait.
Header file for the division trait.
Header file for the submatrix trait.
Header file for the IsContiguous type trait.
Header file for the columns trait.
decltype(auto) row(Matrix< MT, SO > &, RRAs...)
Creating a view on a specific row of the given matrix.
Definition: Row.h:131
Header file for the declsym trait.
Matrix adapter for strictly lower triangular matrices.
Definition: BaseTemplate.h:558
Matrix adapter for Hermitian matrices.
Definition: BaseTemplate.h:611
Header file for the column trait.
Header file for the isDefault shim.
void swap(DiagonalMatrix< MT, SO, DF > &a, DiagonalMatrix< MT, SO, DF > &b) noexcept
Swapping the contents of two matrices.
Definition: DiagonalMatrix.h:272
Base class for matrices.The Matrix class is a base class for all dense and sparse matrix classes with...
Definition: Forward.h:101
#define BLAZE_CONSTRAINT_MUST_NOT_REQUIRE_EVALUATION(T)
Constraint on the data type.In case the given data type T requires an intermediate evaluation within ...
Definition: RequiresEvaluation.h:81
Base template for the DivTrait class.
Definition: DivTrait.h:120
Header file for the rows trait.
Compile time check for strictly lower triangular matrices.This type trait tests whether or not the gi...
Definition: IsStrictlyLower.h:86
BLAZE_ALWAYS_INLINE size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:490
Base template for the DeclLowTrait class.
Definition: DeclLowTrait.h:113
Removal of top level adaptor types.In case the given type is an adaptor type (SymmetricMatrix, LowerMatrix, UpperMatrix, ...), the RemoveAdaptor type trait removes the adaptor and extracts the contained general matrix type. Else the given type is returned as is. Note that cv-qualifiers are preserved.
Definition: RemoveAdaptor.h:76
Base template for the ColumnsTrait class.
Definition: ColumnsTrait.h:109
Base class for N-dimensional vectors.The Vector class is a base class for all arbitrarily sized (N-di...
Definition: Forward.h:177
typename SubTrait< T1, T2 >::Type SubTrait_
Auxiliary alias declaration for the SubTrait class template.The SubTrait_ alias declaration provides ...
Definition: SubTrait.h:291
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
Matrix adapter for lower unitriangular matrices.
Definition: BaseTemplate.h:577
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:254
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:628
Base template for the SubTrait class.
Definition: SubTrait.h:119
Matrix adapter for diagonal matrices.
Definition: BaseTemplate.h:560
void UNUSED_PARAMETER(const Args &...)
Suppression of unused parameter warnings.
Definition: Unused.h:81
Base template for the DeclDiagTrait class.
Definition: DeclDiagTrait.h:113
Base template for the BinaryMapTrait class.
Definition: BinaryMapTrait.h:97
Header file for the IsResizable type trait.
Header file for the IsRestricted type trait.
Base template for the UnaryMapTrait class.
Definition: UnaryMapTrait.h:95
Header file for the Size type trait.
typename AddTrait< T1, T2 >::Type AddTrait_
Auxiliary alias declaration for the AddTrait class template.The AddTrait_ alias declaration provides ...
Definition: AddTrait.h:291
#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 HighType type trait.
Header file for the TrueType type/value trait base class.
Base template for the BandTrait class.
Definition: BandTrait.h:109