35 #ifndef _BLAZE_MATH_ADAPTORS_UPPERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_UPPERMATRIX_H_ 110 template<
typename MT,
bool SO,
bool DF >
111 inline void reset( UpperMatrix<MT,SO,DF>& m );
113 template<
typename MT,
bool SO,
bool DF >
114 inline void reset( UpperMatrix<MT,SO,DF>& m,
size_t i );
116 template<
typename MT,
bool SO,
bool DF >
117 inline void clear( UpperMatrix<MT,SO,DF>& m );
119 template<
bool RF,
typename MT,
bool SO,
bool DF >
120 inline bool isDefault(
const UpperMatrix<MT,SO,DF>& m );
122 template<
typename MT,
bool SO,
bool DF >
123 inline bool isIntact(
const UpperMatrix<MT,SO,DF>& m );
125 template<
typename MT,
bool SO,
bool DF >
126 inline void swap( UpperMatrix<MT,SO,DF>& a, UpperMatrix<MT,SO,DF>& b ) noexcept;
138 template<
typename MT
161 template<
typename MT
178 template<
typename MT
222 return isDefault<RF>( m.matrix_ );
248 template<
typename MT
266 template<
typename MT
317 invert<flag>( derestrict( m ) );
344 template<
typename MT1,
bool SO1,
typename MT2,
typename MT3,
typename MT4,
bool SO2 >
363 const size_t n( (~A).
rows() );
365 decltype(
auto) L2( derestrict( ~L ) );
375 for(
size_t i=0UL; i<n; ++i ) {
400 template<
typename MT
433 template<
typename MT
439 return trySet( mat, i, j, value );
461 template<
typename MT
467 return trySet( mat, i, j, value );
489 template<
typename MT
504 const size_t ibegin( ( column < row )?( 0UL ):( column - row + 1UL ) );
506 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
533 template<
typename MT
551 const size_t iend(
min( row - column, (~rhs).
size() ) );
553 for(
size_t i=0UL; i<iend; ++i ) {
582 template<
typename MT
600 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
628 template<
typename MT
645 const RhsIterator last( (~rhs).
end() );
646 RhsIterator element( (~rhs).lowerBound( ( column < row )?( 0UL ):( column - row + 1UL ) ) );
648 for( ; element!=last; ++element ) {
675 template<
typename MT
695 const RhsIterator last( (~rhs).lowerBound( row - column ) );
697 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
726 template<
typename MT
732 ptrdiff_t band,
size_t row,
size_t column )
744 for(
const auto& element : ~rhs ) {
772 template<
typename MT1
788 const size_t M( (~rhs).
rows() );
789 const size_t N( (~rhs).
columns() );
791 if( column + 1UL >= row + M )
794 const size_t ibegin( ( column < row )?( 0UL ):( column - row + 1UL ) );
796 for(
size_t i=ibegin; i<M; ++i )
798 const size_t jend(
min( row + i - column, N ) );
800 for(
size_t j=0UL; j<jend; ++j ) {
828 template<
typename MT1
844 const size_t M( (~rhs).
rows() );
845 const size_t N( (~rhs).
columns() );
847 if( column + 1UL >= row + M )
850 const size_t jend(
min( row + M - column - 1UL, N ) );
852 for(
size_t j=0UL; j<jend; ++j )
854 const bool containsDiagonal( column + j >= row );
855 const size_t ibegin( ( containsDiagonal )?( column + j - row + 1UL ):( 0UL ) );
857 for(
size_t i=ibegin; i<M; ++i ) {
885 template<
typename MT1
903 const size_t M( (~rhs).
rows() );
904 const size_t N( (~rhs).
columns() );
906 if( column + 1UL >= row + M )
909 const size_t ibegin( ( column < row )?( 0UL ):( column - row + 1UL ) );
911 for(
size_t i=ibegin; i<M; ++i )
913 const size_t index( row + i - column );
914 const RhsIterator last( (~rhs).lowerBound( i,
min( index, N ) ) );
916 for( RhsIterator element=(~rhs).
begin(i); element!=last; ++element ) {
944 template<
typename MT1
962 const size_t M( (~rhs).
rows() );
963 const size_t N( (~rhs).
columns() );
965 if( column + 1UL >= row + M )
968 const size_t jend(
min( row + M - column - 1UL, N ) );
970 for(
size_t j=0UL; j<jend; ++j )
972 const bool containsDiagonal( column + j >= row );
973 const size_t index( ( containsDiagonal )?( column + j - row + 1UL ):( 0UL ) );
975 const RhsIterator last( (~rhs).
end(j) );
976 RhsIterator element( (~rhs).lowerBound( index, j ) );
978 for( ; element!=last; ++element ) {
1006 template<
typename MT
1014 return tryAssign( lhs, ~rhs, row, column );
1038 template<
typename MT
1044 ptrdiff_t band,
size_t row,
size_t column )
1046 return tryAssign( lhs, ~rhs, band, row, column );
1068 template<
typename MT1
1076 return tryAssign( lhs, ~rhs, row, column );
1098 template<
typename MT
1106 return tryAssign( lhs, ~rhs, row, column );
1130 template<
typename MT
1136 ptrdiff_t band,
size_t row,
size_t column )
1138 return tryAssign( lhs, ~rhs, band, row, column );
1160 template<
typename MT1
1168 return tryAssign( lhs, ~rhs, row, column );
1188 template<
typename MT
1209 template<
typename MT,
bool SO,
bool DF >
1210 struct Size< UpperMatrix<MT,SO,DF>, 0UL >
1211 :
public Size<MT,0UL>
1214 template<
typename MT,
bool SO,
bool DF >
1215 struct Size< UpperMatrix<MT,SO,DF>, 1UL >
1216 :
public Size<MT,1UL>
1232 template<
typename MT,
bool SO,
bool DF >
1233 struct IsSquare< UpperMatrix<MT,SO,DF> >
1250 template<
typename MT,
bool SO,
bool DF >
1251 struct IsUpper< UpperMatrix<MT,SO,DF> >
1268 template<
typename MT,
bool SO,
bool DF >
1269 struct IsAdaptor< UpperMatrix<MT,SO,DF> >
1286 template<
typename MT,
bool SO,
bool DF >
1304 template<
typename MT,
bool SO >
1322 template<
typename MT,
bool SO,
bool DF >
1323 struct IsAligned< UpperMatrix<MT,SO,DF> >
1340 template<
typename MT,
bool SO,
bool DF >
1358 template<
typename MT,
bool SO,
bool DF >
1359 struct IsPadded< UpperMatrix<MT,SO,DF> >
1376 template<
typename MT,
bool SO,
bool DF >
1394 template<
typename MT,
bool SO,
bool DF >
1412 template<
typename MT,
bool SO,
bool DF >
1431 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1432 struct AddTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1437 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1438 struct AddTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1443 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1444 struct AddTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1449 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1450 struct AddTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1455 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1456 struct AddTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1461 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1462 struct AddTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1467 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1468 struct AddTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1473 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1474 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1479 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1480 struct AddTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1485 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1486 struct AddTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1491 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1492 struct AddTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1497 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1498 struct AddTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1503 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1504 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1509 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1510 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1515 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1516 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1521 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1522 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1527 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1528 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1533 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1534 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1539 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1540 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1545 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1546 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1551 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1552 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1557 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1558 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1563 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1564 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1582 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1583 struct SubTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1588 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1589 struct SubTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1594 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1595 struct SubTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1600 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1601 struct SubTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1606 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1607 struct SubTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1612 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1613 struct SubTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1618 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1619 struct SubTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1624 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1625 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1630 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1631 struct SubTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1636 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1637 struct SubTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1642 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1643 struct SubTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1648 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1649 struct SubTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1654 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1655 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1660 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1661 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1666 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1667 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1672 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1673 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1678 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1679 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1684 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1685 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1690 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1691 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1696 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1697 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1702 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1703 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1708 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1709 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1714 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1715 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1733 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1734 struct SchurTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1739 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1740 struct SchurTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1745 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1746 struct SchurTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1751 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1752 struct SchurTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1757 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1758 struct SchurTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1763 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1764 struct SchurTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1769 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1770 struct SchurTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1775 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1776 struct SchurTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1781 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1782 struct SchurTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1787 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1788 struct SchurTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1793 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1794 struct SchurTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1799 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1800 struct SchurTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1805 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1806 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1811 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1812 struct SchurTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1817 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1818 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1823 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1824 struct SchurTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1829 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1830 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1835 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1836 struct SchurTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1841 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1842 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1847 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1848 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1853 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1854 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1859 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1860 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1865 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1866 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1884 template<
typename MT,
bool SO,
bool DF,
typename T >
1885 struct MultTrait< UpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
1890 template<
typename T,
typename MT,
bool SO,
bool DF >
1891 struct MultTrait< T, UpperMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
1896 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1897 struct MultTrait< UpperMatrix<MT,SO,DF>, StaticVector<T,N,false> >
1902 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1903 struct MultTrait< StaticVector<T,N,true>, UpperMatrix<MT,SO,DF> >
1908 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1909 struct MultTrait< UpperMatrix<MT,SO,DF>, HybridVector<T,N,false> >
1914 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1915 struct MultTrait< HybridVector<T,N,true>, UpperMatrix<MT,SO,DF> >
1920 template<
typename MT,
bool SO,
bool DF,
typename T >
1921 struct MultTrait< UpperMatrix<MT,SO,DF>, DynamicVector<T,false> >
1926 template<
typename T,
typename MT,
bool SO,
bool DF >
1927 struct MultTrait< DynamicVector<T,true>, UpperMatrix<MT,SO,DF> >
1932 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
1933 struct MultTrait< UpperMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
1938 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
1939 struct MultTrait< CustomVector<T,AF,PF,true>, UpperMatrix<MT,SO,DF> >
1944 template<
typename MT,
bool SO,
bool DF,
typename T >
1945 struct MultTrait< UpperMatrix<MT,SO,DF>, CompressedVector<T,false> >
1950 template<
typename T,
typename MT,
bool SO,
bool DF >
1951 struct MultTrait< CompressedVector<T,true>, UpperMatrix<MT,SO,DF> >
1956 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1957 struct MultTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1962 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1963 struct MultTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1968 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1969 struct MultTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1974 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1975 struct MultTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1980 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1981 struct MultTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1986 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1987 struct MultTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1992 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1993 struct MultTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1998 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1999 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
2004 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2005 struct MultTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2010 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2011 struct MultTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
2016 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2017 struct MultTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2022 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2023 struct MultTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
2028 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2029 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2034 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2035 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
2040 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2041 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2046 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2047 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2052 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2053 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2058 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2059 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2064 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2065 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2070 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2071 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2076 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2077 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2082 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2083 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2088 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2089 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2107 template<
typename MT,
bool SO,
bool DF,
typename T >
2108 struct DivTrait< UpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
2126 template<
typename MT,
bool SO,
bool DF >
2132 template<
typename MT,
bool SO,
bool DF >
2138 template<
typename MT,
bool SO,
bool DF >
2144 template<
typename MT,
bool SO,
bool DF >
2150 template<
typename MT,
bool SO,
bool DF >
2156 template<
typename MT,
bool SO,
bool DF >
2162 template<
typename MT,
bool SO,
bool DF >
2168 template<
typename MT,
bool SO,
bool DF >
2174 template<
typename MT,
bool SO,
bool DF >
2180 template<
typename MT,
bool SO,
bool DF >
2186 template<
typename MT,
bool SO,
bool DF >
2192 template<
typename MT,
bool SO,
bool DF >
2198 template<
typename MT,
bool SO,
bool DF >
2204 template<
typename MT,
bool SO,
bool DF >
2210 template<
typename MT,
bool SO,
bool DF >
2216 template<
typename MT,
bool SO,
bool DF >
2222 template<
typename MT,
bool SO,
bool DF >
2228 template<
typename MT,
bool SO,
bool DF >
2234 template<
typename MT,
bool SO,
bool DF >
2253 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2254 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Min >
2259 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2260 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Max >
2278 template<
typename MT,
bool SO,
bool DF >
2297 template<
typename MT,
bool SO,
bool DF >
2316 template<
typename MT,
bool SO,
bool DF >
2335 template<
typename MT,
bool SO,
bool DF >
2354 template<
typename MT,
bool SO,
bool DF >
2373 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2374 struct HighType< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2392 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2393 struct LowType< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2411 template<
typename MT,
bool SO,
bool DF,
size_t... CSAs >
2430 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
2431 struct RowTrait< UpperMatrix<MT,SO,DF>, CRAs... >
2449 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
2450 struct RowsTrait< UpperMatrix<MT,SO,DF>, CRAs... >
2468 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
2469 struct ColumnTrait< UpperMatrix<MT,SO,DF>, CCAs... >
2487 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
2506 template<
typename MT,
bool SO,
bool DF,
ptrdiff_t... CBAs >
2507 struct BandTrait< UpperMatrix<MT,SO,DF>, CBAs... >
Pointer difference type of the Blaze library.
Header file for auxiliary alias declarations.
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.
Header file for the subtraction trait.
Flag for the inversion of a diagonal matrix.
Definition: InversionFlag.h:115
Flag for the inversion of a general matrix (same as byLU).
Definition: InversionFlag.h:108
Header file for the row trait.
Header file for the declherm trait.
Base template for the SubmatrixTrait class.
Definition: SubmatrixTrait.h:109
Flag for the inversion of a upper unitriangular matrix.
Definition: InversionFlag.h:114
Base template for the ColumnTrait class.
Definition: ColumnTrait.h:108
Flag for the inversion of a lower unitriangular matrix.
Definition: InversionFlag.h:112
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
Header file for the dense matrix inversion flags.
Base template for the SchurTrait class.
Definition: SchurTrait.h:112
UpperMatrix specialization for dense matrices.
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
UpperMatrix specialization for sparse matrices.
const ElementType_< MT > min(const DenseMatrix< MT, SO > &dm)
Returns the smallest element of the dense matrix.
Definition: DenseMatrix.h:1903
#define BLAZE_CONSTRAINT_MUST_NOT_BE_UNITRIANGULAR_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is a lower or upper unitriangular matrix ty...
Definition: UniTriangular.h:81
typename MultTrait< T1, T2 >::Type MultTrait_
Auxiliary alias declaration for the MultTrait class template.The MultTrait_ alias declaration provide...
Definition: MultTrait.h:291
Compile time check for upper triangular matrices.This type trait tests whether or not the given templ...
Definition: IsUpper.h:87
typename SubmatrixTrait< MT, CSAs... >::Type SubmatrixTrait_
Auxiliary alias declaration for the SubmatrixTrait type trait.The SubmatrixTrait_ alias declaration p...
Definition: SubmatrixTrait.h:145
Constraint on the data type.
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.
bool isIdentity(const DenseMatrix< MT, SO > &dm)
Checks if the give dense matrix is an identity matrix.
Definition: DenseMatrix.h:1827
Constraint on the data type.
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
void invert(const HermitianProxy< MT > &proxy)
In-place inversion of the represented element.
Definition: HermitianProxy.h:772
Base template for the RowTrait class.
Definition: RowTrait.h:109
Flag for the inversion of a upper triangular matrix.
Definition: InversionFlag.h:113
Compile time check for the memory layout of data types.This type trait tests whether the given data t...
Definition: IsContiguous.h:86
Constraint on the data type.
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
Flag for the LU-based matrix inversion.
Definition: InversionFlag.h:103
Header file for the IsShrinkable type trait.
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.
void lu(const DenseMatrix< MT1, SO1 > &A, DenseMatrix< MT2, SO1 > &L, DenseMatrix< MT3, SO1 > &U, Matrix< MT4, SO2 > &P)
LU decomposition of the given dense matrix.
Definition: LU.h:221
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:3085
typename T::ElementType ElementType_
Alias declaration for nested ElementType type definitions.The ElementType_ alias declaration provides...
Definition: Aliases.h:163
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
Header file for the exception macros of the math module.
#define BLAZE_CONSTRAINT_MUST_NOT_BE_UPPER_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is a upper triangular matrix type...
Definition: Upper.h:81
BLAZE_ALWAYS_INLINE void resize(Matrix< MT, SO > &matrix, size_t rows, size_t columns, bool preserve=true)
Changing the size of the matrix.
Definition: Matrix.h:714
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.
Matrix adapter for upper triangular matrices.
Definition: BaseTemplate.h:553
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.
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
Constraint on the data type.
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.
#define BLAZE_CONSTRAINT_MUST_NOT_BE_SYMMETRIC_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is a symmetric matrix type, a compilation error is created.
Definition: Symmetric.h:79
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.
Constraint on the data type.
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
#define BLAZE_CONSTRAINT_MUST_NOT_BE_LOWER_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is a lower triangular matrix type...
Definition: Lower.h:81
Header file for the declsym trait.
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_BE_BLAS_COMPATIBLE_TYPE(T)
Constraint on the data type.In case the given data type T is not a BLAS compatible data type (i...
Definition: BLASCompatible.h:61
Constraint on the data type.
#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.
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
Header file for the isDivisor shim.
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
#define BLAZE_CONSTRAINT_MUST_NOT_BE_HERMITIAN_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is an Hermitian matrix type, a compilation error is created.
Definition: Hermitian.h:79
Base template for the SubTrait class.
Definition: SubTrait.h:119
Matrix adapter for diagonal matrices.
Definition: BaseTemplate.h:560
Header file for the IsUpper type trait.
void UNUSED_PARAMETER(const Args &...)
Suppression of unused parameter warnings.
Definition: Unused.h:81
Header file for the implementation of the base template of the UpperMatrix.
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
InversionFlag
Inversion flag.The InversionFlag type enumeration represents the different types of matrix inversion ...
Definition: InversionFlag.h:101
#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