35 #ifndef _BLAZE_MATH_ADAPTORS_UNIUPPERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_UNIUPPERMATRIX_H_ 109 template<
typename MT,
bool SO,
bool DF >
110 inline void reset( UniUpperMatrix<MT,SO,DF>& m );
112 template<
typename MT,
bool SO,
bool DF >
113 inline void reset( UniUpperMatrix<MT,SO,DF>& m,
size_t i );
115 template<
typename MT,
bool SO,
bool DF >
116 inline void clear( UniUpperMatrix<MT,SO,DF>& m );
118 template<
bool RF,
typename MT,
bool SO,
bool DF >
119 inline bool isDefault(
const UniUpperMatrix<MT,SO,DF>& m );
121 template<
typename MT,
bool SO,
bool DF >
122 inline bool isIntact(
const UniUpperMatrix<MT,SO,DF>& m );
124 template<
typename MT,
bool SO,
bool DF >
125 inline void swap( UniUpperMatrix<MT,SO,DF>& a, UniUpperMatrix<MT,SO,DF>& b ) noexcept;
137 template<
typename MT
160 template<
typename MT
177 template<
typename MT
203 return ( m.rows() == 0UL );
225 return isIdentity<RF>( m );
290 template<
typename MT
308 template<
typename MT
357 invert<flag>( derestrict( m ) );
384 template<
typename MT1,
bool SO1,
typename MT2,
typename MT3,
typename MT4,
bool SO2 >
403 const size_t n( (~A).
rows() );
405 decltype(
auto) L2( derestrict( ~L ) );
415 for(
size_t i=0UL; i<n; ++i ) {
440 template<
typename MT
454 return isOne( value );
478 template<
typename MT
514 template<
typename MT
520 return tryAdd( mat, i, j, value );
542 template<
typename MT
553 return ( i != j ||
isOne( value ) );
577 template<
typename MT
591 return ( row >= column + n ) || ( column >= row + m ) ||
isOne( value );
613 template<
typename MT
619 return tryMult( mat, i, j, value );
643 template<
typename MT
657 return ( row >= column + n ) || ( column >= row + m ) ||
isOne( value );
679 template<
typename MT
694 if( column >= row + (~rhs).
size() )
697 const bool containsDiagonal( column >= row );
698 const size_t ibegin( ( !containsDiagonal )?( 0UL ):( column - row + 1UL ) );
700 if( containsDiagonal && !
isOne( (~rhs)[column-row] ) )
703 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
730 template<
typename MT
748 const bool containsDiagonal( row < column + (~rhs).
size() );
749 const size_t iend(
min( row - column, (~rhs).
size() ) );
751 for(
size_t i=0UL; i<iend; ++i ) {
756 if( containsDiagonal && !
isOne( (~rhs)[iend] ) )
783 template<
typename MT
801 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
802 if( !
isOne( (~rhs)[i] ) )
806 else if( band < 0L ) {
807 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
835 template<
typename MT
852 if( column >= row + (~rhs).
size() )
855 const bool containsDiagonal( column >= row );
856 const size_t index( ( containsDiagonal )?( column - row ):( 0UL ) );
857 const RhsIterator last( (~rhs).
end() );
858 RhsIterator element( (~rhs).lowerBound( index ) );
860 if( containsDiagonal ) {
861 if( element == last || element->index() != index || !
isOne( element->value() ) )
866 for( ; element!=last; ++element ) {
893 template<
typename MT
913 const bool containsDiagonal( row < column + (~rhs).
size() );
914 const size_t index( row - column );
915 const RhsIterator last( (~rhs).lowerBound( index ) );
917 if( containsDiagonal ) {
918 if( last == (~rhs).
end() || last->index() != index || !
isOne( last->value() ) )
922 for( RhsIterator element=(~rhs).begin(); element!=last; ++element ) {
951 template<
typename MT
957 ptrdiff_t band,
size_t row,
size_t column )
971 for(
const auto& element : ~rhs ) {
972 if( !
isOne( element.value() ) )
976 else if( band < 0L ) {
977 for(
const auto& element : ~rhs ) {
1005 template<
typename MT1
1021 const size_t M( (~rhs).
rows() );
1022 const size_t N( (~rhs).
columns() );
1024 if( column >= row + M )
1027 const size_t ibegin( ( column < row )?( 0UL ):( column - row ) );
1029 for(
size_t i=ibegin; i<M; ++i )
1031 const size_t jend(
min( row + i - column, N ) );
1033 for(
size_t j=0UL; j<jend; ++j ) {
1038 const bool containsDiagonal( row + i < column + N );
1040 if( containsDiagonal && !
isOne( (~rhs)(i,jend) ) )
1066 template<
typename MT1
1082 const size_t M( (~rhs).
rows() );
1083 const size_t N( (~rhs).
columns() );
1085 if( column >= row + M )
1088 const size_t jend(
min( row + M - column, N ) );
1090 for(
size_t j=0UL; j<jend; ++j )
1092 const bool containsDiagonal( column + j >= row );
1094 if( containsDiagonal && !
isOne( (~rhs)(column+j-row,j) ) )
1097 const size_t ibegin( ( containsDiagonal )?( column + j - row + 1UL ):( 0UL ) );
1099 for(
size_t i=ibegin; i<M; ++i ) {
1127 template<
typename MT1
1145 const size_t M( (~rhs).
rows() );
1146 const size_t N( (~rhs).
columns() );
1148 if( column >= row + M )
1151 const size_t ibegin( ( column < row )?( 0UL ):( column - row ) );
1153 for(
size_t i=ibegin; i<M; ++i )
1155 const bool containsDiagonal( row + i < column + N );
1157 const size_t index( row + i - column );
1158 const RhsIterator last( (~rhs).lowerBound( i,
min( index, N ) ) );
1160 if( containsDiagonal ) {
1161 if( last == (~rhs).
end(i) || ( last->index() != index ) || !
isOne( last->value() ) )
1165 for( RhsIterator element=(~rhs).begin(i); element!=last; ++element ) {
1193 template<
typename MT1
1211 const size_t M( (~rhs).
rows() );
1212 const size_t N( (~rhs).
columns() );
1214 if( column >= row + M )
1217 const size_t jend(
min( row + M - column, N ) );
1219 for(
size_t j=0UL; j<jend; ++j )
1221 const bool containsDiagonal( column + j >= row );
1222 const size_t index( ( containsDiagonal )?( column + j - row ):( 0UL ) );
1224 const RhsIterator last( (~rhs).
end(j) );
1225 RhsIterator element( (~rhs).lowerBound( index, j ) );
1227 if( containsDiagonal ) {
1228 if( element == last || ( element->index() != index ) || !
isOne( element->value() ) )
1233 for( ; element!=last; ++element ) {
1262 template<
typename MT
1277 const size_t ibegin( ( column <= row )?( 0UL ):( column - row ) );
1279 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
1307 template<
typename MT
1325 const size_t iend(
min( row - column + 1UL, (~rhs).
size() ) );
1327 for(
size_t i=0UL; i<iend; ++i ) {
1355 template<
typename MT
1361 ptrdiff_t band,
size_t row,
size_t column )
1373 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
1402 template<
typename MT
1419 const RhsIterator last( (~rhs).
end() );
1420 RhsIterator element( (~rhs).lowerBound( ( column <= row )?( 0UL ):( column - row ) ) );
1422 for( ; element!=last; ++element ) {
1450 template<
typename MT
1470 const RhsIterator last( (~rhs).lowerBound( row - column + 1UL ) );
1472 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
1500 template<
typename MT
1506 ptrdiff_t band,
size_t row,
size_t column )
1518 for(
const auto& element : ~rhs ) {
1547 template<
typename MT1
1563 const size_t M( (~rhs).
rows() );
1564 const size_t N( (~rhs).
columns() );
1566 if( column >= row + M )
1569 const size_t ibegin( ( column <= row )?( 0UL ):( column - row ) );
1571 for(
size_t i=ibegin; i<M; ++i )
1573 const size_t jend(
min( row + i - column + 1UL, N ) );
1575 for(
size_t j=0UL; j<jend; ++j ) {
1604 template<
typename MT1
1620 const size_t M( (~rhs).
rows() );
1621 const size_t N( (~rhs).
columns() );
1623 if( column >= row + M )
1626 const size_t jend(
min( row + M - column, N ) );
1628 for(
size_t j=0UL; j<jend; ++j )
1630 const bool containsDiagonal( column + j >= row );
1631 const size_t ibegin( ( containsDiagonal )?( column + j - row ):( 0UL ) );
1633 for(
size_t i=ibegin; i<M; ++i ) {
1662 template<
typename MT1
1680 const size_t M( (~rhs).
rows() );
1681 const size_t N( (~rhs).
columns() );
1683 if( column >= row + M )
1686 const size_t ibegin( ( column < row )?( 0UL ):( column - row ) );
1688 for(
size_t i=ibegin; i<M; ++i )
1690 const size_t index( row + i - column + 1UL );
1691 const RhsIterator last( (~rhs).lowerBound( i,
min( index, N ) ) );
1693 for( RhsIterator element=(~rhs).
begin(i); element!=last; ++element ) {
1722 template<
typename MT1
1740 const size_t M( (~rhs).
rows() );
1741 const size_t N( (~rhs).
columns() );
1743 if( column >= row + M )
1746 const size_t jend(
min( row + M - column, N ) );
1748 for(
size_t j=0UL; j<jend; ++j )
1750 const bool containsDiagonal( column + j >= row );
1751 const size_t index( ( containsDiagonal )?( column + j - row ):( 0UL ) );
1753 const RhsIterator last( (~rhs).
end(j) );
1754 RhsIterator element( (~rhs).lowerBound( index, j ) );
1756 for( ; element!=last; ++element ) {
1785 template<
typename MT
1793 return tryAddAssign( lhs, ~rhs, row, column );
1817 template<
typename MT
1823 ptrdiff_t band,
size_t row,
size_t column )
1825 return tryAddAssign( lhs, ~rhs, band, row, column );
1848 template<
typename MT1
1856 return tryAddAssign( lhs, ~rhs, row, column );
1879 template<
typename MT
1894 return ( column < row || (~rhs).
size() <= column - row ||
isOne( (~rhs)[column-row] ) );
1917 template<
typename MT
1932 return ( row < column || (~rhs).
size() <= row - column ||
isOne( (~rhs)[row-column] ) );
1955 template<
typename MT
1961 ptrdiff_t band,
size_t row,
size_t column )
1973 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
1974 if( !
isOne( (~rhs)[i] ) )
2002 template<
typename MT
2008 ptrdiff_t band,
size_t row,
size_t column )
2022 for(
const auto& element : ~rhs ) {
2023 if( !
isOne( element.value() ) )
2051 template<
typename MT1
2068 const size_t M( (~rhs).
rows() );
2069 const size_t N( (~rhs).
columns() );
2071 if( ( row >= column + N ) || ( column >= row + M ) )
2074 size_t i( row < column ? column - row : 0UL );
2075 size_t j( column < row ? row - column : 0UL );
2077 for( ; i<M && j<N; ++i, ++j )
2079 if( !
isOne( (~rhs)(i,j) ) )
2105 template<
typename MT
2113 return tryMultAssign( lhs, ~rhs, row, column );
2136 template<
typename MT
2142 ptrdiff_t band,
size_t row,
size_t column )
2144 return tryMultAssign( lhs, rhs, band, row, column );
2164 template<
typename MT
2185 template<
typename MT,
bool SO,
bool DF >
2186 struct Size< UniUpperMatrix<MT,SO,DF>, 0UL >
2187 :
public Size<MT,0UL>
2190 template<
typename MT,
bool SO,
bool DF >
2191 struct Size< UniUpperMatrix<MT,SO,DF>, 1UL >
2192 :
public Size<MT,1UL>
2208 template<
typename MT,
bool SO,
bool DF >
2209 struct IsSquare< UniUpperMatrix<MT,SO,DF> >
2226 template<
typename MT,
bool SO,
bool DF >
2227 struct IsUniUpper< UniUpperMatrix<MT,SO,DF> >
2244 template<
typename MT,
bool SO,
bool DF >
2245 struct IsAdaptor< UniUpperMatrix<MT,SO,DF> >
2262 template<
typename MT,
bool SO,
bool DF >
2280 template<
typename MT,
bool SO >
2298 template<
typename MT,
bool SO,
bool DF >
2299 struct IsAligned< UniUpperMatrix<MT,SO,DF> >
2316 template<
typename MT,
bool SO,
bool DF >
2334 template<
typename MT,
bool SO,
bool DF >
2335 struct IsPadded< UniUpperMatrix<MT,SO,DF> >
2352 template<
typename MT,
bool SO,
bool DF >
2370 template<
typename MT,
bool SO,
bool DF >
2388 template<
typename MT,
bool SO,
bool DF >
2407 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2408 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2413 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2414 struct AddTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2419 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2420 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2425 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2426 struct AddTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2431 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2432 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2437 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2438 struct AddTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2443 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2444 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2449 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2450 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
2455 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2456 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2461 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2462 struct AddTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2467 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2468 struct AddTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2473 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2474 struct AddTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2479 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2480 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2485 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2486 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
2491 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2492 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2497 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2498 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2503 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2504 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2509 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2510 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2515 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2516 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2521 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2522 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2527 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2528 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2533 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2534 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2539 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2540 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2545 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2546 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2551 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2552 struct AddTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2570 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2571 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2576 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2577 struct SubTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2582 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2583 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2588 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2589 struct SubTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2594 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2595 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2600 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2601 struct SubTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2606 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2607 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2612 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2613 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
2618 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2619 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2624 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2625 struct SubTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2630 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2631 struct SubTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2636 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2637 struct SubTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2642 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2643 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2648 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2649 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
2654 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2655 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2660 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2661 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2666 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2667 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2672 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2673 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2678 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2679 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2684 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2685 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2690 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2691 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2696 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2697 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2702 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2703 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2708 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2709 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2714 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2715 struct SubTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2733 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2734 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2739 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2740 struct SchurTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2745 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2746 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2751 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2752 struct SchurTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2757 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2758 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2763 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2764 struct SchurTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2769 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2770 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2775 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2776 struct SchurTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
2781 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2782 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2787 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2788 struct SchurTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2793 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2794 struct SchurTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2799 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2800 struct SchurTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
2805 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2806 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2811 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2812 struct SchurTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
2817 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2818 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2823 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2824 struct SchurTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2829 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2830 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2835 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2836 struct SchurTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2841 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2842 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2847 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2848 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2853 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2854 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
2859 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2860 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2865 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2866 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2871 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2872 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2877 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2878 struct SchurTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
2896 template<
typename MT,
bool SO,
bool DF,
typename T >
2897 struct MultTrait< UniUpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
2902 template<
typename T,
typename MT,
bool SO,
bool DF >
2903 struct MultTrait< T, UniUpperMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
2908 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
2909 struct MultTrait< UniUpperMatrix<MT,SO,DF>, StaticVector<T,N,false> >
2914 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
2915 struct MultTrait< StaticVector<T,N,true>, UniUpperMatrix<MT,SO,DF> >
2920 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
2921 struct MultTrait< UniUpperMatrix<MT,SO,DF>, HybridVector<T,N,false> >
2926 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
2927 struct MultTrait< HybridVector<T,N,true>, UniUpperMatrix<MT,SO,DF> >
2932 template<
typename MT,
bool SO,
bool DF,
typename T >
2933 struct MultTrait< UniUpperMatrix<MT,SO,DF>, DynamicVector<T,false> >
2938 template<
typename T,
typename MT,
bool SO,
bool DF >
2939 struct MultTrait< DynamicVector<T,true>, UniUpperMatrix<MT,SO,DF> >
2944 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
2945 struct MultTrait< UniUpperMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
2950 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
2951 struct MultTrait< CustomVector<T,AF,PF,true>, UniUpperMatrix<MT,SO,DF> >
2956 template<
typename MT,
bool SO,
bool DF,
typename T >
2957 struct MultTrait< UniUpperMatrix<MT,SO,DF>, CompressedVector<T,false> >
2962 template<
typename T,
typename MT,
bool SO,
bool DF >
2963 struct MultTrait< CompressedVector<T,true>, UniUpperMatrix<MT,SO,DF> >
2968 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2969 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2974 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2975 struct MultTrait< StaticMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2980 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2981 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2986 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2987 struct MultTrait< HybridMatrix<T,M,N,SO1>, UniUpperMatrix<MT,SO2,DF> >
2992 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2993 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2998 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2999 struct MultTrait< DynamicMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
3004 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
3005 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
3010 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
3011 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, UniUpperMatrix<MT,SO2,DF> >
3016 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
3017 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
3022 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
3023 struct MultTrait< CompressedMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
3028 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
3029 struct MultTrait< UniUpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
3034 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
3035 struct MultTrait< IdentityMatrix<T,SO1>, UniUpperMatrix<MT,SO2,DF> >
3040 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
3041 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
3046 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
3047 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniUpperMatrix<MT2,SO2,DF2> >
3052 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3053 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
3058 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3059 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3064 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3065 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
3070 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3071 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3076 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3077 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
3082 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3083 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3088 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3089 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
3094 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3095 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3100 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3101 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
3106 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3107 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3112 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3113 struct MultTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3131 template<
typename MT,
bool SO,
bool DF,
typename T >
3132 struct DivTrait< UniUpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
3150 template<
typename MT,
bool SO,
bool DF >
3156 template<
typename MT,
bool SO,
bool DF >
3162 template<
typename MT,
bool SO,
bool DF >
3168 template<
typename MT,
bool SO,
bool DF >
3174 template<
typename MT,
bool SO,
bool DF >
3180 template<
typename MT,
bool SO,
bool DF >
3186 template<
typename MT,
bool SO,
bool DF >
3192 template<
typename MT,
bool SO,
bool DF >
3198 template<
typename MT,
bool SO,
bool DF >
3204 template<
typename MT,
bool SO,
bool DF,
typename ET >
3205 struct UnaryMapTrait< UniUpperMatrix<MT,SO,DF>, UnaryPow<ET> >
3223 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3224 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Min >
3229 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3230 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Max >
3235 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3236 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Min >
3241 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3242 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Max >
3247 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3248 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Min >
3253 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3254 struct BinaryMapTrait< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2>, Max >
3272 template<
typename MT,
bool SO,
bool DF >
3291 template<
typename MT,
bool SO,
bool DF >
3310 template<
typename MT,
bool SO,
bool DF >
3329 template<
typename MT,
bool SO,
bool DF >
3348 template<
typename MT,
bool SO,
bool DF >
3367 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3368 struct HighType< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3386 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3387 struct LowType< UniUpperMatrix<MT1,SO1,DF1>, UniUpperMatrix<MT2,SO2,DF2> >
3405 template<
typename MT,
bool SO,
bool DF,
size_t... CSAs >
3424 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
3425 struct RowTrait< UniUpperMatrix<MT,SO,DF>, CRAs... >
3443 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
3444 struct RowsTrait< UniUpperMatrix<MT,SO,DF>, CRAs... >
3462 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
3463 struct ColumnTrait< UniUpperMatrix<MT,SO,DF>, CCAs... >
3481 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
3482 struct ColumnsTrait< UniUpperMatrix<MT,SO,DF>, CCAs... >
3500 template<
typename MT,
bool SO,
bool DF,
ptrdiff_t... CBAs >
3501 struct BandTrait< UniUpperMatrix<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 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: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
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: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
#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
BLAZE_ALWAYS_INLINE size_t nonZeros(const Matrix< MT, SO > &matrix)
Returns the total number of non-zero elements in the matrix.
Definition: Matrix.h:560
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
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
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
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.
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
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
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: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
#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
Header file for the isOne shim.
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.
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: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.
bool isOne(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is 1.
Definition: DiagonalProxy.h:690
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
UniUpperMatrix specialization for dense matrices.
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
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
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.
Base template for the BandTrait class.
Definition: BandTrait.h:109