35 #ifndef _BLAZE_MATH_ADAPTORS_UNILOWERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_UNILOWERMATRIX_H_ 109 template<
typename MT,
bool SO,
bool DF >
110 inline void reset( UniLowerMatrix<MT,SO,DF>& m );
112 template<
typename MT,
bool SO,
bool DF >
113 inline void reset( UniLowerMatrix<MT,SO,DF>& m,
size_t i );
115 template<
typename MT,
bool SO,
bool DF >
116 inline void clear( UniLowerMatrix<MT,SO,DF>& m );
118 template<
bool RF,
typename MT,
bool SO,
bool DF >
119 inline bool isDefault(
const UniLowerMatrix<MT,SO,DF>& m );
121 template<
typename MT,
bool SO,
bool DF >
122 inline bool isIntact(
const UniLowerMatrix<MT,SO,DF>& m );
124 template<
typename MT,
bool SO,
bool DF >
125 inline void swap( UniLowerMatrix<MT,SO,DF>& a, UniLowerMatrix<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 );
289 template<
typename MT
307 template<
typename MT
356 invert<flag>( derestrict( m ) );
383 template<
typename MT1,
bool SO1,
typename MT2,
typename MT3,
typename MT4,
bool SO2 >
402 const size_t n( (~A).
rows() );
404 decltype(
auto) U2( derestrict( ~U ) );
414 for(
size_t i=0UL; i<n; ++i ) {
439 template<
typename MT
453 return isOne( value );
477 template<
typename MT
513 template<
typename MT
519 return tryAdd( mat, i, j, value );
541 template<
typename MT
552 return ( i != j || IsOne( value ) );
576 template<
typename MT
590 return ( row >= column + n ) || ( column >= row + m ) ||
isOne( value );
612 template<
typename MT
618 return tryMult( mat, i, j, value );
642 template<
typename MT
656 return ( row >= column + n ) || ( column >= row + m ) ||
isOne( value );
678 template<
typename MT
696 const bool containsDiagonal( column < row + (~rhs).
size() );
697 const size_t iend(
min( column - row, (~rhs).
size() ) );
699 for(
size_t i=0UL; i<iend; ++i ) {
704 if( containsDiagonal && !
isOne( (~rhs)[iend] ) )
729 template<
typename MT
744 if( row >= column + (~rhs).
size() )
747 const bool containsDiagonal( row >= column );
748 const size_t ibegin( ( !containsDiagonal )?( 0UL ):( row - column + 1UL ) );
750 if( containsDiagonal && !
isOne( (~rhs)[row-column] ) )
753 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
782 template<
typename MT
800 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
801 if( !
isOne( (~rhs)[i] ) )
805 else if( band > 0L ) {
806 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
834 template<
typename MT
854 const bool containsDiagonal( column < row + (~rhs).
size() );
855 const size_t index( column - row );
856 const RhsIterator last( (~rhs).lowerBound( index ) );
858 if( containsDiagonal ) {
859 if( last == (~rhs).
end() || last->index() != index || !
isOne( last->value() ) )
863 for( RhsIterator element=(~rhs).begin(); element!=last; ++element ) {
890 template<
typename MT
907 if( row >= column + (~rhs).
size() )
910 const bool containsDiagonal( row >= column );
911 const size_t index( ( containsDiagonal )?( row - column ):( 0UL ) );
912 const RhsIterator last( (~rhs).
end() );
913 RhsIterator element( (~rhs).lowerBound( index ) );
915 if( containsDiagonal ) {
916 if( element == last || element->index() != index || !
isOne( element->value() ) )
921 for( ; element!=last; ++element ) {
950 template<
typename MT
956 ptrdiff_t band,
size_t row,
size_t column )
970 for(
const auto& element : ~rhs ) {
971 if( !
isOne( element.value() ) )
975 else if( band > 0L ) {
976 for(
const auto& element : ~rhs ) {
1004 template<
typename MT1
1020 const size_t M( (~rhs).
rows() );
1021 const size_t N( (~rhs).
columns() );
1023 if( row >= column + N )
1026 const size_t iend(
min( column + N - row, M ) );
1028 for(
size_t i=0UL; i<iend; ++i )
1030 const bool containsDiagonal( row + i >= column );
1032 if( containsDiagonal && !
isOne( (~rhs)(i,row+i-column) ) )
1035 const size_t jbegin( ( containsDiagonal )?( row + i - column + 1UL ):( 0UL ) );
1037 for(
size_t j=jbegin; j<N; ++j ) {
1065 template<
typename MT1
1081 const size_t M( (~rhs).
rows() );
1082 const size_t N( (~rhs).
columns() );
1084 if( row >= column + N )
1087 const size_t jbegin( ( row < column )?( 0UL ):( row - column ) );
1089 for(
size_t j=jbegin; j<N; ++j )
1091 const size_t iend(
min( column + j - row, M ) );
1093 for(
size_t i=0UL; i<iend; ++i ) {
1098 const bool containsDiagonal( column + j < row + M );
1100 if( containsDiagonal && !
isOne( (~rhs)(iend,j) ) )
1126 template<
typename MT1
1144 const size_t M( (~rhs).
rows() );
1145 const size_t N( (~rhs).
columns() );
1147 if( row >= column + N )
1150 const size_t iend(
min( column + N - row, M ) );
1152 for(
size_t i=0UL; i<iend; ++i )
1154 const bool containsDiagonal( row + i >= column );
1155 const size_t index( ( containsDiagonal )?( row + i - column ):( 0UL ) );
1157 const RhsIterator last( (~rhs).
end(i) );
1158 RhsIterator element( (~rhs).lowerBound( i, index ) );
1160 if( containsDiagonal ) {
1161 if( element == last || ( element->index() != index ) || !
isOne( element->value() ) )
1166 for( ; element!=last; ++element ) {
1194 template<
typename MT1
1212 const size_t M( (~rhs).
rows() );
1213 const size_t N( (~rhs).
columns() );
1215 if( row >= column + N )
1218 const size_t jbegin( ( row < column )?( 0UL ):( row - column ) );
1220 for(
size_t j=jbegin; j<N; ++j )
1222 const bool containsDiagonal( column + j < row + M );
1224 const size_t index( column + j - row );
1225 const RhsIterator last( (~rhs).lowerBound(
min( index, M ), j ) );
1227 if( containsDiagonal ) {
1228 if( last == (~rhs).
end(j) || ( last->index() != index ) || !
isOne( last->value() ) )
1232 for( RhsIterator element=(~rhs).begin(j); element!=last; ++element ) {
1261 template<
typename MT
1279 const size_t iend(
min( column - row + 1UL, (~rhs).
size() ) );
1281 for(
size_t i=0UL; i<iend; ++i ) {
1309 template<
typename MT
1324 const size_t ibegin( ( row <= column )?( 0UL ):( row - column ) );
1326 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
1354 template<
typename MT
1360 ptrdiff_t band,
size_t row,
size_t column )
1372 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
1401 template<
typename MT
1421 const RhsIterator last( (~rhs).lowerBound( column - row + 1UL ) );
1423 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
1451 template<
typename MT
1468 const RhsIterator last( (~rhs).
end() );
1469 RhsIterator element( (~rhs).lowerBound( ( row <= column )?( 0UL ):( row - column ) ) );
1471 for( ; element!=last; ++element ) {
1499 template<
typename MT
1505 ptrdiff_t band,
size_t row,
size_t column )
1517 for(
const auto& element : ~rhs ) {
1546 template<
typename MT1
1562 const size_t M( (~rhs).
rows() );
1563 const size_t N( (~rhs).
columns() );
1565 if( row >= column + N )
1568 const size_t iend(
min( column + N - row, M ) );
1570 for(
size_t i=0UL; i<iend; ++i )
1572 const bool containsDiagonal( row + i >= column );
1573 const size_t jbegin( ( containsDiagonal )?( row + i - column ):( 0UL ) );
1575 for(
size_t j=jbegin; j<N; ++j ) {
1604 template<
typename MT1
1620 const size_t M( (~rhs).
rows() );
1621 const size_t N( (~rhs).
columns() );
1623 if( row >= column + N )
1626 const size_t jbegin( ( row <= column )?( 0UL ):( row - column ) );
1628 for(
size_t j=jbegin; j<N; ++j )
1630 const size_t iend(
min( column + j - row + 1UL, M ) );
1632 for(
size_t i=0UL; i<iend; ++i ) {
1661 template<
typename MT1
1679 const size_t M( (~rhs).
rows() );
1680 const size_t N( (~rhs).
columns() );
1682 if( row >= column + N )
1685 const size_t iend(
min( column + N - row, M ) );
1687 for(
size_t i=0UL; i<iend; ++i )
1689 const bool containsDiagonal( row + i >= column );
1690 const size_t index( ( containsDiagonal )?( row + i - column ):( 0UL ) );
1692 const RhsIterator last( (~rhs).
end(i) );
1693 RhsIterator element( (~rhs).lowerBound( i, index ) );
1695 for( ; element!=last; ++element ) {
1724 template<
typename MT1
1742 const size_t M( (~rhs).
rows() );
1743 const size_t N( (~rhs).
columns() );
1745 if( row >= column + N )
1748 const size_t jbegin( ( row < column )?( 0UL ):( row - column ) );
1750 for(
size_t j=jbegin; j<N; ++j )
1752 const size_t index( column + j - row + 1UL );
1753 const RhsIterator last( (~rhs).lowerBound(
min( index, M ), j ) );
1755 for( RhsIterator element=(~rhs).
begin(j); element!=last; ++element ) {
1784 template<
typename MT
1792 return tryAddAssign( lhs, ~rhs, row, column );
1816 template<
typename MT
1822 ptrdiff_t band,
size_t row,
size_t column )
1824 return tryAddAssign( lhs, ~rhs, band, row, column );
1847 template<
typename MT1
1855 return tryAddAssign( lhs, ~rhs, row, column );
1878 template<
typename MT
1893 return ( column < row || (~rhs).
size() <= column - row ||
isOne( (~rhs)[column-row] ) );
1916 template<
typename MT
1931 return ( row < column || (~rhs).
size() <= row - column ||
isOne( (~rhs)[row-column] ) );
1954 template<
typename MT
1960 ptrdiff_t band,
size_t row,
size_t column )
1972 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
1973 if( !
isOne( (~rhs)[i] ) )
2001 template<
typename MT
2007 ptrdiff_t band,
size_t row,
size_t column )
2021 for(
const auto& element : ~rhs ) {
2022 if( !
isOne( element.value() ) )
2050 template<
typename MT1
2067 const size_t M( (~rhs).
rows() );
2068 const size_t N( (~rhs).
columns() );
2070 if( ( row >= column + N ) || ( column >= row + M ) )
2073 size_t i( row < column ? column - row : 0UL );
2074 size_t j( column < row ? row - column : 0UL );
2076 for( ; i<M && j<N; ++i, ++j )
2078 if( !
isOne( (~rhs)(i,j) ) )
2104 template<
typename MT
2112 return tryMultAssign( lhs, ~rhs, row, column );
2135 template<
typename MT
2141 ptrdiff_t band,
size_t row,
size_t column )
2143 return tryMultAssign( lhs, rhs, band, row, column );
2163 template<
typename MT
2184 template<
typename MT,
bool SO,
bool DF >
2185 struct Size< UniLowerMatrix<MT,SO,DF>, 0UL >
2186 :
public Size<MT,0UL>
2189 template<
typename MT,
bool SO,
bool DF >
2190 struct Size< UniLowerMatrix<MT,SO,DF>, 1UL >
2191 :
public Size<MT,1UL>
2207 template<
typename MT,
bool SO,
bool DF >
2208 struct IsSquare< UniLowerMatrix<MT,SO,DF> >
2225 template<
typename MT,
bool SO,
bool DF >
2226 struct IsUniLower< UniLowerMatrix<MT,SO,DF> >
2243 template<
typename MT,
bool SO,
bool DF >
2244 struct IsAdaptor< UniLowerMatrix<MT,SO,DF> >
2261 template<
typename MT,
bool SO,
bool DF >
2279 template<
typename MT,
bool SO >
2297 template<
typename MT,
bool SO,
bool DF >
2298 struct IsAligned< UniLowerMatrix<MT,SO,DF> >
2315 template<
typename MT,
bool SO,
bool DF >
2333 template<
typename MT,
bool SO,
bool DF >
2334 struct IsPadded< UniLowerMatrix<MT,SO,DF> >
2351 template<
typename MT,
bool SO,
bool DF >
2369 template<
typename MT,
bool SO,
bool DF >
2387 template<
typename MT,
bool SO,
bool DF >
2406 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2407 struct AddTrait< UniLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2412 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2413 struct AddTrait< StaticMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2418 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2419 struct AddTrait< UniLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2424 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2425 struct AddTrait< HybridMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2430 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2431 struct AddTrait< UniLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2436 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2437 struct AddTrait< DynamicMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2442 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2443 struct AddTrait< UniLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2448 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2449 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, UniLowerMatrix<MT,SO2,DF> >
2454 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2455 struct AddTrait< UniLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2460 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2461 struct AddTrait< CompressedMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2466 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2467 struct AddTrait< UniLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2472 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2473 struct AddTrait< IdentityMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2478 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2479 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2484 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2485 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniLowerMatrix<MT2,SO2,DF2> >
2490 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2491 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2496 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2497 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2502 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2503 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2508 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2509 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2514 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2515 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2533 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2534 struct SubTrait< UniLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2539 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2540 struct SubTrait< StaticMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2545 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2546 struct SubTrait< UniLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2551 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2552 struct SubTrait< HybridMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2557 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2558 struct SubTrait< UniLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2563 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2564 struct SubTrait< DynamicMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2569 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2570 struct SubTrait< UniLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2575 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2576 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, UniLowerMatrix<MT,SO2,DF> >
2581 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2582 struct SubTrait< UniLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2587 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2588 struct SubTrait< CompressedMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2593 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2594 struct SubTrait< UniLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2599 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2600 struct SubTrait< IdentityMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2605 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2606 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2611 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2612 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniLowerMatrix<MT2,SO2,DF2> >
2617 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2618 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2623 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2624 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2629 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2630 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2635 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2636 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2641 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2642 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2660 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2661 struct SchurTrait< UniLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2666 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2667 struct SchurTrait< StaticMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2672 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2673 struct SchurTrait< UniLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2678 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2679 struct SchurTrait< HybridMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2684 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2685 struct SchurTrait< UniLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2690 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2691 struct SchurTrait< DynamicMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2696 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2697 struct SchurTrait< UniLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2702 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2703 struct SchurTrait< CustomMatrix<T,AF,PF,SO1>, UniLowerMatrix<MT,SO2,DF> >
2708 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2709 struct SchurTrait< UniLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2714 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2715 struct SchurTrait< CompressedMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2720 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2721 struct SchurTrait< UniLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2726 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2727 struct SchurTrait< IdentityMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2732 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2733 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2738 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2739 struct SchurTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniLowerMatrix<MT2,SO2,DF2> >
2744 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2745 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2750 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2751 struct SchurTrait< HermitianMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2756 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2757 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2762 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2763 struct SchurTrait< LowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2768 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2769 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2787 template<
typename MT,
bool SO,
bool DF,
typename T >
2788 struct MultTrait< UniLowerMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
2793 template<
typename T,
typename MT,
bool SO,
bool DF >
2794 struct MultTrait< T, UniLowerMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
2799 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
2800 struct MultTrait< UniLowerMatrix<MT,SO,DF>, StaticVector<T,N,false> >
2805 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
2806 struct MultTrait< StaticVector<T,N,true>, UniLowerMatrix<MT,SO,DF> >
2811 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
2812 struct MultTrait< UniLowerMatrix<MT,SO,DF>, HybridVector<T,N,false> >
2817 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
2818 struct MultTrait< HybridVector<T,N,true>, UniLowerMatrix<MT,SO,DF> >
2823 template<
typename MT,
bool SO,
bool DF,
typename T >
2824 struct MultTrait< UniLowerMatrix<MT,SO,DF>, DynamicVector<T,false> >
2829 template<
typename T,
typename MT,
bool SO,
bool DF >
2830 struct MultTrait< DynamicVector<T,true>, UniLowerMatrix<MT,SO,DF> >
2835 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
2836 struct MultTrait< UniLowerMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
2841 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
2842 struct MultTrait< CustomVector<T,AF,PF,true>, UniLowerMatrix<MT,SO,DF> >
2847 template<
typename MT,
bool SO,
bool DF,
typename T >
2848 struct MultTrait< UniLowerMatrix<MT,SO,DF>, CompressedVector<T,false> >
2853 template<
typename T,
typename MT,
bool SO,
bool DF >
2854 struct MultTrait< CompressedVector<T,true>, UniLowerMatrix<MT,SO,DF> >
2859 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2860 struct MultTrait< UniLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
2865 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2866 struct MultTrait< StaticMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2871 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
2872 struct MultTrait< UniLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
2877 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
2878 struct MultTrait< HybridMatrix<T,M,N,SO1>, UniLowerMatrix<MT,SO2,DF> >
2883 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2884 struct MultTrait< UniLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
2889 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2890 struct MultTrait< DynamicMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2895 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
2896 struct MultTrait< UniLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
2901 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
2902 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, UniLowerMatrix<MT,SO2,DF> >
2907 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2908 struct MultTrait< UniLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
2913 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2914 struct MultTrait< CompressedMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2919 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
2920 struct MultTrait< UniLowerMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
2925 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
2926 struct MultTrait< IdentityMatrix<T,SO1>, UniLowerMatrix<MT,SO2,DF> >
2931 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
2932 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
2937 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
2938 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UniLowerMatrix<MT2,SO2,DF2> >
2943 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2944 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
2949 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2950 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2955 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2956 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
2961 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2962 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2967 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2968 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
2986 template<
typename MT,
bool SO,
bool DF,
typename T >
2987 struct DivTrait< UniLowerMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
3005 template<
typename MT,
bool SO,
bool DF >
3011 template<
typename MT,
bool SO,
bool DF >
3017 template<
typename MT,
bool SO,
bool DF >
3023 template<
typename MT,
bool SO,
bool DF >
3029 template<
typename MT,
bool SO,
bool DF >
3035 template<
typename MT,
bool SO,
bool DF >
3041 template<
typename MT,
bool SO,
bool DF >
3047 template<
typename MT,
bool SO,
bool DF >
3053 template<
typename MT,
bool SO,
bool DF >
3059 template<
typename MT,
bool SO,
bool DF,
typename ET >
3060 struct UnaryMapTrait< UniLowerMatrix<MT,SO,DF>, UnaryPow<ET> >
3078 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3079 struct BinaryMapTrait< UniLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2>, Min >
3084 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3085 struct BinaryMapTrait< UniLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2>, Max >
3090 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3091 struct BinaryMapTrait< LowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2>, Min >
3096 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3097 struct BinaryMapTrait< LowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2>, Max >
3102 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3103 struct BinaryMapTrait< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2>, Min >
3108 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3109 struct BinaryMapTrait< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2>, Max >
3127 template<
typename MT,
bool SO,
bool DF >
3146 template<
typename MT,
bool SO,
bool DF >
3165 template<
typename MT,
bool SO,
bool DF >
3184 template<
typename MT,
bool SO,
bool DF >
3203 template<
typename MT,
bool SO,
bool DF >
3222 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3223 struct HighType< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
3241 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
3242 struct LowType< UniLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
3260 template<
typename MT,
bool SO,
bool DF,
size_t... CSAs >
3279 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
3280 struct RowTrait< UniLowerMatrix<MT,SO,DF>, CRAs... >
3298 template<
typename MT,
bool SO,
bool DF,
size_t... CRAs >
3299 struct RowsTrait< UniLowerMatrix<MT,SO,DF>, CRAs... >
3317 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
3318 struct ColumnTrait< UniLowerMatrix<MT,SO,DF>, CCAs... >
3336 template<
typename MT,
bool SO,
bool DF,
size_t... CCAs >
3337 struct ColumnsTrait< UniLowerMatrix<MT,SO,DF>, CCAs... >
3355 template<
typename MT,
bool SO,
bool DF,
ptrdiff_t... CBAs >
3356 struct BandTrait< UniLowerMatrix<MT,SO,DF>, CBAs... >
Pointer difference type of the Blaze library.
Header file for the implementation of the base template of the UniLowerMatrix.
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
Matrix adapter for lower triangular matrices.
Definition: BaseTemplate.h:553
Header file for the dense matrix inversion flags.
Base template for the SchurTrait class.
Definition: SchurTrait.h:112
BLAZE_ALWAYS_INLINE MT::Iterator begin(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:364
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:588
const ElementType_< MT > min(const DenseMatrix< MT, SO > &dm)
Returns the smallest element of the dense matrix.
Definition: DenseMatrix.h:1903
#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.
Header file for the IsUniLower type trait.
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
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
Header file for the IsShrinkable type trait.
UniLowerMatrix specialization for dense matrices.
Header file for all forward declarations of the math module.
Compile time check for data types with padding.This type trait tests whether the given data type empl...
Definition: IsPadded.h:76
Header file for the decllow trait.
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
UniLowerMatrix specialization for sparse matrices.
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.
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.
Compile time check for lower unitriangular matrices.This type trait tests whether or not the given te...
Definition: IsUniLower.h:86
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 strictly lower triangular matrices.
Definition: BaseTemplate.h:558
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
Matrix adapter for lower unitriangular matrices.
Definition: BaseTemplate.h:577
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:254
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:628
#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
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 HighType type trait.
Header file for the TrueType type/value trait base class.
Base template for the BandTrait class.
Definition: BandTrait.h:109