35 #ifndef _BLAZE_MATH_ADAPTORS_STRICTLYLOWERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_STRICTLYLOWERMATRIX_H_ 93 template<
typename MT,
bool SO,
bool DF >
94 inline void reset( StrictlyLowerMatrix<MT,SO,DF>& m );
96 template<
typename MT,
bool SO,
bool DF >
97 inline void reset( StrictlyLowerMatrix<MT,SO,DF>& m,
size_t i );
99 template<
typename MT,
bool SO,
bool DF >
100 inline void clear( StrictlyLowerMatrix<MT,SO,DF>& m );
102 template<
bool RF,
typename MT,
bool SO,
bool DF >
103 inline bool isDefault(
const StrictlyLowerMatrix<MT,SO,DF>& m );
105 template<
typename MT,
bool SO,
bool DF >
106 inline bool isIntact(
const StrictlyLowerMatrix<MT,SO,DF>& m );
108 template<
typename MT,
bool SO,
bool DF >
109 inline void swap( StrictlyLowerMatrix<MT,SO,DF>& a, StrictlyLowerMatrix<MT,SO,DF>& b ) noexcept;
121 template<
typename MT
144 template<
typename MT
161 template<
typename MT
188 return ( m.rows() == 0UL );
212 for(
size_t j=0UL; j<m.columns(); ++j ) {
213 for(
size_t i=j+1UL; i<m.rows(); ++i ) {
214 if( !isDefault<RF>( m(i,j) ) )
220 for(
size_t i=1UL; i<m.rows(); ++i ) {
221 for(
size_t j=0UL; j<i; ++j ) {
222 if( !isDefault<RF>( m(i,j) ) )
292 template<
typename MT
310 template<
typename MT
337 template<
typename MT
355 const size_t iend(
min( column - row + 1UL, (~rhs).
size() ) );
357 for(
size_t i=0UL; i<iend; ++i ) {
385 template<
typename MT
400 const size_t ibegin( ( row <= column )?( 0UL ):( row - column ) );
402 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
430 template<
typename MT
450 const RhsIterator last( (~rhs).lowerBound( column - row + 1UL ) );
452 for( RhsIterator element=(~rhs).
begin(); element!=last; ++element ) {
480 template<
typename MT
497 const RhsIterator last( (~rhs).
end() );
498 RhsIterator element( (~rhs).lowerBound( ( row <= column )?( 0UL ):( row - column ) ) );
500 for( ; element!=last; ++element ) {
528 template<
typename MT1
544 const size_t M( (~rhs).
rows() );
545 const size_t N( (~rhs).
columns() );
547 if( row + 1UL >= column + N )
550 const size_t iend(
min( column + N - row, M ) );
552 for(
size_t i=0UL; i<iend; ++i )
554 const bool containsDiagonal( row + i >= column );
555 const size_t jbegin( ( containsDiagonal )?( row + i - column ):( 0UL ) );
557 for(
size_t j=jbegin; j<N; ++j ) {
586 template<
typename MT1
602 const size_t M( (~rhs).
rows() );
603 const size_t N( (~rhs).
columns() );
605 if( row + 1UL >= column + N )
608 const size_t jbegin( ( row <= column )?( 0UL ):( row - column ) );
610 for(
size_t j=jbegin; j<N; ++j )
612 const size_t iend(
min( column + j - row + 1UL, M ) );
614 for(
size_t i=0UL; i<iend; ++i ) {
643 template<
typename MT1
661 const size_t M( (~rhs).
rows() );
662 const size_t N( (~rhs).
columns() );
664 if( row + 1UL >= column + N )
667 const size_t iend(
min( column + N - row, M ) );
669 for(
size_t i=0UL; i<iend; ++i )
671 const bool containsDiagonal( row + i >= column );
672 const size_t index( ( containsDiagonal )?( row + i - column ):( 0UL ) );
674 const RhsIterator last( (~rhs).
end(i) );
675 RhsIterator element( (~rhs).lowerBound( i, index ) );
677 for( ; element!=last; ++element ) {
706 template<
typename MT1
724 const size_t M( (~rhs).
rows() );
725 const size_t N( (~rhs).
columns() );
727 if( row + 1UL >= column + N )
730 const size_t jbegin( ( row < column )?( 0UL ):( row - column ) );
732 for(
size_t j=jbegin; j<N; ++j )
734 const size_t index( column + j - row + 1UL );
735 const RhsIterator last( (~rhs).lowerBound(
min( index, M ), j ) );
737 for( RhsIterator element=(~rhs).
begin(j); element!=last; ++element ) {
766 template<
typename MT
774 return tryAssign( lhs, ~rhs, row, column );
797 template<
typename MT1
805 return tryAssign( lhs, ~rhs, row, column );
828 template<
typename MT
836 return tryAssign( lhs, ~rhs, row, column );
859 template<
typename MT1
867 return tryAssign( lhs, ~rhs, row, column );
887 template<
typename MT
908 template<
typename MT,
bool SO,
bool DF >
909 struct Rows< StrictlyLowerMatrix<MT,SO,DF> > :
public Rows<MT>
925 template<
typename MT,
bool SO,
bool DF >
926 struct Columns< StrictlyLowerMatrix<MT,SO,DF> > :
public Columns<MT>
942 template<
typename MT,
bool SO,
bool DF >
959 template<
typename MT,
bool SO,
bool DF >
976 template<
typename MT,
bool SO,
bool DF >
993 template<
typename MT,
bool SO,
bool DF >
1010 template<
typename MT,
bool SO >
1027 template<
typename MT,
bool SO,
bool DF >
1044 template<
typename MT,
bool SO,
bool DF >
1061 template<
typename MT,
bool SO,
bool DF >
1078 template<
typename MT,
bool SO,
bool DF >
1097 template<
typename MT,
bool SO,
bool DF >
1116 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1117 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1122 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1123 struct AddTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1128 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1129 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1134 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1135 struct AddTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1140 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1141 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1146 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1147 struct AddTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1152 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1153 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1158 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1159 struct AddTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1164 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1165 struct AddTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1170 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1171 struct AddTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1176 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1177 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1182 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1183 struct AddTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1188 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1189 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1194 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1195 struct AddTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1200 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1201 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1206 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1207 struct AddTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1212 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1213 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1218 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1219 struct AddTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1224 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1225 struct AddTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1243 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1244 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1249 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1250 struct SubTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1255 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1256 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1261 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1262 struct SubTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1267 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1268 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1273 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1274 struct SubTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1279 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1280 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1285 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1286 struct SubTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1291 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1292 struct SubTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1297 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1298 struct SubTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1303 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1304 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1309 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1310 struct SubTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1315 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1316 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1321 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1322 struct SubTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1327 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1328 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1333 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1334 struct SubTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1339 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1340 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1345 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1346 struct SubTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1351 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1352 struct SubTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1370 template<
typename MT,
bool SO,
bool DF,
typename T >
1371 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
1376 template<
typename T,
typename MT,
bool SO,
bool DF >
1377 struct MultTrait< T, StrictlyLowerMatrix<MT,SO,DF>, EnableIf_< IsNumeric<T> > >
1382 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1383 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, StaticVector<T,N,false> >
1388 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1389 struct MultTrait< StaticVector<T,N,true>, StrictlyLowerMatrix<MT,SO,DF> >
1394 template<
typename MT,
bool SO,
bool DF,
typename T,
size_t N >
1395 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, HybridVector<T,N,false> >
1400 template<
typename T,
size_t N,
typename MT,
bool SO,
bool DF >
1401 struct MultTrait< HybridVector<T,N,true>, StrictlyLowerMatrix<MT,SO,DF> >
1406 template<
typename MT,
bool SO,
bool DF,
typename T >
1407 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, DynamicVector<T,false> >
1412 template<
typename T,
typename MT,
bool SO,
bool DF >
1413 struct MultTrait< DynamicVector<T,true>, StrictlyLowerMatrix<MT,SO,DF> >
1418 template<
typename MT,
bool SO,
bool DF,
typename T,
bool AF,
bool PF >
1419 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, CustomVector<T,AF,PF,false> >
1424 template<
typename T,
bool AF,
bool PF,
typename MT,
bool SO,
bool DF >
1425 struct MultTrait< CustomVector<T,AF,PF,true>, StrictlyLowerMatrix<MT,SO,DF> >
1430 template<
typename MT,
bool SO,
bool DF,
typename T >
1431 struct MultTrait< StrictlyLowerMatrix<MT,SO,DF>, CompressedVector<T,false> >
1436 template<
typename T,
typename MT,
bool SO,
bool DF >
1437 struct MultTrait< CompressedVector<T,true>, StrictlyLowerMatrix<MT,SO,DF> >
1442 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1443 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, StaticMatrix<T,M,N,SO2> >
1448 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1449 struct MultTrait< StaticMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1454 template<
typename MT,
bool SO1,
bool DF,
typename T,
size_t M,
size_t N,
bool SO2 >
1455 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, HybridMatrix<T,M,N,SO2> >
1460 template<
typename T,
size_t M,
size_t N,
bool SO1,
typename MT,
bool SO2,
bool DF >
1461 struct MultTrait< HybridMatrix<T,M,N,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1466 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1467 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, DynamicMatrix<T,SO2> >
1472 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1473 struct MultTrait< DynamicMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1478 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool AF,
bool PF,
bool SO2 >
1479 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, CustomMatrix<T,AF,PF,SO2> >
1484 template<
typename T,
bool AF,
bool PF,
bool SO1,
typename MT,
bool SO2,
bool DF >
1485 struct MultTrait< CustomMatrix<T,AF,PF,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1490 template<
typename MT,
bool SO1,
bool DF,
typename T,
bool SO2 >
1491 struct MultTrait< StrictlyLowerMatrix<MT,SO1,DF>, CompressedMatrix<T,SO2> >
1496 template<
typename T,
bool SO1,
typename MT,
bool SO2,
bool DF >
1497 struct MultTrait< CompressedMatrix<T,SO1>, StrictlyLowerMatrix<MT,SO2,DF> >
1502 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2,
bool NF >
1503 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, SymmetricMatrix<MT2,SO2,DF2,NF> >
1508 template<
typename MT1,
bool SO1,
bool DF1,
bool NF,
typename MT2,
bool SO2,
bool DF2 >
1509 struct MultTrait< SymmetricMatrix<MT1,SO1,DF1,NF>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1514 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1515 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1520 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1521 struct MultTrait< HermitianMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1526 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1527 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, LowerMatrix<MT2,SO2,DF2> >
1532 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1533 struct MultTrait< LowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1538 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1539 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, UniLowerMatrix<MT2,SO2,DF2> >
1544 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1545 struct MultTrait< UniLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1550 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1551 struct MultTrait< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1569 template<
typename MT,
bool SO,
bool DF,
typename T >
1570 struct DivTrait< StrictlyLowerMatrix<MT,SO,DF>, T, EnableIf_< IsNumeric<T> > >
1588 template<
typename MT,
bool SO,
bool DF >
1589 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Abs >
1594 template<
typename MT,
bool SO,
bool DF >
1595 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Floor >
1600 template<
typename MT,
bool SO,
bool DF >
1601 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Ceil >
1606 template<
typename MT,
bool SO,
bool DF >
1607 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Conj >
1612 template<
typename MT,
bool SO,
bool DF >
1613 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Real >
1618 template<
typename MT,
bool SO,
bool DF >
1619 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Imag >
1624 template<
typename MT,
bool SO,
bool DF >
1625 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Sin >
1630 template<
typename MT,
bool SO,
bool DF >
1631 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Asin >
1636 template<
typename MT,
bool SO,
bool DF >
1637 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Sinh >
1642 template<
typename MT,
bool SO,
bool DF >
1643 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Asinh >
1648 template<
typename MT,
bool SO,
bool DF >
1649 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Tan >
1654 template<
typename MT,
bool SO,
bool DF >
1655 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Atan >
1660 template<
typename MT,
bool SO,
bool DF >
1661 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Tanh >
1666 template<
typename MT,
bool SO,
bool DF >
1667 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Atanh >
1672 template<
typename MT,
bool SO,
bool DF >
1673 struct ForEachTrait< StrictlyLowerMatrix<MT,SO,DF>, Erf >
1691 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1692 struct HighType< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1710 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1711 struct LowType< StrictlyLowerMatrix<MT1,SO1,DF1>, StrictlyLowerMatrix<MT2,SO2,DF2> >
1729 template<
typename MT,
bool SO,
bool DF >
1748 template<
typename MT,
bool SO,
bool DF >
1749 struct RowTrait< StrictlyLowerMatrix<MT,SO,DF> >
1767 template<
typename MT,
bool SO,
bool DF >
1768 struct ColumnTrait< StrictlyLowerMatrix<MT,SO,DF> >
Header file for the implementation of the base template of the UniLowerMatrix.
Header file for mathematical functions.
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.
StrictlyLowerMatrix specialization for sparse matrices.
Header file for the subtraction trait.
Header file for the implementation of the base template of the StrictlyLowerMatrix.
Header file for the row trait.
Base template for the SubmatrixTrait class.
Definition: SubmatrixTrait.h:118
Base template for the ColumnTrait class.
Definition: ColumnTrait.h:117
typename RowTrait< MT >::Type RowTrait_
Auxiliary alias declaration for the RowTrait type trait.The RowTrait_ alias declaration provides a co...
Definition: RowTrait.h:152
BLAZE_ALWAYS_INLINE size_t size(const Vector< VT, TF > &vector) noexcept
Returns the current size/dimension of the vector.
Definition: Vector.h:261
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: Forward.h:48
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:194
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:533
const ElementType_< MT > min(const DenseMatrix< MT, SO > &dm)
Returns the smallest element of the dense matrix.
Definition: DenseMatrix.h:1755
typename MultTrait< T1, T2 >::Type MultTrait_
Auxiliary alias declaration for the MultTrait class template.The MultTrait_ alias declaration provide...
Definition: MultTrait.h:245
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:71
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:119
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
Base template for the RowTrait class.
Definition: RowTrait.h:117
Header file for the LowType type trait.
Base template for the HighType type trait.
Definition: HighType.h:133
Header file for the multiplication trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
StrictlyLowerMatrix specialization for dense matrices.
Base template for the ForEachTrait class.The ForEachTrait class template offers the possibility to se...
Definition: ForEachTrait.h:79
Header file for all forward declarations of the math module.
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:2939
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 Columns type trait.
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:336
DisableIf_< Or< IsComputation< MT >, IsTransExpr< MT >, IsDeclExpr< MT > >, RowExprTrait_< MT > > row(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific row of the given matrix.
Definition: Row.h:128
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:260
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
DisableIf_< Or< IsComputation< MT >, IsTransExpr< MT >, IsDeclExpr< MT > >, ColumnExprTrait_< MT > > column(Matrix< MT, SO > &matrix, size_t index)
Creating a view on a specific column of the given matrix.
Definition: Column.h:128
Header file for the EnableIf class template.
Header file for the IsStrictlyLower type trait.
void clear(const DiagonalProxy< MT > &proxy)
Clearing the represented element.
Definition: DiagonalProxy.h:553
Header file for the IsPadded type trait.
Header file for the IsAdaptor type trait.
Header file for the DerestrictTrait class template.
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 run time assertion macros.
Base template for the AddTrait class.
Definition: AddTrait.h:143
Base template for the MultTrait class.
Definition: MultTrait.h:143
Header file for the addition trait.
Header file for the division trait.
Header file for the submatrix trait.
Matrix adapter for strictly lower triangular matrices.
Definition: Forward.h:50
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:267
Base class for matrices.The Matrix class is a base class for all dense and sparse matrix classes with...
Definition: Forward.h:94
#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:153
Evaluation of the return type of the derestrict function.Via this type trait it is possible to evalua...
Definition: DerestrictTrait.h:73
Base template for the DivTrait class.
Definition: DivTrait.h:143
typename ColumnTrait< MT >::Type ColumnTrait_
Auxiliary alias declaration for the ColumnTrait type trait.The ColumnTrait_ alias declaration provide...
Definition: ColumnTrait.h:152
Compile time check for strictly lower triangular matrices.This type trait tests whether or not the gi...
Definition: IsStrictlyLower.h:86
BLAZE_ALWAYS_INLINE size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:320
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:164
Header file for the implementation of the base template of the LowerMatrix.
typename SubTrait< T1, T2 >::Type SubTrait_
Auxiliary alias declaration for the SubTrait class template.The SubTrait_ alias declaration provides ...
Definition: SubTrait.h:245
Header file for the for-each trait.
Base class for sparse vectors.The SparseVector class is a base class for all arbitrarily sized (N-dim...
Definition: Forward.h:120
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:76
Matrix adapter for lower unitriangular matrices.
Definition: Forward.h:53
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:249
Compile time evaluation of the number of rows of a matrix.The Rows type trait evaluates the number of...
Definition: Rows.h:76
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:573
Base template for the SubTrait class.
Definition: SubTrait.h:143
void UNUSED_PARAMETER(const Args &...)
Suppression of unused parameter warnings.
Definition: Unused.h:81
Header file for the IsResizable type trait.
Header file for the IsRestricted type trait.
typename AddTrait< T1, T2 >::Type AddTrait_
Auxiliary alias declaration for the AddTrait class template.The AddTrait_ alias declaration provides ...
Definition: AddTrait.h:245
#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.