35 #ifndef _BLAZE_MATH_ADAPTORS_UNIUPPERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_UNIUPPERMATRIX_H_ 107 template<
typename MT,
bool SO,
bool DF >
108 inline void reset( UniUpperMatrix<MT,SO,DF>& m );
110 template<
typename MT,
bool SO,
bool DF >
111 inline void reset( UniUpperMatrix<MT,SO,DF>& m,
size_t i );
113 template<
typename MT,
bool SO,
bool DF >
114 inline void clear( UniUpperMatrix<MT,SO,DF>& m );
116 template<
bool RF,
typename MT,
bool SO,
bool DF >
117 inline bool isDefault(
const UniUpperMatrix<MT,SO,DF>& m );
119 template<
typename MT,
bool SO,
bool DF >
120 inline bool isIntact(
const UniUpperMatrix<MT,SO,DF>& m );
122 template<
typename MT,
bool SO,
bool DF >
123 inline void swap( UniUpperMatrix<MT,SO,DF>& a, UniUpperMatrix<MT,SO,DF>& b ) noexcept;
135 template<
typename MT
158 template<
typename MT
175 template<
typename MT
201 return ( m.rows() == 0UL );
223 return isIdentity<RF>( m );
288 template<
typename MT
306 template<
typename MT
355 invert<flag>( derestrict( m ) );
382 template<
typename MT1,
bool SO1,
typename MT2,
typename MT3,
typename MT4,
bool SO2 >
401 const size_t n( (~A).
rows() );
403 decltype(
auto) L2( derestrict( ~L ) );
413 for(
size_t i=0UL; i<n; ++i ) {
438 template<
typename MT
453 if( column >= row + (~rhs).
size() )
456 const bool containsDiagonal( column >= row );
457 const size_t ibegin( ( !containsDiagonal )?( 0UL ):( column - row + 1UL ) );
459 if( containsDiagonal && !
isOne( (~rhs)[column-row] ) )
462 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
489 template<
typename MT
507 const bool containsDiagonal( row < column + (~rhs).
size() );
508 const size_t iend(
min( row - column, (~rhs).
size() ) );
510 for(
size_t i=0UL; i<iend; ++i ) {
515 if( containsDiagonal && !
isOne( (~rhs)[iend] ) )
540 template<
typename MT
557 if( column >= row + (~rhs).
size() )
560 const bool containsDiagonal( column >= row );
561 const size_t index( ( containsDiagonal )?( column - row ):( 0UL ) );
562 const RhsIterator last( (~rhs).
end() );
563 RhsIterator element( (~rhs).lowerBound( index ) );
565 if( containsDiagonal ) {
566 if( element == last || element->index() != index || !
isOne( element->value() ) )
571 for( ; element!=last; ++element ) {
598 template<
typename MT
618 const bool containsDiagonal( row < column + (~rhs).
size() );
619 const size_t index( row - column );
620 const RhsIterator last( (~rhs).lowerBound( index ) );
622 if( containsDiagonal ) {
623 if( last == (~rhs).
end() || last->index() != index || !
isOne( last->value() ) )
627 for( RhsIterator element=(~rhs).begin(); element!=last; ++element ) {
654 template<
typename MT1
670 const size_t M( (~rhs).
rows() );
671 const size_t N( (~rhs).
columns() );
673 if( column + 1UL >= row + M )
676 const size_t ibegin( ( column < row )?( 0UL ):( column - row ) );
678 for(
size_t i=ibegin; i<M; ++i )
680 const size_t jend(
min( row + i - column, N ) );
682 for(
size_t j=0UL; j<jend; ++j ) {
687 const bool containsDiagonal( row + i < column + N );
689 if( containsDiagonal && !
isOne( (~rhs)(i,jend) ) )
715 template<
typename MT1
731 const size_t M( (~rhs).
rows() );
732 const size_t N( (~rhs).
columns() );
734 if( column + 1UL >= row + M )
737 const size_t jend(
min( row + M - column, N ) );
739 for(
size_t j=0UL; j<jend; ++j )
741 const bool containsDiagonal( column + j >= row );
743 if( containsDiagonal && !
isOne( (~rhs)(column+j-row,j) ) )
746 const size_t ibegin( ( containsDiagonal )?( column + j - row + 1UL ):( 0UL ) );
748 for(
size_t i=ibegin; i<M; ++i ) {
776 template<
typename MT1
794 const size_t M( (~rhs).
rows() );
795 const size_t N( (~rhs).
columns() );
797 if( column + 1UL >= row + M )
800 const size_t ibegin( ( column < row )?( 0UL ):( column - row ) );
802 for(
size_t i=ibegin; i<M; ++i )
804 const bool containsDiagonal( row + i < column + N );
806 const size_t index( row + i - column );
807 const RhsIterator last( (~rhs).lowerBound( i,
min( index, N ) ) );
809 if( containsDiagonal ) {
810 if( last == (~rhs).
end(i) || ( last->index() != index ) || !
isOne( last->value() ) )
814 for( RhsIterator element=(~rhs).begin(i); element!=last; ++element ) {
842 template<
typename MT1
860 const size_t M( (~rhs).
rows() );
861 const size_t N( (~rhs).
columns() );
863 if( column + 1UL >= row + M )
866 const size_t jend(
min( row + M - column, N ) );
868 for(
size_t j=0UL; j<jend; ++j )
870 const bool containsDiagonal( column + j >= row );
871 const size_t index( ( containsDiagonal )?( column + j - row ):( 0UL ) );
873 const RhsIterator last( (~rhs).
end(j) );
874 RhsIterator element( (~rhs).lowerBound( index, j ) );
876 if( containsDiagonal ) {
877 if( element == last || ( element->index() != index ) || !
isOne( element->value() ) )
882 for( ; element!=last; ++element ) {
911 template<
typename MT
926 const size_t ibegin( ( column <= row )?( 0UL ):( column - row ) );
928 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
956 template<
typename MT
974 const size_t iend(
min( row - column + 1UL, (~rhs).
size() ) );
976 for(
size_t i=0UL; i<iend; ++i ) {
1004 template<
typename MT
1021 const RhsIterator last( (~rhs).
end() );
1022 RhsIterator element( (~rhs).lowerBound( ( column <= row )?( 0UL ):( column - row ) ) );
1024 for( ; element!=last; ++element ) {
1052 template<
typename MT
1072 const RhsIterator last( (~rhs).lowerBound( row - column + 1UL ) );
1074 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
1102 template<
typename MT1
1118 const size_t M( (~rhs).
rows() );
1119 const size_t N( (~rhs).
columns() );
1121 if( column + 1UL >= row + M )
1124 const size_t ibegin( ( column <= row )?( 0UL ):( column - row ) );
1126 for(
size_t i=ibegin; i<M; ++i )
1128 const size_t jend(
min( row + i - column + 1UL, N ) );
1130 for(
size_t j=0UL; j<jend; ++j ) {
1159 template<
typename MT1
1175 const size_t M( (~rhs).
rows() );
1176 const size_t N( (~rhs).
columns() );
1178 if( column + 1UL >= row + M )
1181 const size_t jend(
min( row + M - column, N ) );
1183 for(
size_t j=0UL; j<jend; ++j )
1185 const bool containsDiagonal( column + j >= row );
1186 const size_t ibegin( ( containsDiagonal )?( column + j - row ):( 0UL ) );
1188 for(
size_t i=ibegin; i<M; ++i ) {
1217 template<
typename MT1
1235 const size_t M( (~rhs).
rows() );
1236 const size_t N( (~rhs).
columns() );
1238 if( column + 1UL >= row + M )
1241 const size_t ibegin( ( column < row )?( 0UL ):( column - row ) );
1243 for(
size_t i=ibegin; i<M; ++i )
1245 const size_t index( row + i - column + 1UL );
1246 const RhsIterator last( (~rhs).lowerBound( i,
min( index, N ) ) );
1248 for( RhsIterator element=(~rhs).
begin(i); element!=last; ++element ) {
1277 template<
typename MT1
1295 const size_t M( (~rhs).
rows() );
1296 const size_t N( (~rhs).
columns() );
1298 if( column + 1UL >= row + M )
1301 const size_t jend(
min( row + M - column, N ) );
1303 for(
size_t j=0UL; j<jend; ++j )
1305 const bool containsDiagonal( column + j >= row );
1306 const size_t index( ( containsDiagonal )?( column + j - row ):( 0UL ) );
1308 const RhsIterator last( (~rhs).
end(j) );
1309 RhsIterator element( (~rhs).lowerBound( index, j ) );
1311 for( ; element!=last; ++element ) {
1340 template<
typename MT
1348 return tryAddAssign( lhs, ~rhs, row, column );
1371 template<
typename MT1
1379 return tryAddAssign( lhs, ~rhs, row, column );
1402 template<
typename MT
1417 return ( column < row || (~rhs).
size() <= column - row ||
isOne( (~rhs)[column-row] ) );
1440 template<
typename MT
1455 return ( row < column || (~rhs).
size() <= row - column ||
isOne( (~rhs)[row-column] ) );
1478 template<
typename MT1
1495 const size_t M( (~rhs).
rows() );
1496 const size_t N( (~rhs).
columns() );
1498 if( ( row + 1UL >= column + N ) || ( column + 1UL >= row + M ) )
1501 size_t i( row < column ? column - row : 0UL );
1502 size_t j( column < row ? row - column : 0UL );
1504 for( ; i<M && j<N; ++i, ++j )
1506 if( !
isOne( (~rhs)(i,j) ) )
1532 template<
typename MT
1540 return tryMultAssign( lhs, ~rhs, row, column );
1560 template<
typename MT
1581 template<
typename MT,
bool SO,
bool DF >
1582 struct Rows< UniUpperMatrix<MT,SO,DF> >
1599 template<
typename MT,
bool SO,
bool DF >
1600 struct Columns< UniUpperMatrix<MT,SO,DF> >
1617 template<
typename MT,
bool SO,
bool DF >
1618 struct IsSquare< UniUpperMatrix<MT,SO,DF> >
1635 template<
typename MT,
bool SO,
bool DF >
1636 struct IsUniUpper< UniUpperMatrix<MT,SO,DF> >
1653 template<
typename MT,
bool SO,
bool DF >
1654 struct IsAdaptor< UniUpperMatrix<MT,SO,DF> >
1671 template<
typename MT,
bool SO,
bool DF >
1689 template<
typename MT,
bool SO >
1707 template<
typename MT,
bool SO,
bool DF >
1708 struct IsAligned< UniUpperMatrix<MT,SO,DF> >
1725 template<
typename MT,
bool SO,
bool DF >
1726 struct IsPadded< UniUpperMatrix<MT,SO,DF> >
1743 template<
typename MT,
bool SO,
bool DF >
1761 template<
typename MT,
bool SO,
bool DF >
1779 template<
typename MT,
bool SO,
bool DF >
1798 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1799 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1804 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1805 struct AddTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
1810 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1811 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1816 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1817 struct AddTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
1822 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1823 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1828 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1829 struct AddTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
1834 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1835 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1840 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1841 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
1846 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1847 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1852 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1853 struct AddTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
1858 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1859 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1864 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1865 struct AddTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
1870 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1871 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1876 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1877 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
1882 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1883 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1888 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1889 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
1894 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1895 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1900 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1901 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
1906 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1907 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1912 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1913 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
1918 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1919 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1924 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1925 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
1930 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1931 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1936 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1937 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
1942 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1943 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
1961 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1962 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1967 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1968 struct SubTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
1973 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1974 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1979 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1980 struct SubTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
1985 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1986 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1991 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1992 struct SubTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
1997 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1998 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2003 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2004 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
2009 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2010 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2015 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2016 struct SubTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2021 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2022 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2027 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2028 struct SubTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2033 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2034 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2039 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2040 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
2045 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2046 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2051 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2052 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2057 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2058 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2063 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2064 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2069 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2070 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2075 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2076 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2081 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2082 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2087 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2088 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2093 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2094 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2099 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2100 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2105 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2106 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2124 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2125 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2130 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2131 struct SchurTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2136 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2137 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2142 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2143 struct SchurTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2148 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2149 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2154 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2155 struct SchurTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2160 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2161 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2166 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2167 struct SchurTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
2172 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2173 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2178 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2179 struct SchurTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2184 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2185 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2190 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2191 struct SchurTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2196 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2197 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2202 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2203 struct SchurTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
2208 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2209 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2214 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2215 struct SchurTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2220 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2221 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2226 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2227 struct SchurTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2232 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2233 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2238 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2239 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2244 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2245 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2250 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2251 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2256 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2257 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2262 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2263 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2268 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2269 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2287 template<
typename MT,
bool SO,
bool DF,
typename T >
2288 struct MultTrait< UniUpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
2293 template<
typename T,
typename MT,
bool SO,
bool DF >
2294 struct MultTrait< T, UniUpperMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
2299 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
2300 struct MultTrait< UniUpperMatrix<MT,SO,DF>, StaticVector<T,N,false> >
2305 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
2306 struct MultTrait< StaticVector<T,N,true>, UniUpperMatrix<MT,SO,DF> >
2311 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
2312 struct MultTrait< UniUpperMatrix<MT,SO,DF>, HybridVector<T,N,false> >
2317 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
2318 struct MultTrait< HybridVector<T,N,true>, UniUpperMatrix<MT,SO,DF> >
2323 template<
typename MT,
bool SO,
bool DF,
typename T >
2324 struct MultTrait< UniUpperMatrix<MT,SO,DF>, DynamicVector<T,false> >
2329 template<
typename T,
typename MT,
bool SO,
bool DF >
2330 struct MultTrait< DynamicVector<T,true>, UniUpperMatrix<MT,SO,DF> >
2335 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
2336 struct MultTrait< UniUpperMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
2341 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
2342 struct MultTrait< CustomVector<T,AF,PF,true>, UniUpperMatrix<MT,SO,DF> >
2347 template<
typename MT,
bool SO,
bool DF,
typename T >
2348 struct MultTrait< UniUpperMatrix<MT,SO,DF>, CompressedVector<T,false> >
2353 template<
typename T,
typename MT,
bool SO,
bool DF >
2354 struct MultTrait< CompressedVector<T,true>, UniUpperMatrix<MT,SO,DF> >
2359 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2360 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2365 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2366 struct MultTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2371 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2372 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2377 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2378 struct MultTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2383 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2384 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2389 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2390 struct MultTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2395 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2396 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2401 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2402 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
2407 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2408 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2413 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2414 struct MultTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2419 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2420 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2425 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2426 struct MultTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2431 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2432 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2437 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2438 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
2443 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2444 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2449 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2450 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2455 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2456 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2461 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2462 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2467 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2468 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2473 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2474 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2479 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2480 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2485 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2486 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2491 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2492 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2497 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2498 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2503 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2504 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2522 template<
typename MT,
bool SO,
bool DF,
typename T >
2523 struct DivTrait< UniUpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
2541 template<
typename MT,
bool SO,
bool DF >
2547 template<
typename MT,
bool SO,
bool DF >
2553 template<
typename MT,
bool SO,
bool DF >
2559 template<
typename MT,
bool SO,
bool DF >
2565 template<
typename MT,
bool SO,
bool DF >
2571 template<
typename MT,
bool SO,
bool DF >
2577 template<
typename MT,
bool SO,
bool DF >
2583 template<
typename MT,
bool SO,
bool DF >
2589 template<
typename MT,
bool SO,
bool DF >
2595 template<
typename MT,
bool SO,
bool DF,
typename ET >
2614 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2615 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Min >
2620 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2621 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Max >
2626 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2627 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Min >
2632 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2633 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Max >
2638 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2639 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Min >
2644 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2645 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Max >
2663 template<
typename MT,
bool SO,
bool DF >
2682 template<
typename MT,
bool SO,
bool DF >
2701 template<
typename MT,
bool SO,
bool DF >
2720 template<
typename MT,
bool SO,
bool DF >
2739 template<
typename MT,
bool SO,
bool DF >
2758 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2759 struct HighType< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2777 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2778 struct LowType< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2796 template<
typename MT,
bool SO,
bool DF >
2815 template<
typename MT,
bool SO,
bool DF >
2816 struct RowTrait< UniUpperMatrix<MT,SO,DF> >
2834 template<
typename MT,
bool SO,
bool DF >
Header file for auxiliary alias declarations.
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 Rows type trait.
Header file for the UNUSED_PARAMETER function template.
Header file for the IsUniUpper type trait.
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:128
Flag for the inversion of a upper unitriangular matrix.
Definition: InversionFlag.h:114
Base template for the ColumnTrait class.
Definition: ColumnTrait.h:127
Flag for the inversion of a lower unitriangular matrix.
Definition: InversionFlag.h:112
typename RowTrait< MT >::Type RowTrait_
Auxiliary alias declaration for the RowTrait type trait.The RowTrait_ alias declaration provides a co...
Definition: RowTrait.h:162
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:133
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:124
UniUpperMatrix specialization for sparse 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:198
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:560
const ElementType_< MT > min(const DenseMatrix< MT, SO > &dm)
Returns the smallest element of the dense matrix.
Definition: DenseMatrix.h:1762
#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:250
Column< MT > column(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific column of the given matrix.
Definition: Column.h:124
Constraint on the data type.
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:78
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:129
bool isIdentity(const DenseMatrix< MT, SO > &dm)
Checks if the give dense matrix is an identity matrix.
Definition: DenseMatrix.h:1686
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.
Row< MT > row(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific row of the given matrix.
Definition: Row.h:124
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:127
Compile time check for upper unitriangular matrices.This type trait tests whether or not the given te...
Definition: IsUniUpper.h:86
Flag for the inversion of a upper triangular matrix.
Definition: InversionFlag.h:113
Constraint on the data type.
Efficient implementation of an identity matrix.The IdentityMatrix class template is the representati...
Definition: Forward.h:49
Header file for the LowType type trait.
Flag for the inversion of a lower triangular matrix.
Definition: InversionFlag.h:111
Base template for the HighType type trait.
Definition: HighType.h:133
Header file for the multiplication trait.
Header file for the unary map trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Flag for the LU-based matrix inversion.
Definition: InversionFlag.h:103
Matrix adapter for strictly upper triangular matrices.
Definition: BaseTemplate.h:558
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:219
Header file for the Columns type trait.
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:3087
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:70
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:340
Base template for the DeclSymTrait class.
Definition: DeclSymTrait.h:134
#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:548
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:264
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
Header file for the EnableIf class template.
void clear(const DiagonalProxy< MT > &proxy)
Clearing the represented element.
Definition: DiagonalProxy.h:580
Header file for the IsPadded type trait.
Header file for the IsAdaptor type trait.
Header file for the isOne shim.
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.
Matrix adapter for upper unitriangular matrices.
Definition: BaseTemplate.h:576
#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:139
Base template for the DeclHermTrait class.
Definition: DeclHermTrait.h:134
Base template for the MultTrait class.
Definition: MultTrait.h:139
Header file for the addition trait.
Header file for the division trait.
Header file for the submatrix trait.
Constraint on the data type.
#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.
bool isOne(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is 1.
Definition: DiagonalProxy.h:662
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:270
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
typename SubmatrixTrait< MT >::Type SubmatrixTrait_
Auxiliary alias declaration for the SubmatrixTrait type trait.The SubmatrixTrait_ alias declaration p...
Definition: SubmatrixTrait.h:163
Base template for the DivTrait class.
Definition: DivTrait.h:139
typename ColumnTrait< MT >::Type ColumnTrait_
Auxiliary alias declaration for the ColumnTrait type trait.The ColumnTrait_ alias declaration provide...
Definition: ColumnTrait.h:162
BLAZE_ALWAYS_INLINE size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:324
Base template for the DeclLowTrait class.
Definition: DeclLowTrait.h:133
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 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:250
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:130
UniUpperMatrix specialization for dense matrices.
Header file for the IntegralConstant class template.
Compile time evaluation of the number of columns of a matrix.The Columns type trait evaluates the num...
Definition: Columns.h:75
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:252
Compile time evaluation of the number of rows of a matrix.The Rows type trait evaluates the number of...
Definition: Rows.h:75
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:600
#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:139
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:133
Base template for the BinaryMapTrait class.
Definition: BinaryMapTrait.h:119
Header file for the IsResizable type trait.
Header file for the IsRestricted type trait.
Base template for the UnaryMapTrait class.
Definition: UnaryMapTrait.h:117
typename AddTrait< T1, T2 >::Type AddTrait_
Auxiliary alias declaration for the AddTrait class template.The AddTrait_ alias declaration provides ...
Definition: AddTrait.h:250
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 implementation of the base template of the UniUpperMatrix.
Header file for the HighType type trait.
Header file for the TrueType type/value trait base class.