35 #ifndef _BLAZE_MATH_ADAPTORS_UPPERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_UPPERMATRIX_H_ 108 template<
typename MT,
bool SO,
bool DF >
109 inline void reset( UpperMatrix<MT,SO,DF>& m );
111 template<
typename MT,
bool SO,
bool DF >
112 inline void reset( UpperMatrix<MT,SO,DF>& m,
size_t i );
114 template<
typename MT,
bool SO,
bool DF >
115 inline void clear( UpperMatrix<MT,SO,DF>& m );
117 template<
bool RF,
typename MT,
bool SO,
bool DF >
118 inline bool isDefault(
const UpperMatrix<MT,SO,DF>& m );
120 template<
typename MT,
bool SO,
bool DF >
121 inline bool isIntact(
const UpperMatrix<MT,SO,DF>& m );
123 template<
typename MT,
bool SO,
bool DF >
124 inline void swap( UpperMatrix<MT,SO,DF>& a, UpperMatrix<MT,SO,DF>& b ) noexcept;
136 template<
typename MT
159 template<
typename MT
176 template<
typename MT
220 return isDefault<RF>( m.matrix_ );
246 template<
typename MT
264 template<
typename MT
315 invert<flag>( derestrict( m ) );
342 template<
typename MT1,
bool SO1,
typename MT2,
typename MT3,
typename MT4,
bool SO2 >
361 const size_t n( (~A).
rows() );
363 decltype(
auto) L2( derestrict( ~L ) );
373 for(
size_t i=0UL; i<n; ++i ) {
398 template<
typename MT
413 const size_t ibegin( ( column < row )?( 0UL ):( column - row + 1UL ) );
415 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
442 template<
typename MT
460 const size_t iend(
min( row - column, (~rhs).
size() ) );
462 for(
size_t i=0UL; i<iend; ++i ) {
489 template<
typename MT
506 const RhsIterator last( (~rhs).
end() );
507 RhsIterator element( (~rhs).lowerBound( ( column < row )?( 0UL ):( column - row + 1UL ) ) );
509 for( ; element!=last; ++element ) {
536 template<
typename MT
556 const RhsIterator last( (~rhs).lowerBound( row - column ) );
558 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
585 template<
typename MT1
601 const size_t M( (~rhs).
rows() );
602 const size_t N( (~rhs).
columns() );
604 if( column + 1UL >= row + M )
607 const size_t ibegin( ( column < row )?( 0UL ):( column - row + 1UL ) );
609 for(
size_t i=ibegin; i<M; ++i )
611 const size_t jend(
min( row + i - column, N ) );
613 for(
size_t j=0UL; j<jend; ++j ) {
641 template<
typename MT1
657 const size_t M( (~rhs).
rows() );
658 const size_t N( (~rhs).
columns() );
660 if( column + 1UL >= row + M )
663 const size_t jend(
min( row + M - column - 1UL, N ) );
665 for(
size_t j=0UL; j<jend; ++j )
667 const bool containsDiagonal( column + j >= row );
668 const size_t ibegin( ( containsDiagonal )?( column + j - row + 1UL ):( 0UL ) );
670 for(
size_t i=ibegin; i<M; ++i ) {
698 template<
typename MT1
716 const size_t M( (~rhs).
rows() );
717 const size_t N( (~rhs).
columns() );
719 if( column + 1UL >= row + M )
722 const size_t ibegin( ( column < row )?( 0UL ):( column - row + 1UL ) );
724 for(
size_t i=ibegin; i<M; ++i )
726 const size_t index( row + i - column );
727 const RhsIterator last( (~rhs).lowerBound( i,
min( index, N ) ) );
729 for( RhsIterator element=(~rhs).
begin(i); element!=last; ++element ) {
757 template<
typename MT1
775 const size_t M( (~rhs).
rows() );
776 const size_t N( (~rhs).
columns() );
778 if( column + 1UL >= row + M )
781 const size_t jend(
min( row + M - column - 1UL, N ) );
783 for(
size_t j=0UL; j<jend; ++j )
785 const bool containsDiagonal( column + j >= row );
786 const size_t index( ( containsDiagonal )?( column + j - row + 1UL ):( 0UL ) );
788 const RhsIterator last( (~rhs).
end(j) );
789 RhsIterator element( (~rhs).lowerBound( index, j ) );
791 for( ; element!=last; ++element ) {
819 template<
typename MT
827 return tryAssign( lhs, ~rhs, row, column );
849 template<
typename MT1
857 return tryAssign( lhs, ~rhs, row, column );
879 template<
typename MT
887 return tryAssign( lhs, ~rhs, row, column );
909 template<
typename MT1
917 return tryAssign( lhs, ~rhs, row, column );
937 template<
typename MT
958 template<
typename MT,
bool SO,
bool DF >
959 struct Rows< UpperMatrix<MT,SO,DF> >
976 template<
typename MT,
bool SO,
bool DF >
977 struct Columns< UpperMatrix<MT,SO,DF> >
994 template<
typename MT,
bool SO,
bool DF >
995 struct IsSquare< UpperMatrix<MT,SO,DF> >
1012 template<
typename MT,
bool SO,
bool DF >
1013 struct IsUpper< UpperMatrix<MT,SO,DF> >
1030 template<
typename MT,
bool SO,
bool DF >
1031 struct IsAdaptor< UpperMatrix<MT,SO,DF> >
1048 template<
typename MT,
bool SO,
bool DF >
1066 template<
typename MT,
bool SO >
1084 template<
typename MT,
bool SO,
bool DF >
1085 struct IsAligned< UpperMatrix<MT,SO,DF> >
1102 template<
typename MT,
bool SO,
bool DF >
1103 struct IsPadded< UpperMatrix<MT,SO,DF> >
1120 template<
typename MT,
bool SO,
bool DF >
1138 template<
typename MT,
bool SO,
bool DF >
1156 template<
typename MT,
bool SO,
bool DF >
1175 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1176 struct AddTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1181 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1182 struct AddTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1187 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1188 struct AddTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1193 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1194 struct AddTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1199 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1200 struct AddTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1205 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1206 struct AddTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1211 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1212 struct AddTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1217 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1218 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1223 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1224 struct AddTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1229 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1230 struct AddTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1235 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1236 struct AddTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1241 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1242 struct AddTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1247 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1248 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1253 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1254 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1259 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1260 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1265 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1266 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1271 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1272 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1277 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1278 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1283 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1284 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1289 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1290 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1295 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1296 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1301 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1302 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1307 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1308 struct AddTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1326 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1327 struct SubTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1332 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1333 struct SubTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1338 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1339 struct SubTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1344 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1345 struct SubTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1350 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1351 struct SubTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1356 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1357 struct SubTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1362 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1363 struct SubTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1368 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1369 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1374 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1375 struct SubTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1380 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1381 struct SubTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1386 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1387 struct SubTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1392 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1393 struct SubTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1398 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1399 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1404 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1405 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1410 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1411 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1416 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1417 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1422 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1423 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1428 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1429 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1434 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1435 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1440 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1441 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1446 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1447 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1452 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1453 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1458 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1459 struct SubTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1477 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1478 struct SchurTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1483 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1484 struct SchurTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1489 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1490 struct SchurTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1495 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1496 struct SchurTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1501 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1502 struct SchurTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1507 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1508 struct SchurTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1513 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1514 struct SchurTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1519 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1520 struct SchurTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1525 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1526 struct SchurTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1531 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1532 struct SchurTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1537 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1538 struct SchurTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1543 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1544 struct SchurTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1549 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1550 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1555 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1556 struct SchurTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1561 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1562 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1567 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1568 struct SchurTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1573 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1574 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1579 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1580 struct SchurTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1585 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1586 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1591 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1592 struct SchurTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1597 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1598 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1603 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1604 struct SchurTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1609 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1610 struct SchurTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1628 template<
typename MT,
bool SO,
bool DF,
typename T >
1629 struct MultTrait< UpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
1634 template<
typename T,
typename MT,
bool SO,
bool DF >
1635 struct MultTrait< T, UpperMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
1640 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1641 struct MultTrait< UpperMatrix<MT,SO,DF>, StaticVector<T,N,false> >
1646 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1647 struct MultTrait< StaticVector<T,N,true>, UpperMatrix<MT,SO,DF> >
1652 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1653 struct MultTrait< UpperMatrix<MT,SO,DF>, HybridVector<T,N,false> >
1658 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1659 struct MultTrait< HybridVector<T,N,true>, UpperMatrix<MT,SO,DF> >
1664 template<
typename MT,
bool SO,
bool DF,
typename T >
1665 struct MultTrait< UpperMatrix<MT,SO,DF>, DynamicVector<T,false> >
1670 template<
typename T,
typename MT,
bool SO,
bool DF >
1671 struct MultTrait< DynamicVector<T,true>, UpperMatrix<MT,SO,DF> >
1676 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
1677 struct MultTrait< UpperMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
1682 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
1683 struct MultTrait< CustomVector<T,AF,PF,true>, UpperMatrix<MT,SO,DF> >
1688 template<
typename MT,
bool SO,
bool DF,
typename T >
1689 struct MultTrait< UpperMatrix<MT,SO,DF>, CompressedVector<T,false> >
1694 template<
typename T,
typename MT,
bool SO,
bool DF >
1695 struct MultTrait< CompressedVector<T,true>, UpperMatrix<MT,SO,DF> >
1700 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1701 struct MultTrait< UpperMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1706 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1707 struct MultTrait< StaticMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1712 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1713 struct MultTrait< UpperMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1718 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1719 struct MultTrait< HybridMatrix<T,M,N,SO1>, UpperMatrix<MT,SO2,DF> >
1724 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1725 struct MultTrait< UpperMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1730 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1731 struct MultTrait< DynamicMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1736 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1737 struct MultTrait< UpperMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1742 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1743 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, UpperMatrix<MT,SO2,DF> >
1748 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1749 struct MultTrait< UpperMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1754 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1755 struct MultTrait< CompressedMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1760 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1761 struct MultTrait< UpperMatrix<MT,SO1,DF>, IdentityMatrix<T,SO2> >
1766 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1767 struct MultTrait< IdentityMatrix<T,SO1>, UpperMatrix<MT,SO2,DF> >
1772 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1773 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1778 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1779 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, UpperMatrix<MT2,SO2,DF2> >
1784 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1785 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1790 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1791 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1796 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1797 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1802 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1803 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1808 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1809 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1814 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1815 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1820 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1821 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1826 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1827 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1832 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1833 struct MultTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
1851 template<
typename MT,
bool SO,
bool DF,
typename T >
1852 struct DivTrait< UpperMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
1870 template<
typename MT,
bool SO,
bool DF >
1876 template<
typename MT,
bool SO,
bool DF >
1882 template<
typename MT,
bool SO,
bool DF >
1888 template<
typename MT,
bool SO,
bool DF >
1894 template<
typename MT,
bool SO,
bool DF >
1900 template<
typename MT,
bool SO,
bool DF >
1906 template<
typename MT,
bool SO,
bool DF >
1912 template<
typename MT,
bool SO,
bool DF >
1918 template<
typename MT,
bool SO,
bool DF >
1924 template<
typename MT,
bool SO,
bool DF >
1930 template<
typename MT,
bool SO,
bool DF >
1936 template<
typename MT,
bool SO,
bool DF >
1942 template<
typename MT,
bool SO,
bool DF >
1948 template<
typename MT,
bool SO,
bool DF >
1954 template<
typename MT,
bool SO,
bool DF >
1960 template<
typename MT,
bool SO,
bool DF >
1966 template<
typename MT,
bool SO,
bool DF >
1972 template<
typename MT,
bool SO,
bool DF >
1978 template<
typename MT,
bool SO,
bool DF >
1997 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1998 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Min >
2003 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2004 struct BinaryMapTrait< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2>, Max >
2022 template<
typename MT,
bool SO,
bool DF >
2041 template<
typename MT,
bool SO,
bool DF >
2060 template<
typename MT,
bool SO,
bool DF >
2079 template<
typename MT,
bool SO,
bool DF >
2098 template<
typename MT,
bool SO,
bool DF >
2117 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2118 struct HighType< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2136 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2137 struct LowType< UpperMatrix<MT1,SO1,DF1>, UpperMatrix<MT2,SO2,DF2> >
2155 template<
typename MT,
bool SO,
bool DF >
2174 template<
typename MT,
bool SO,
bool DF >
2175 struct RowTrait< UpperMatrix<MT,SO,DF> >
2193 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 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
UpperMatrix specialization for dense matrices.
BLAZE_ALWAYS_INLINE MT::Iterator begin(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:198
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:560
UpperMatrix specialization for sparse matrices.
const ElementType_< MT > min(const DenseMatrix< MT, SO > &dm)
Returns the smallest element of the dense matrix.
Definition: DenseMatrix.h: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
Compile time check for upper triangular matrices.This type trait tests whether or not the given templ...
Definition: IsUpper.h:88
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
Flag for the inversion of a upper triangular matrix.
Definition: InversionFlag.h:113
Constraint on the data type.
Header file for the LowType type trait.
Base template for the HighType type trait.
Definition: HighType.h:133
Header file for the multiplication trait.
Header file for the unary map trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Flag for the LU-based matrix inversion.
Definition: InversionFlag.h:103
Header file for the IsShrinkable type trait.
Header file for all forward declarations of the math module.
Compile time check for data types with padding.This type trait tests whether the given data type empl...
Definition: IsPadded.h:76
Header file for the decllow trait.
void lu(const DenseMatrix< MT1, SO1 > &A, DenseMatrix< MT2, SO1 > &L, DenseMatrix< MT3, SO1 > &U, Matrix< MT4, SO2 > &P)
LU decomposition of the given dense matrix.
Definition: LU.h: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
Header file for the exception macros of the math module.
#define BLAZE_CONSTRAINT_MUST_NOT_BE_UPPER_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is a upper triangular matrix type...
Definition: Upper.h:81
BLAZE_ALWAYS_INLINE void resize(Matrix< MT, SO > &matrix, size_t rows, size_t columns, bool preserve=true)
Changing the size of the matrix.
Definition: Matrix.h: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.
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: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.
Matrix adapter for Hermitian matrices.
Definition: BaseTemplate.h:614
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
Header file for the isDivisor shim.
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
Header file for the IsUpper type trait.
void UNUSED_PARAMETER(const Args &...)
Suppression of unused parameter warnings.
Definition: Unused.h:81
Header file for the implementation of the base template of the UpperMatrix.
Base template for the DeclDiagTrait class.
Definition: DeclDiagTrait.h: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 HighType type trait.
Header file for the TrueType type/value trait base class.