35#ifndef _BLAZE_MATH_VIEWS_BAND_H_
36#define _BLAZE_MATH_VIEWS_BAND_H_
144 using ReturnType = Band_<MT,I>;
145 return ReturnType( *matrix, args... );
193 using ReturnType =
const Band_<const MT,I>;
194 return ReturnType( *matrix, args... );
221 using ReturnType = Band_<MT,I>;
222 return ReturnType( *matrix, args... );
270 using ReturnType = Band_<MT>;
271 return ReturnType( *matrix, index, args... );
319 using ReturnType =
const Band_<const MT>;
320 return ReturnType( *matrix, index, args... );
347 using ReturnType = Band_<MT>;
348 return ReturnType( *matrix, index, args... );
384 return band<0L>( *matrix,
unchecked, args... );
419 return band<0L>( *matrix,
unchecked, args... );
443 return band<0L>( *matrix,
unchecked, args... );
472inline decltype(
auto)
band(
const MatMatAddExpr<MT>& matrix, RBAs... args )
476 return band<CBAs...>( (*matrix).leftOperand(), args... ) +
477 band<CBAs...>( (*matrix).rightOperand(), args... );
499inline decltype(
auto)
band(
const MatMatSubExpr<MT>& matrix, RBAs... args )
503 return band<CBAs...>( (*matrix).leftOperand(), args... ) -
504 band<CBAs...>( (*matrix).rightOperand(), args... );
525inline decltype(
auto)
band(
const SchurExpr<MT>& matrix, RBAs... args )
529 return band<CBAs...>( (*matrix).leftOperand(), args... ) *
530 band<CBAs...>( (*matrix).rightOperand(), args... );
552inline decltype(
auto)
band(
const MatMatKronExpr<MT>& matrix, RBAs... args )
556 const BandData<CBAs...> bd( args... );
559 if( ( bd.band() > 0L && bd.column() >= (*matrix).columns() ) ||
560 ( bd.band() < 0L && bd.row() >= (*matrix).rows() ) ) {
565 const size_t row ( bd.band() < 0L ? -bd.band() : 0UL );
566 const size_t column( bd.band() >= 0L ? bd.band() : 0UL );
567 const size_t n (
min( (*matrix).rows() -
row, (*matrix).columns() -
column ) );
590inline decltype(
auto)
band(
const VecTVecMultExpr<MT>& matrix, RBAs... args )
594 const BandData<CBAs...> bd( args... );
597 if( ( bd.band() > 0L && bd.column() >= (*matrix).columns() ) ||
598 ( bd.band() < 0L && bd.row() >= (*matrix).rows() ) ) {
603 decltype(
auto) leftOperand ( (*matrix).leftOperand() );
604 decltype(
auto) rightOperand( (*matrix).rightOperand() );
606 const size_t row ( bd.band() < 0L ? -bd.band() : 0UL );
607 const size_t column( bd.band() >= 0L ? bd.band() : 0UL );
608 const size_t size (
min( leftOperand.size() -
row, rightOperand.size() -
column ) );
633inline decltype(
auto)
band(
const MatScalarMultExpr<MT>& matrix, RBAs... args )
637 return band<CBAs...>( (*matrix).leftOperand(), args... ) * (*matrix).rightOperand();
659inline decltype(
auto)
band(
const MatScalarDivExpr<MT>& matrix, RBAs... args )
663 return band<CBAs...>( (*matrix).leftOperand(), args... ) / (*matrix).rightOperand();
685inline decltype(
auto)
band(
const MatMapExpr<MT>& matrix, RBAs... args )
689 return map( band<CBAs...>( (*matrix).operand(), args... ), (*matrix).operation() );
711inline decltype(
auto)
band(
const MatMatMapExpr<MT>& matrix, RBAs... args )
715 return map( band<CBAs...>( (*matrix).leftOperand(), args... ),
716 band<CBAs...>( (*matrix).rightOperand(), args... ),
717 (*matrix).operation() );
739inline decltype(
auto)
band(
const VecTVecMapExpr<MT>& matrix, RBAs... args )
743 const BandData<CBAs...> bd( args... );
746 if( ( bd.band() > 0L && bd.column() >= (*matrix).columns() ) ||
747 ( bd.band() < 0L && bd.row() >= (*matrix).rows() ) ) {
752 decltype(
auto) leftOperand ( (*matrix).leftOperand() );
753 decltype(
auto) rightOperand( (*matrix).rightOperand() );
755 const size_t row ( bd.band() < 0L ? -bd.band() : 0UL );
756 const size_t column( bd.band() >= 0L ? bd.band() : 0UL );
757 const size_t size (
min( leftOperand.size() -
row, rightOperand.size() -
column ) );
761 (*matrix).operation() );
783inline decltype(
auto)
band(
const MatEvalExpr<MT>& matrix, RBAs... args )
787 return eval( band<CBAs...>( (*matrix).operand(), args... ) );
809inline decltype(
auto)
band(
const MatSerialExpr<MT>& matrix, RBAs... args )
813 return serial( band<CBAs...>( (*matrix).operand(), args... ) );
835inline decltype(
auto)
band(
const MatNoAliasExpr<MT>& matrix, RBAs... args )
839 return noalias( band<CBAs...>( (*matrix).operand(), args... ) );
861inline decltype(
auto)
band(
const MatNoSIMDExpr<MT>& matrix, RBAs... args )
865 return nosimd( band<CBAs...>( (*matrix).operand(), args... ) );
887inline decltype(
auto)
band(
const DeclExpr<MT>& matrix, RBAs... args )
891 return band<CBAs...>( (*matrix).operand(), args... );
913inline decltype(
auto)
band(
const MatTransExpr<MT>& matrix, RBAs... args )
917 return band<-I>( (*matrix).operand(), args... );
939inline decltype(
auto)
band(
const MatTransExpr<MT>& matrix,
ptrdiff_t index, RBAs... args )
943 return band( (*matrix).operand(), -index, args... );
966inline decltype(
auto)
band(
const VecExpandExpr<MT,CEAs...>& matrix, RBAs... args )
970 const BandData<CBAs...> bd( args... );
973 if( ( bd.band() > 0L && bd.column() >= (*matrix).columns() ) ||
974 ( bd.band() < 0L && bd.row() >= (*matrix).rows() ) ) {
981 constexpr bool TF( TransposeFlag_v<VT> );
983 const size_t index( TF ? bd.column() : bd.row() );
984 const size_t size (
min( (*matrix).rows() - bd.row(), (*matrix).columns() - bd.column() ) );
1008 ,
typename... RBAs >
1009inline decltype(
auto)
band(
const MatRepeatExpr<MT,CRAs...>& matrix, RBAs... args )
1013 using ReturnType = Band_< MatrixType_t<MT>, CBAs... >;
1014 return ReturnType( *matrix, args... );
1045 , EnableIf_t< IsBand_v< RemoveReference_t<VT> > &&
1046 RemoveReference_t<VT>::compileTimeArgs >* =
nullptr >
1047inline decltype(
auto)
subvector( VT&& b, RSAs... args )
1053 constexpr size_t row ( ( I2 >= 0L ? 0UL : -I2 ) + I );
1054 constexpr size_t column( ( I2 >= 0L ? I2 : 0UL ) + I );
1056 constexpr auto check(
getCheck( args... ) );
1059 return diagonal( submatrix<AF,row,column,N,N>( b.operand(), check ), check );
1085 , EnableIf_t< IsBand_v< RemoveReference_t<VT> > &&
1086 (
sizeof...( CSAs ) == 0UL || !RemoveReference_t<VT>::compileTimeArgs ) >* =
nullptr >
1087inline decltype(
auto)
subvector( VT&& b, RSAs... args )
1091 const SubvectorData<CSAs...> sd( args... );
1093 const size_t row ( b.row() + sd.offset() );
1094 const size_t column( b.column() + sd.offset() );
1096 constexpr auto check(
getCheck( args... ) );
1099 return diagonal( submatrix<AF>( b.operand(),
row,
column, sd.size(), sd.size(), check ), check );
1148inline bool isDefault(
const Band<MT,TF,true,MF,CBAs...>&
band )
1152 for(
size_t i=0UL; i<
band.size(); ++i )
1153 if( !isDefault<RF>(
band[i] ) )
return false;
1191inline bool isDefault(
const Band<MT,TF,false,MF,CBAs...>&
band )
1195 for(
const auto& element :
band )
1196 if( !isDefault<RF>( element.value() ) )
return false;
1221template<
typename MT
1226inline bool isIntact(
const Band<MT,TF,DF,MF,CBAs...>&
band )
noexcept
1230 return ( ( index >= 0L ||
size_t( -index ) <
band.operand().rows() ) &&
1231 ( index <= 0L ||
size_t( index ) <
band.operand().columns() ) &&
1251template<
typename MT1
1258inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1259 const Band<MT2,TF,DF,MF,CBAs2...>& b )
noexcept
1260 -> DisableIf_t< IsSubmatrix_v<MT1> || IsSubmatrix_v<MT2>,
bool >
1262 return (
isSame( a.operand(), b.operand() ) && ( a.band() == b.band() ) );
1281template<
typename MT1
1288inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1289 const Band<MT2,TF,DF,MF,CBAs2...>& b )
noexcept
1290 -> EnableIf_t< IsSubmatrix_v<MT1> && !IsSubmatrix_v<MT2>,
bool >
1292 return (
isSame( a.operand().operand(), b.operand() ) &&
1293 ( a.size() == b.size() ) &&
1294 ( a.row() + a.operand().row() == b.row() ) &&
1295 ( a.column() + a.operand().column() == b.column() ) );
1314template<
typename MT1
1321inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1322 const Band<MT2,TF,DF,MF,CBAs2...>& b )
noexcept
1323 -> EnableIf_t< !IsSubmatrix_v<MT1> && IsSubmatrix_v<MT2>,
bool >
1325 return (
isSame( a.operand(), b.operand().operand() ) &&
1326 ( a.size() == b.size() ) &&
1327 ( a.row() == b.row() + b.operand().row() ) &&
1328 ( a.column() == b.column() + b.operand().column() ) );
1347template<
typename MT1
1354inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1355 const Band<MT2,TF,DF,MF,CBAs2...>& b )
noexcept
1356 -> EnableIf_t< IsSubmatrix_v<MT1> && IsSubmatrix_v<MT2>,
bool >
1358 return (
isSame( a.operand().operand(), b.operand().operand() ) &&
1359 ( a.size() == b.size() ) &&
1360 ( a.row() + a.operand().row() == b.row() + b.operand().row() ) &&
1361 ( a.column() + a.operand().column() == b.column() + b.operand().column() ) );
1380template<
typename MT1
1387inline bool isSame(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1388 const Band<MT2,TF,DF,MF,CBAs2...>& b )
noexcept
1390 return isSame_backend( a, b );
1411template<
typename MT
1417inline bool trySet(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1421 return trySet(
band.operand(),
band.row()+index,
band.column()+index, value );
1443template<
typename MT
1450 trySet(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1455 const size_t iend( index +
size );
1457 for(
size_t i=index; i<iend; ++i ) {
1458 if( !trySet(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1483template<
typename MT
1489inline bool tryAdd(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1493 return tryAdd(
band.operand(),
band.row()+index,
band.column()+index, value );
1515template<
typename MT
1522 tryAdd(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1527 const size_t iend( index +
size );
1529 for(
size_t i=index; i<iend; ++i ) {
1530 if( !tryAdd(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1555template<
typename MT
1561inline bool trySub(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1565 return trySub(
band.operand(),
band.row()+index,
band.column()+index, value );
1587template<
typename MT
1594 trySub(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1599 const size_t iend( index +
size );
1601 for(
size_t i=index; i<iend; ++i ) {
1602 if( !trySub(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1627template<
typename MT
1633inline bool tryMult(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1637 return tryMult(
band.operand(),
band.row()+index,
band.column()+index, value );
1659template<
typename MT
1666 tryMult(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1671 const size_t iend( index +
size );
1673 for(
size_t i=index; i<iend; ++i ) {
1674 if( !tryMult(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1699template<
typename MT
1705inline bool tryDiv(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1709 return tryDiv(
band.operand(),
band.row()+index,
band.column()+index, value );
1731template<
typename MT
1738 tryDiv(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1743 const size_t iend( index +
size );
1745 for(
size_t i=index; i<iend; ++i ) {
1746 if( !tryDiv(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1771template<
typename MT
1776inline bool tryShift(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
int count )
1780 return tryShift(
band.operand(),
band.row()+index,
band.column()+index, count );
1802template<
typename MT
1808 tryShift(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
int count )
1813 const size_t iend( index +
size );
1815 for(
size_t i=index; i<iend; ++i ) {
1816 if( !tryShift(
band.operand(),
band.row()+i,
band.column()+i, count ) )
1841template<
typename MT
1847inline bool tryBitand(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1851 return tryBitand(
band.operand(),
band.row()+index,
band.column()+index, value );
1873template<
typename MT
1880 tryBitand(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1885 const size_t iend( index +
size );
1887 for(
size_t i=index; i<iend; ++i ) {
1888 if( !tryBitand(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1913template<
typename MT
1919inline bool tryBitor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1923 return tryBitor(
band.operand(),
band.row()+index,
band.column()+index, value );
1945template<
typename MT
1952 tryBitor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1957 const size_t iend( index +
size );
1959 for(
size_t i=index; i<iend; ++i ) {
1960 if( !tryBitor(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1985template<
typename MT
1991inline bool tryBitxor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1995 return tryBitxor(
band.operand(),
band.row()+index,
band.column()+index, value );
2017template<
typename MT
2024 tryBitxor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
2029 const size_t iend( index +
size );
2031 for(
size_t i=index; i<iend; ++i ) {
2032 if( !tryBitxor(
band.operand(),
band.row()+i,
band.column()+i, value ) )
2057template<
typename MT
2063inline bool tryAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2064 const Vector<VT,TF>& rhs,
size_t index )
2069 return tryAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2090template<
typename MT
2096inline bool tryAddAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2097 const Vector<VT,TF>& rhs,
size_t index )
2102 return tryAddAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2123template<
typename MT
2129inline bool trySubAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2130 const Vector<VT,TF>& rhs,
size_t index )
2135 return trySubAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2156template<
typename MT
2162inline bool tryMultAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2163 const Vector<VT,TF>& rhs,
size_t index )
2168 return tryMultAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2189template<
typename MT
2195inline bool tryDivAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2196 const Vector<VT,TF>& rhs,
size_t index )
2201 return tryDivAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2222template<
typename MT
2228inline bool tryShiftAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2229 const Vector<VT,TF>& rhs,
size_t index )
2234 return tryShiftAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2255template<
typename MT
2261inline bool tryBitandAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2262 const Vector<VT,TF>& rhs,
size_t index )
2267 return tryBitandAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2288template<
typename MT
2294inline bool tryBitorAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2295 const Vector<VT,TF>& rhs,
size_t index )
2300 return tryBitorAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2321template<
typename MT
2327inline bool tryBitxorAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2328 const Vector<VT,TF>& rhs,
size_t index )
2333 return tryBitxorAssign( lhs.operand(), *rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2354template<
typename MT
2359inline decltype(
auto) derestrict( Band<MT,TF,DF,MF,I>& b )
2361 return band<I>( derestrict( b.operand() ),
unchecked );
2382template<
typename MT
2387inline decltype(
auto) derestrict( Band<MT,TF,DF,MF,I>&& b )
2389 return band<I>( derestrict( b.operand() ),
unchecked );
2410template<
typename MT
2414inline decltype(
auto) derestrict( Band<MT,TF,DF,MF>& b )
2416 return band( derestrict( b.operand() ), b.band(),
unchecked );
2437template<
typename MT
2441inline decltype(
auto) derestrict( Band<MT,TF,DF,MF>&& b )
2443 return band( derestrict( b.operand() ), b.band(),
unchecked );
2462template<
typename MT
2467inline decltype(
auto) unview( Band<MT,TF,DF,MF,CBAs...>& b )
2488template<
typename MT
2493inline decltype(
auto) unview(
const Band<MT,TF,DF,MF,CBAs...>& b )
2511template<
typename MT,
bool TF,
bool DF,
bool MF, ptrdiff_t I >
2512struct Size< Band<MT,TF,DF,MF,I>, 0UL >
2513 :
public If_t< ( Size_v<MT,0UL> >= 0L && Size_v<MT,1UL> >= 0L )
2514 ,
Min_t< Ptrdiff_t< Size_v<MT,0UL> - ( I >= 0L ? 0L : -I ) >
2515 ,
Ptrdiff_t< Size_v<MT,1UL> - ( I >= 0L ? I : 0L ) > >
2532template<
typename MT,
bool TF,
bool DF,
bool MF, ptrdiff_t I >
2533struct MaxSize< Band<MT,TF,DF,MF,I>, 0UL >
2534 :
public If_t< ( MaxSize_v<MT,0UL> >= 0L && MaxSize_v<MT,1UL> >= 0L )
2535 ,
Min_t< Ptrdiff_t< MaxSize_v<MT,0UL> - ( I >= 0L ? 0L : -I ) >
2536 ,
Ptrdiff_t< MaxSize_v<MT,1UL> - ( I >= 0L ? I : 0L ) > >
2553template<
typename MT,
bool TF,
bool DF,
bool MF,
ptrdiff_t... CBAs >
2554struct IsRestricted< Band<MT,TF,DF,MF,CBAs...> >
2555 :
public IsRestricted<MT>
2571template<
typename MT,
bool TF,
bool MF,
ptrdiff_t... CBAs >
2572struct HasConstDataAccess< Band<MT,TF,true,MF,CBAs...> >
2573 :
public HasConstDataAccess<MT>
2589template<
typename MT,
bool TF,
bool MF,
ptrdiff_t... CBAs >
2590struct HasMutableDataAccess< Band<MT,TF,true,MF,CBAs...> >
2591 :
public HasMutableDataAccess<MT>
2607template<
typename MT,
bool TF,
bool DF,
bool MF,
ptrdiff_t... CBAs >
2608struct IsOpposedView< Band<MT,TF,DF,MF,CBAs...> >
Header file for auxiliary alias declarations.
typename T::VectorType VectorType_t
Alias declaration for nested VectorType type definitions.
Definition: Aliases.h:590
Header file for run time assertion macros.
Header file for the implementation of the BandData class template.
Header file for the blaze::checked and blaze::unchecked instances.
Header file for the EnableIf class template.
Header file for the function trace functionality.
Header file for the HasConstDataAccess type trait.
Header file for the HasMutableDataAccess type trait.
Header file for the If class template.
Header file for the IntegralConstant class template.
Header file for the IsBand type trait.
Header file for the isDefault shim.
Header file for the IsOpposedView type trait.
Header file for the IsRestricted type trait.
Header file for the IsSubmatrix type trait.
Header file for the MaxSize type trait.
Header file for the relaxation flag enumeration.
Header file for the RemoveReference type trait.
Header file for the implementation of the SubvectorData class template.
Base class for matrices.
Definition: Matrix.h:85
Pointer difference type of the Blaze library.
Header file for the DeclExpr base class.
Header file for the MatEvalExpr base class.
Header file for the MatMapExpr base class.
Header file for the MatMatAddExpr base class.
Header file for the MatMatKronExpr base class.
Header file for the MatMatMapExpr base class.
Header file for the MatMatSubExpr base class.
Header file for the MatNoAliasExpr base class.
Header file for the MatNoSIMDExpr base class.
Header file for the MatScalarDivExpr base class.
Header file for the MatScalarMultExpr base class.
Header file for the MatSerialExpr base class.
Header file for the MatTransExpr base class.
Header file for the Matrix base class.
Header file for the SchurExpr base class.
Header file for the VecExpandExpr base class.
Header file for the VecTVecMapExpr base class.
Header file for the VecTVecMultExpr base class.
decltype(auto) diagonal(Matrix< MT, SO > &&matrix, RDAs... args)
Creating a view on the diagonal of the given temporary matrix.
Definition: Band.h:439
decltype(auto) band(Matrix< MT, SO > &&matrix, ptrdiff_t index, RBAs... args)
Creating a view on a specific band of the given temporary matrix.
Definition: Band.h:343
decltype(auto) column(Matrix< MT, SO > &matrix, RCAs... args)
Creating a view on a specific column of the given matrix.
Definition: Column.h:137
decltype(auto) noalias(const DenseMatrix< MT, SO > &dm)
Forces the non-aliased evaluation of the given dense matrix expression dm.
Definition: DMatNoAliasExpr.h:679
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1339
decltype(auto) eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:790
decltype(auto) map(const DenseMatrix< MT1, SO > &lhs, const DenseMatrix< MT2, SO > &rhs, OP op)
Elementwise evaluation of the given binary operation on each single element of the dense matrices lhs...
Definition: DMatDMatMapExpr.h:1144
decltype(auto) nosimd(const DenseMatrix< MT, SO > &dm)
Disables the SIMD evaluation of the given dense matrix expression dm.
Definition: DMatNoSIMDExpr.h:717
decltype(auto) serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:812
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:207
bool isDefault(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the given diagonal matrix is in default state.
Definition: DiagonalMatrix.h:169
RelaxationFlag
Relaxation flag for strict or relaxed semantics.
Definition: RelaxationFlag.h:66
AlignmentFlag
Alignment flag for (un-)aligned vectors and matrices.
Definition: AlignmentFlag.h:63
bool isSame(const Matrix< MT1, SO1 > &a, const Matrix< MT2, SO2 > &b) noexcept
Returns whether the two given matrices represent the same observable state.
Definition: Matrix.h:1424
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:676
If_t< Less_t< T1, T2 >::value, T1, T2 > Min_t
Compile time value evaluation.
Definition: Min.h:73
decltype(auto) row(Matrix< MT, SO > &, RRAs...)
Creating a view on a specific row of the given matrix.
Definition: Row.h:137
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
decltype(auto) submatrix(Matrix< MT, SO > &, RSAs...)
Creating a view on a specific submatrix of the given matrix.
Definition: Submatrix.h:181
decltype(auto) subvector(Vector< VT, TF > &, RSAs...)
Creating a view on a specific subvector of the given vector.
Definition: Subvector.h:158
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
typename RemoveReference< T >::Type RemoveReference_t
Auxiliary alias declaration for the RemoveReference type trait.
Definition: RemoveReference.h:95
BoolConstant< true > TrueType
Type traits base class.
Definition: IntegralConstant.h:132
IntegralConstant< ptrdiff_t, N > Ptrdiff_t
Compile time integral constant wrapper for ptrdiff_t.
Definition: IntegralConstant.h:237
typename If< Condition >::template Type< T1, T2 > If_t
Auxiliary alias template for the If class template.
Definition: If.h:108
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
#define BLAZE_FUNCTION_TRACE
Function trace macro.
Definition: FunctionTrace.h:94
constexpr auto getCheck(const T &a, const Ts &... args) noexcept
Extracting blaze::Check arguments from a given list of arguments.
Definition: Check.h:205
constexpr bool isChecked(const Ts &... args)
Extracting blaze::Check arguments from a given list of arguments.
Definition: Check.h:225
constexpr Unchecked unchecked
Global Unchecked instance.
Definition: Check.h:146
Header file for all forward declarations for expression class templates.
Header file for the Size type trait.
Header file for the TransposeFlag type trait.
Header file for all forward declarations for views.
Header file for the default transpose flag for all vectors of the Blaze library.
Header file for basic type definitions.
Header file for the generic min algorithm.
Header file for the Min_t alias template.
Header file for the implementation of the Band base template.
Band specialization for dense matrices.
Band specialization for sparse matrices.