35 #ifndef _BLAZE_MATH_VIEWS_BAND_H_ 36 #define _BLAZE_MATH_VIEWS_BAND_H_ 133 template< ptrdiff_t I
137 inline decltype(
auto)
band(
Matrix<MT,SO>& matrix, RBAs... args )
141 using ReturnType = Band_<MT,I>;
142 return ReturnType( ~matrix, args... );
182 template< ptrdiff_t I
186 inline decltype(
auto)
band( const
Matrix<MT,SO>& matrix, RBAs... args )
190 using ReturnType =
const Band_<const MT,I>;
191 return ReturnType( ~matrix, args... );
210 template< ptrdiff_t I
214 inline decltype(
auto)
band(
Matrix<MT,SO>&& matrix, RBAs... args )
218 using ReturnType = Band_<MT,I>;
219 return ReturnType( ~matrix, args... );
260 template<
typename MT
267 using ReturnType = Band_<MT>;
268 return ReturnType( ~matrix, index, args... );
309 template<
typename MT
316 using ReturnType =
const Band_<const MT>;
317 return ReturnType( ~matrix, index, args... );
337 template<
typename MT
344 using ReturnType = Band_<MT>;
345 return ReturnType( ~matrix, index, args... );
374 template<
typename MT
381 return band<0L>( ~matrix,
unchecked, args... );
409 template<
typename MT
416 return band<0L>( ~matrix,
unchecked, args... );
433 template<
typename MT
440 return band<0L>( ~matrix,
unchecked, args... );
465 template< ptrdiff_t... CBAs
468 inline decltype(
auto)
band( const MatMatAddExpr<MT>& matrix, RBAs... args )
472 return band<CBAs...>( (~matrix).leftOperand(), args... ) +
473 band<CBAs...>( (~matrix).rightOperand(), args... );
491 template< ptrdiff_t... CBAs
494 inline decltype(
auto)
band( const MatMatSubExpr<MT>& matrix, RBAs... args )
498 return band<CBAs...>( (~matrix).leftOperand(), args... ) -
499 band<CBAs...>( (~matrix).rightOperand(), args... );
516 template< ptrdiff_t... CBAs
519 inline decltype(
auto)
band( const SchurExpr<MT>& matrix, RBAs... args )
523 return band<CBAs...>( (~matrix).leftOperand(), args... ) *
524 band<CBAs...>( (~matrix).rightOperand(), args... );
542 template< ptrdiff_t... CBAs
545 inline decltype(
auto)
band( const MatMatKronExpr<MT>& matrix, RBAs... args )
549 const BandData<CBAs...> bd( args... );
551 const size_t row ( bd.band() < 0L ? -bd.band() : 0UL );
552 const size_t column( bd.band() >= 0L ? bd.band() : 0UL );
572 template< ptrdiff_t... CBAs
575 inline decltype(
auto)
band( const VecTVecMultExpr<MT>& matrix, RBAs... args )
579 const BandData<CBAs...> bd( args... );
581 decltype(
auto) leftOperand ( (~matrix).leftOperand() );
582 decltype(auto) rightOperand( (~matrix).rightOperand() );
584 const
size_t row ( bd.
band() < 0L ? -bd.
band() : 0UL );
607 template< ptrdiff_t... CBAs
610 inline decltype(auto)
band( const MatScalarMultExpr<MT>& matrix, RBAs... args )
614 return band<CBAs...>( (~matrix).leftOperand(), args... ) * (~matrix).rightOperand();
632 template< ptrdiff_t... CBAs
635 inline decltype(
auto)
band( const MatScalarDivExpr<MT>& matrix, RBAs... args )
639 return band<CBAs...>( (~matrix).leftOperand(), args... ) / (~matrix).rightOperand();
657 template< ptrdiff_t... CBAs
660 inline decltype(
auto)
band( const MatMapExpr<MT>& matrix, RBAs... args )
664 return map( band<CBAs...>( (~matrix).operand(), args... ), (~matrix).operation() );
682 template< ptrdiff_t... CBAs
685 inline decltype(
auto)
band( const MatMatMapExpr<MT>& matrix, RBAs... args )
689 return map( band<CBAs...>( (~matrix).leftOperand(), args... ),
690 band<CBAs...>( (~matrix).rightOperand(), args... ),
691 (~matrix).operation() );
709 template< ptrdiff_t... CBAs
712 inline decltype(
auto)
band( const MatEvalExpr<MT>& matrix, RBAs... args )
716 return eval( band<CBAs...>( (~matrix).operand(), args... ) );
734 template< ptrdiff_t... CBAs
737 inline decltype(
auto)
band( const MatSerialExpr<MT>& matrix, RBAs... args )
741 return serial( band<CBAs...>( (~matrix).operand(), args... ) );
759 template< ptrdiff_t... CBAs
762 inline decltype(
auto)
band( const DeclExpr<MT>& matrix, RBAs... args )
766 return band<CBAs...>( (~matrix).operand(), args... );
784 template< ptrdiff_t... CBAs
787 inline decltype(
auto)
band( const MatTransExpr<MT>& matrix, RBAs... args )
791 return band<-CBAs...>( (~matrix).operand(), -args... );
809 template< ptrdiff_t... CBAs
813 inline decltype(
auto)
band( const VecExpandExpr<MT,CEAs...>& matrix, RBAs... args )
819 constexpr
bool TF( TransposeFlag_v<VT> );
821 const BandData<CBAs...> bd( args... );
823 const size_t index( TF ? bd.column() : bd.row() );
824 const size_t size (
min( (~matrix).
rows() - bd.row(), (~matrix).
columns() - bd.column() ) );
826 return subvector( transTo<defaultTransposeFlag>( (~matrix).operand() ), index,
size, args... );
856 , EnableIf_t< IsBand_v< RemoveReference_t<VT> > &&
857 RemoveReference_t<VT>::compileTimeArgs >* =
nullptr >
858 inline decltype(
auto)
subvector( VT&& b, RSAs... args )
864 constexpr
size_t row ( ( I2 >= 0L ? 0UL : -I2 ) + I );
865 constexpr
size_t column( ( I2 >= 0L ? I2 : 0UL ) + I );
867 return diagonal( submatrix<AF,row,column,N,N>( b.operand(), args... ),
unchecked );
888 , EnableIf_t< IsBand_v< RemoveReference_t<VT> > &&
889 (
sizeof...( CSAs ) == 0UL || !RemoveReference_t<VT>::compileTimeArgs ) >* =
nullptr >
890 inline decltype(
auto)
subvector( VT&& b, RSAs... args )
894 const SubvectorData<CSAs...> sd( args... );
896 const size_t row ( b.row() + sd.offset() );
897 const size_t column( b.column() + sd.offset() );
921 template<
typename MT
925 , ptrdiff_t... CBAs >
926 inline void reset( Band<MT,TF,DF,MF,CBAs...>&
band )
942 template<
typename MT
946 , ptrdiff_t... CBAs >
947 inline void reset( Band<MT,TF,DF,MF,CBAs...>&&
band )
965 template<
typename MT
969 , ptrdiff_t... CBAs >
970 inline void clear( Band<MT,TF,DF,MF,CBAs...>&
band )
988 template<
typename MT
992 , ptrdiff_t... CBAs >
993 inline void clear( Band<MT,TF,DF,MF,CBAs...>&&
band )
1031 , ptrdiff_t... CBAs >
1032 inline bool isDefault(
const Band<MT,TF,true,MF,CBAs...>&
band )
1036 for(
size_t i=0UL; i<
band.size(); ++i )
1037 if( !isDefault<RF>(
band[i] ) )
return false;
1074 , ptrdiff_t... CBAs >
1075 inline bool isDefault(
const Band<MT,TF,false,MF,CBAs...>&
band )
1079 for(
const auto& element :
band )
1080 if( !isDefault<RF>( element.value() ) )
return false;
1105 template<
typename MT
1109 , ptrdiff_t... CBAs >
1110 inline bool isIntact(
const Band<MT,TF,DF,MF,CBAs...>&
band ) noexcept
1112 const ptrdiff_t index(
band.band() );
1114 return ( ( index >= 0L ||
size_t( -index ) <
band.operand().rows() ) &&
1115 ( index <= 0L ||
size_t( index ) <
band.operand().columns() ) &&
1135 template<
typename MT1
1139 , ptrdiff_t... CBAs1
1141 , ptrdiff_t... CBAs2 >
1142 inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1143 const Band<MT2,TF,DF,MF,CBAs2...>& b ) noexcept
1144 -> DisableIf_t< IsSubmatrix_v<MT1> || IsSubmatrix_v<MT2>,
bool >
1146 return (
isSame( a.operand(), b.operand() ) && ( a.band() == b.band() ) );
1165 template<
typename MT1
1169 , ptrdiff_t... CBAs1
1171 , ptrdiff_t... CBAs2 >
1172 inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1173 const Band<MT2,TF,DF,MF,CBAs2...>& b ) noexcept
1174 -> EnableIf_t< IsSubmatrix_v<MT1> && !IsSubmatrix_v<MT2>,
bool >
1176 return (
isSame( a.operand().operand(), b.operand() ) &&
1177 ( a.size() == b.size() ) &&
1178 ( a.row() + a.operand().row() == b.row() ) &&
1179 ( a.column() + a.operand().column() == b.column() ) );
1198 template<
typename MT1
1202 , ptrdiff_t... CBAs1
1204 , ptrdiff_t... CBAs2 >
1205 inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1206 const Band<MT2,TF,DF,MF,CBAs2...>& b ) noexcept
1207 -> EnableIf_t< !IsSubmatrix_v<MT1> && IsSubmatrix_v<MT2>,
bool >
1209 return (
isSame( a.operand(), b.operand().operand() ) &&
1210 ( a.size() == b.size() ) &&
1211 ( a.row() == b.row() + b.operand().row() ) &&
1212 ( a.column() == b.column() + b.operand().column() ) );
1231 template<
typename MT1
1235 , ptrdiff_t... CBAs1
1237 , ptrdiff_t... CBAs2 >
1238 inline auto isSame_backend(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1239 const Band<MT2,TF,DF,MF,CBAs2...>& b ) noexcept
1240 -> EnableIf_t< IsSubmatrix_v<MT1> && IsSubmatrix_v<MT2>,
bool >
1242 return (
isSame( a.operand().operand(), b.operand().operand() ) &&
1243 ( a.size() == b.size() ) &&
1244 ( a.row() + a.operand().row() == b.row() + b.operand().row() ) &&
1245 ( a.column() + a.operand().column() == b.column() + b.operand().column() ) );
1264 template<
typename MT1
1268 , ptrdiff_t... CBAs1
1270 , ptrdiff_t... CBAs2 >
1271 inline bool isSame(
const Band<MT1,TF,DF,MF,CBAs1...>& a,
1272 const Band<MT2,TF,DF,MF,CBAs2...>& b ) noexcept
1274 return isSame_backend( a, b );
1295 template<
typename MT
1301 inline bool trySet(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1305 return trySet(
band.operand(),
band.row()+index,
band.column()+index, value );
1327 template<
typename MT
1334 trySet(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1339 const size_t iend( index +
size );
1341 for(
size_t i=index; i<iend; ++i ) {
1342 if( !trySet(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1367 template<
typename MT
1373 inline bool tryAdd(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1377 return tryAdd(
band.operand(),
band.row()+index,
band.column()+index, value );
1399 template<
typename MT
1406 tryAdd(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1411 const size_t iend( index +
size );
1413 for(
size_t i=index; i<iend; ++i ) {
1414 if( !tryAdd(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1439 template<
typename MT
1445 inline bool trySub(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1449 return trySub(
band.operand(),
band.row()+index,
band.column()+index, value );
1471 template<
typename MT
1478 trySub(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1483 const size_t iend( index +
size );
1485 for(
size_t i=index; i<iend; ++i ) {
1486 if( !trySub(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1511 template<
typename MT
1517 inline bool tryMult(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1521 return tryMult(
band.operand(),
band.row()+index,
band.column()+index, value );
1543 template<
typename MT
1550 tryMult(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1555 const size_t iend( index +
size );
1557 for(
size_t i=index; i<iend; ++i ) {
1558 if( !tryMult(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1583 template<
typename MT
1589 inline bool tryDiv(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1593 return tryDiv(
band.operand(),
band.row()+index,
band.column()+index, value );
1615 template<
typename MT
1622 tryDiv(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1627 const size_t iend( index +
size );
1629 for(
size_t i=index; i<iend; ++i ) {
1630 if( !tryDiv(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1655 template<
typename MT
1659 , ptrdiff_t... CBAs >
1660 inline bool tryShift(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
int count )
1664 return tryShift(
band.operand(),
band.row()+index,
band.column()+index, count );
1686 template<
typename MT
1690 , ptrdiff_t... CBAs >
1692 tryShift(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
int count )
1697 const size_t iend( index +
size );
1699 for(
size_t i=index; i<iend; ++i ) {
1700 if( !tryShift(
band.operand(),
band.row()+i,
band.column()+i, count ) )
1725 template<
typename MT
1731 inline bool tryBitand(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1735 return tryBitand(
band.operand(),
band.row()+index,
band.column()+index, value );
1757 template<
typename MT
1764 tryBitand(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1769 const size_t iend( index +
size );
1771 for(
size_t i=index; i<iend; ++i ) {
1772 if( !tryBitand(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1797 template<
typename MT
1803 inline bool tryBitor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1807 return tryBitor(
band.operand(),
band.row()+index,
band.column()+index, value );
1829 template<
typename MT
1836 tryBitor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1841 const size_t iend( index +
size );
1843 for(
size_t i=index; i<iend; ++i ) {
1844 if( !tryBitor(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1869 template<
typename MT
1875 inline bool tryBitxor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
const ET& value )
1879 return tryBitxor(
band.operand(),
band.row()+index,
band.column()+index, value );
1901 template<
typename MT
1908 tryBitxor(
const Band<MT,TF,DF,MF,CBAs...>&
band,
size_t index,
size_t size,
const ET& value )
1913 const size_t iend( index +
size );
1915 for(
size_t i=index; i<iend; ++i ) {
1916 if( !tryBitxor(
band.operand(),
band.row()+i,
band.column()+i, value ) )
1941 template<
typename MT
1947 inline bool tryAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
1948 const Vector<VT,TF>& rhs,
size_t index )
1953 return tryAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
1974 template<
typename MT
1980 inline bool tryAddAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
1981 const Vector<VT,TF>& rhs,
size_t index )
1986 return tryAddAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2007 template<
typename MT
2013 inline bool trySubAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2014 const Vector<VT,TF>& rhs,
size_t index )
2019 return trySubAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2040 template<
typename MT
2046 inline bool tryMultAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2047 const Vector<VT,TF>& rhs,
size_t index )
2052 return tryMultAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2073 template<
typename MT
2079 inline bool tryDivAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2080 const Vector<VT,TF>& rhs,
size_t index )
2085 return tryDivAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2106 template<
typename MT
2112 inline bool tryShiftAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2113 const Vector<VT,TF>& rhs,
size_t index )
2118 return tryShiftAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2139 template<
typename MT
2145 inline bool tryBitandAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2146 const Vector<VT,TF>& rhs,
size_t index )
2151 return tryBitandAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2172 template<
typename MT
2178 inline bool tryBitorAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2179 const Vector<VT,TF>& rhs,
size_t index )
2184 return tryBitorAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2205 template<
typename MT
2211 inline bool tryBitxorAssign(
const Band<MT,TF,DF,MF,CBAs...>& lhs,
2212 const Vector<VT,TF>& rhs,
size_t index )
2217 return tryBitxorAssign( lhs.operand(), ~rhs, lhs.band(), lhs.row()+index, lhs.column()+index );
2238 template<
typename MT
2243 inline decltype(
auto) derestrict( Band<MT,TF,DF,MF,I>& b )
2245 return band<I>( derestrict( b.operand() ),
unchecked );
2266 template<
typename MT
2271 inline decltype(
auto) derestrict( Band<MT,TF,DF,MF,I>&& b )
2273 return band<I>( derestrict( b.operand() ),
unchecked );
2294 template<
typename MT
2298 inline decltype(
auto) derestrict( Band<MT,TF,DF,MF>& b )
2300 return band( derestrict( b.operand() ), b.band(),
unchecked );
2321 template<
typename MT
2325 inline decltype(
auto) derestrict( Band<MT,TF,DF,MF>&& b )
2327 return band( derestrict( b.operand() ), b.band(),
unchecked );
2343 template<
typename MT,
bool TF,
bool DF,
bool MF, ptrdiff_t I >
2344 struct Size< Band<MT,TF,DF,MF,I>, 0UL >
2345 :
public If_t< ( Size_v<MT,0UL> >= 0L && Size_v<MT,1UL> >= 0L )
2346 ,
Min_t< Ptrdiff_t< Size_v<MT,0UL> - ( I >= 0L ? 0L : -I ) >
2347 ,
Ptrdiff_t< Size_v<MT,1UL> - ( I >= 0L ? I : 0L ) > >
2364 template<
typename MT,
bool TF,
bool DF,
bool MF, ptrdiff_t I >
2365 struct MaxSize< Band<MT,TF,DF,MF,I>, 0UL >
2366 :
public If_t< ( MaxSize_v<MT,0UL> >= 0L && MaxSize_v<MT,1UL> >= 0L )
2367 ,
Min_t< Ptrdiff_t< MaxSize_v<MT,0UL> - ( I >= 0L ? 0L : -I ) >
2368 ,
Ptrdiff_t< MaxSize_v<MT,1UL> - ( I >= 0L ? I : 0L ) > >
2385 template<
typename MT,
bool TF,
bool DF,
bool MF, ptrdiff_t... CBAs >
2386 struct IsRestricted< Band<MT,TF,DF,MF,CBAs...> >
2387 :
public IsRestricted<MT>
2403 template<
typename MT,
bool TF,
bool MF, ptrdiff_t... CBAs >
2404 struct HasConstDataAccess< Band<MT,TF,true,MF,CBAs...> >
2405 :
public HasConstDataAccess<MT>
2421 template<
typename MT,
bool TF,
bool MF, ptrdiff_t... CBAs >
2422 struct HasMutableDataAccess< Band<MT,TF,true,MF,CBAs...> >
2423 :
public HasMutableDataAccess<MT>
2439 template<
typename MT,
bool TF,
bool DF,
bool MF, ptrdiff_t... CBAs >
2440 struct IsOpposedView< Band<MT,TF,DF,MF,CBAs...> >
AlignmentFlag
Alignment flag for (un-)aligned vectors and matrices.Via these flags it is possible to specify subvec...
Definition: AlignmentFlag.h:62
Pointer difference type of the Blaze library.
Header file for auxiliary alias declarations.
decltype(auto) column(Matrix< MT, SO > &matrix, RCAs... args)
Creating a view on a specific column of the given matrix.
Definition: Column.h:133
Headerfile for the generic min algorithm.
Header file for the blaze::checked and blaze::unchecked instances.
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:992
Header file for basic type definitions.
decltype(auto) submatrix(Matrix< MT, SO > &, RSAs...)
Creating a view on a specific submatrix of the given matrix.
Definition: Submatrix.h:178
typename If< Condition, T1, T2 >::Type If_t
Auxiliary alias template for the If class template.The If_t alias template provides a convenient shor...
Definition: If.h:109
IntegralConstant< ptrdiff_t, N > Ptrdiff_t
Compile time integral constant wrapper for ptrdiff_t.The Ptrdiff_t alias template represents an integ...
Definition: IntegralConstant.h:237
Header file for the MatTransExpr base class.
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:595
constexpr Unchecked unchecked
Global Unchecked instance.The blaze::unchecked instance is an optional token for the creation of view...
Definition: Check.h:138
Header file for the MatEvalExpr base class.
decltype(auto) subvector(Vector< VT, TF > &, RSAs...)
Creating a view on a specific subvector of the given vector.
Definition: Subvector.h:154
typename RemoveReference< T >::Type RemoveReference_t
Auxiliary alias declaration for the RemoveReference type trait.The RemoveReference_t alias declaratio...
Definition: RemoveReference.h:95
Header file for the implementation of the Band base template.
BoolConstant< true > TrueType
Type traits base class.The TrueType class is used as base class for type traits and value traits that...
Definition: IntegralConstant.h:132
Header file for the MaxSize type trait.
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:340
constexpr size_t columns(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of columns of the matrix.
Definition: Matrix.h:514
Header file for the MatMatKronExpr base class.
Header file for the MatMapExpr base class.
Band specialization for sparse matrices.
Header file for the DisableIf class template.
Header file for the Min_t alias template.
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
Header file for the If class template.
Header file for the IsSubmatrix type trait.
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:1162
Header file for the implementation of the SubvectorData class template.
Header file for the MatMatSubExpr base class.
Header file for the IsBand type trait.
decltype(auto) transTo(const DenseVector< VT, TF > &dv)
Conditional calculation of the transpose of the given dense vector.
Definition: DVecTransExpr.h:781
Header file for the IsOpposedView type trait.
Header file for the TransposeFlag type trait.
decltype(auto) eval(const DenseMatrix< MT, SO > &dm)
Forces the evaluation of the given dense matrix expression dm.
Definition: DMatEvalExpr.h:786
decltype(auto) diagonal(Matrix< MT, SO > &matrix, RDAs... args)
Creating a view on the diagonal of the given matrix.
Definition: Band.h:377
Header file for the MatSerialExpr base class.
Header file for the VecTVecMultExpr base class.
Header file for the EnableIf class template.
void clear(const DiagonalProxy< MT > &proxy)
Clearing the represented element.
Definition: DiagonalProxy.h:615
decltype(auto) band(Matrix< MT, SO > &matrix, RBAs... args)
Creating a view on a specific band of the given matrix.
Definition: Band.h:137
Header file for the HasConstDataAccess type trait.
Header file for the DeclExpr base class.
Header file for the Matrix base class.
Header file for the MatScalarMultExpr base class.
Header file for run time assertion macros.
If_t< Less_t< T1, T2 >::value, T1, T2 > Min_t
Compile time value evaluation.The Min_t alias template selects the smaller of the two given template ...
Definition: Min.h:73
Header file for the SchurExpr base class.
decltype(auto) row(Matrix< MT, SO > &, RRAs...)
Creating a view on a specific row of the given matrix.
Definition: Row.h:133
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:94
Header file for all forward declarations for expression class templates.
Header file for the isDefault shim.
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:530
Base class for matrices.The Matrix class is a base class for all dense and sparse matrix classes with...
Definition: Forward.h:114
typename T::VectorType VectorType_t
Alias declaration for nested VectorType type definitions.The VectorType_t alias declaration provides ...
Definition: Aliases.h:510
decltype(auto) serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:808
Header file for the HasMutableDataAccess type trait.
Header file for the MatMatAddExpr base class.
constexpr size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:498
Header file for the RemoveReference type trait.
Header file for the VecExpandExpr base class.
Band specialization for dense matrices.
Header file for the MatMatMapExpr base class.
Header file for the default transpose flag for all vectors of the Blaze library.
Header file for all forward declarations for views.
Header file for the IntegralConstant class template.
bool isIntact(const DiagonalMatrix< MT, SO, DF > &m)
Returns whether the invariants of the given diagonal matrix are intact.
Definition: DiagonalMatrix.h:264
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:635
Header file for the MatScalarDivExpr base class.
Header file for the IsRestricted type trait.
Header file for the Size type trait.
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression,...
Definition: Assert.h:101
Header file for the implementation of the BandData class template.
Header file for the function trace functionality.
decltype(auto) map(const DenseMatrix< MT1, SO > &lhs, const DenseMatrix< MT2, SO > &rhs, OP op)
Evaluates the given binary operation on each single element of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1121