35 #ifndef _BLAZE_MATH_ADAPTORS_STRICTLYUPPERMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_STRICTLYUPPERMATRIX_H_ 109 template<
typename MT,
bool SO,
bool DF >
110 void reset( StrictlyUpperMatrix<MT,SO,DF>& m );
112 template<
typename MT,
bool SO,
bool DF >
113 void reset( StrictlyUpperMatrix<MT,SO,DF>& m,
size_t i );
115 template<
typename MT,
bool SO,
bool DF >
116 void clear( StrictlyUpperMatrix<MT,SO,DF>& m );
118 template<
bool RF,
typename MT,
bool SO,
bool DF >
119 bool isDefault(
const StrictlyUpperMatrix<MT,SO,DF>& m );
121 template<
typename MT,
bool SO,
bool DF >
122 bool isIntact(
const StrictlyUpperMatrix<MT,SO,DF>& m );
124 template<
typename MT,
bool SO,
bool DF >
125 void swap( StrictlyUpperMatrix<MT,SO,DF>& a, StrictlyUpperMatrix<MT,SO,DF>& b ) noexcept;
137 template<
typename MT
160 template<
typename MT
177 template<
typename MT
202 inline bool isDefault_backend(
const StrictlyUpperMatrix<MT,SO,DF>& m,
TrueType )
204 return ( m.rows() == 0UL );
225 inline bool isDefault_backend(
const StrictlyUpperMatrix<MT,SO,DF>& m,
FalseType )
228 for(
size_t j=1UL; j<m.columns(); ++j ) {
229 for(
size_t i=0UL; i<j; ++i ) {
230 if( !isDefault<RF>( m(i,j) ) )
236 for(
size_t i=0UL; i<m.rows(); ++i ) {
237 for(
size_t j=i+1UL; j<m.columns(); ++j ) {
238 if( !isDefault<RF>( m(i,j) ) )
309 template<
typename MT
327 template<
typename MT
353 template<
typename MT
357 inline bool trySet(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
388 template<
typename MT
393 trySet(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
402 return ( m == 0UL ) ||
427 template<
typename MT
431 inline bool tryAdd(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
433 return trySet( mat, i, j, value );
457 template<
typename MT
462 tryAdd(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
464 return trySet( mat,
row,
column, m, n, value );
487 template<
typename MT
491 inline bool trySub(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
493 return trySet( mat, i, j, value );
518 template<
typename MT
523 trySub(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
525 return trySet( mat,
row,
column, m, n, value );
547 template<
typename MT
551 inline bool tryBitor(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
553 return trySet( mat, i, j, value );
578 template<
typename MT
583 tryBitor(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
585 return trySet( mat,
row,
column, m, n, value );
607 template<
typename MT
611 inline bool tryBitxor(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
613 return tryAdd( mat, i, j, value );
638 template<
typename MT
643 tryBitxor(
const StrictlyUpperMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
645 return tryAdd( mat,
row,
column, m, n, value );
668 template<
typename MT
672 inline bool tryAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
673 const DenseVector<VT,false>& rhs,
size_t row,
size_t column )
685 for(
size_t i=ibegin; i<(~rhs).
size(); ++i ) {
713 template<
typename MT
717 inline bool tryAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
718 const DenseVector<VT,true>& rhs,
size_t row,
size_t column )
733 for(
size_t i=0UL; i<iend; ++i ) {
762 template<
typename MT
767 inline bool tryAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
const DenseVector<VT,TF>& rhs,
780 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
809 template<
typename MT
813 inline bool tryAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
814 const SparseVector<VT,false>& rhs,
size_t row,
size_t column )
824 const auto last( (~rhs).
end() );
827 for( ; element!=last; ++element ) {
855 template<
typename MT
859 inline bool tryAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
860 const SparseVector<VT,true>& rhs,
size_t row,
size_t column )
873 const auto last( (~rhs).lowerBound(
row -
column + 1UL ) );
875 for(
auto element=(~rhs).
begin(); element!=last; ++element ) {
904 template<
typename MT
909 inline bool tryAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
const SparseVector<VT,TF>& rhs,
922 for(
const auto& element : ~rhs ) {
951 template<
typename MT1
955 inline bool tryAssign(
const StrictlyUpperMatrix<MT1,SO,DF>& lhs,
956 const DenseMatrix<MT2,false>& rhs,
size_t row,
size_t column )
967 const size_t M( (~rhs).
rows() );
968 const size_t N( (~rhs).
columns() );
975 for(
size_t i=ibegin; i<M; ++i )
979 for(
size_t j=0UL; j<jend; ++j ) {
1008 template<
typename MT1
1012 inline bool tryAssign(
const StrictlyUpperMatrix<MT1,SO,DF>& lhs,
1013 const DenseMatrix<MT2,true>& rhs,
size_t row,
size_t column )
1024 const size_t M( (~rhs).
rows() );
1025 const size_t N( (~rhs).
columns() );
1032 for(
size_t j=0UL; j<jend; ++j )
1034 const bool containsDiagonal(
column + j >=
row );
1035 const size_t ibegin( ( containsDiagonal )?(
column + j -
row ):( 0UL ) );
1037 for(
size_t i=ibegin; i<M; ++i ) {
1066 template<
typename MT1
1070 inline bool tryAssign(
const StrictlyUpperMatrix<MT1,SO,DF>& lhs,
1071 const SparseMatrix<MT2,false>& rhs,
size_t row,
size_t column )
1082 const size_t M( (~rhs).
rows() );
1083 const size_t N( (~rhs).
columns() );
1090 for(
size_t i=ibegin; i<M; ++i )
1092 const size_t index(
row + i -
column + 1UL );
1093 const auto last( (~rhs).lowerBound( i,
min( index, N ) ) );
1095 for(
auto element=(~rhs).
begin(i); element!=last; ++element ) {
1124 template<
typename MT1
1128 inline bool tryAssign(
const StrictlyUpperMatrix<MT1,SO,DF>& lhs,
1129 const SparseMatrix<MT2,true>& rhs,
size_t row,
size_t column )
1140 const size_t M( (~rhs).
rows() );
1141 const size_t N( (~rhs).
columns() );
1148 for(
size_t j=0UL; j<jend; ++j )
1150 const bool containsDiagonal(
column + j >=
row );
1151 const size_t index( ( containsDiagonal )?(
column + j -
row ):( 0UL ) );
1153 const auto last( (~rhs).
end(j) );
1154 auto element( (~rhs).lowerBound( index, j ) );
1156 for( ; element!=last; ++element ) {
1185 template<
typename MT
1190 inline bool tryAddAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
1191 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
1193 return tryAssign( lhs, ~rhs,
row,
column );
1217 template<
typename MT
1222 inline bool tryAddAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1248 template<
typename MT1
1253 inline bool tryAddAssign(
const StrictlyUpperMatrix<MT1,SO1,DF>& lhs,
1254 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
1256 return tryAssign( lhs, ~rhs,
row,
column );
1279 template<
typename MT
1284 inline bool trySubAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
1285 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
1287 return tryAssign( lhs, ~rhs,
row,
column );
1311 template<
typename MT
1316 inline bool trySubAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1342 template<
typename MT1
1347 inline bool trySubAssign(
const StrictlyUpperMatrix<MT1,SO1,DF>& lhs,
1348 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
1350 return tryAssign( lhs, ~rhs,
row,
column );
1373 template<
typename MT
1378 inline bool tryBitorAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
1379 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
1381 return tryAssign( lhs, ~rhs,
row,
column );
1404 template<
typename MT
1409 inline bool tryBitorAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1435 template<
typename MT1
1440 inline bool tryBitorAssign(
const StrictlyUpperMatrix<MT1,SO1,DF>& lhs,
1441 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
1443 return tryAssign( lhs, ~rhs,
row,
column );
1466 template<
typename MT
1471 inline bool tryBitxorAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
1472 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
1474 return tryAssign( lhs, ~rhs,
row,
column );
1497 template<
typename MT
1502 inline bool tryBitxorAssign(
const StrictlyUpperMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1528 template<
typename MT1
1533 inline bool tryBitxorAssign(
const StrictlyUpperMatrix<MT1,SO1,DF>& lhs,
1534 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
1536 return tryAssign( lhs, ~rhs,
row,
column );
1556 template<
typename MT
1559 inline MT& derestrict( StrictlyUpperMatrix<MT,SO,DF>& m )
1577 template<
typename MT,
bool SO,
bool DF >
1578 struct Size< StrictlyUpperMatrix<MT,SO,DF>, 0UL >
1579 :
public Size<MT,0UL>
1582 template<
typename MT,
bool SO,
bool DF >
1583 struct Size< StrictlyUpperMatrix<MT,SO,DF>, 1UL >
1584 :
public Size<MT,1UL>
1600 template<
typename MT,
bool SO,
bool DF >
1601 struct MaxSize< StrictlyUpperMatrix<MT,SO,DF>, 0UL >
1602 :
public MaxSize<MT,0UL>
1605 template<
typename MT,
bool SO,
bool DF >
1606 struct MaxSize< StrictlyUpperMatrix<MT,SO,DF>, 1UL >
1607 :
public MaxSize<MT,1UL>
1623 template<
typename MT,
bool SO,
bool DF >
1624 struct IsSquare< StrictlyUpperMatrix<MT,SO,DF> >
1641 template<
typename MT,
bool SO,
bool DF >
1642 struct IsUniform< StrictlyUpperMatrix<MT,SO,DF> >
1643 :
public IsUniform<MT>
1659 template<
typename MT,
bool SO,
bool DF >
1660 struct IsSymmetric< StrictlyUpperMatrix<MT,SO,DF> >
1661 :
public IsUniform<MT>
1677 template<
typename MT,
bool SO,
bool DF >
1678 struct IsHermitian< StrictlyUpperMatrix<MT,SO,DF> >
1679 :
public IsUniform<MT>
1695 template<
typename MT,
bool SO,
bool DF >
1696 struct IsStrictlyLower< StrictlyUpperMatrix<MT,SO,DF> >
1697 :
public IsUniform<MT>
1713 template<
typename MT,
bool SO,
bool DF >
1714 struct IsStrictlyUpper< StrictlyUpperMatrix<MT,SO,DF> >
1731 template<
typename MT,
bool SO,
bool DF >
1732 struct IsAdaptor< StrictlyUpperMatrix<MT,SO,DF> >
1749 template<
typename MT,
bool SO,
bool DF >
1750 struct IsRestricted< StrictlyUpperMatrix<MT,SO,DF> >
1767 template<
typename MT,
bool SO >
1768 struct HasConstDataAccess< StrictlyUpperMatrix<MT,SO,true> >
1785 template<
typename MT,
bool SO,
bool DF >
1786 struct IsAligned< StrictlyUpperMatrix<MT,SO,DF> >
1787 :
public IsAligned<MT>
1803 template<
typename MT,
bool SO,
bool DF >
1804 struct IsContiguous< StrictlyUpperMatrix<MT,SO,DF> >
1805 :
public IsContiguous<MT>
1821 template<
typename MT,
bool SO,
bool DF >
1822 struct IsPadded< StrictlyUpperMatrix<MT,SO,DF> >
1823 :
public IsPadded<MT>
1839 template<
typename MT,
bool SO,
bool DF >
1840 struct IsResizable< StrictlyUpperMatrix<MT,SO,DF> >
1841 :
public IsResizable<MT>
1857 template<
typename MT,
bool SO,
bool DF >
1858 struct IsShrinkable< StrictlyUpperMatrix<MT,SO,DF> >
1859 :
public IsShrinkable<MT>
1875 template<
typename MT,
bool SO,
bool DF >
1876 struct RemoveAdaptor< StrictlyUpperMatrix<MT,SO,DF> >
1894 template<
typename T1,
typename T2 >
1895 struct AddTraitEval1< T1, T2
1898 ( IsStrictlyUpper_v<T1> && IsStrictlyUpper_v<T2> ) &&
1899 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1901 using Type = StrictlyUpperMatrix< typename AddTraitEval2<T1,T2>::Type >;
1917 template<
typename T1,
typename T2 >
1918 struct SubTraitEval1< T1, T2
1921 ( ( IsUniUpper_v<T1> && IsUniUpper_v<T2> ) ||
1922 ( IsStrictlyUpper_v<T1> && IsStrictlyUpper_v<T2> ) ) &&
1923 !( IsIdentity_v<T1> && IsIdentity_v<T2> ) &&
1924 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1926 using Type = StrictlyUpperMatrix< typename SubTraitEval2<T1,T2>::Type >;
1942 template<
typename T1,
typename T2 >
1943 struct SchurTraitEval1< T1, T2
1946 ( ( IsStrictlyUpper_v<T1> && !IsLower_v<T2> ) ||
1947 ( !IsLower_v<T1> && IsStrictlyUpper_v<T2> ) ) &&
1948 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1950 using Type = StrictlyUpperMatrix< typename SchurTraitEval2<T1,T2>::Type >;
1966 template<
typename T1,
typename T2 >
1967 struct MultTraitEval1< T1, T2
1970 ( IsStrictlyUpper_v<T1> && !IsUniform_v<T1> ) > >
1972 using Type = StrictlyUpperMatrix< typename MultTraitEval2<T1,T2>::Type >;
1975 template<
typename T1,
typename T2 >
1976 struct MultTraitEval1< T1, T2
1979 ( IsStrictlyUpper_v<T2> && !IsUniform_v<T2> ) > >
1981 using Type = StrictlyUpperMatrix< typename MultTraitEval2<T1,T2>::Type >;
1984 template<
typename T1,
typename T2 >
1985 struct MultTraitEval1< T1, T2
1988 ( ( IsStrictlyUpper_v<T1> && IsUpper_v<T2> ) ||
1989 ( IsUpper_v<T1> && IsStrictlyUpper_v<T2> ) ) &&
1990 !( IsIdentity_v<T1> || IsIdentity_v<T2> ) &&
1991 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1993 using Type = StrictlyUpperMatrix< typename MultTraitEval2<T1,T2>::Type >;
2009 template<
typename T1,
typename T2 >
2010 struct KronTraitEval1< T1, T2
2013 ( ( IsStrictlyUpper_v<T1> ) ||
2014 ( IsUpper_v<T1> && IsStrictlyUpper_v<T2> ) ) &&
2015 !( IsZero_v<T1> || IsZero_v<T2> ) > >
2017 using Type = StrictlyUpperMatrix< typename KronTraitEval2<T1,T2>::Type >;
2033 template<
typename T1,
typename T2 >
2034 struct DivTraitEval1< T1, T2
2037 using Type = StrictlyUpperMatrix< typename DivTraitEval2<T1,T2>::Type >;
2053 template<
typename T,
typename OP >
2054 struct UnaryMapTraitEval1< T, OP
2056 !YieldsDiagonal_v<OP,T> > >
2058 using Type = StrictlyUpperMatrix< typename UnaryMapTraitEval2<T,OP>::Type, StorageOrder_v<T> >;
2066 template<
typename T1,
typename T2,
typename OP >
2067 struct BinaryMapTraitEval1< T1, T2, OP
2069 !YieldsDiagonal_v<OP,T1,T2> > >
2071 using Type = StrictlyUpperMatrix< typename BinaryMapTraitEval2<T1,T2,OP>::Type >;
2087 template<
typename MT,
bool SO,
bool DF >
2088 struct DeclSymTrait< StrictlyUpperMatrix<MT,SO,DF> >
2090 using Type = ZeroMatrix< typename MT::ElementType, SO >;
2106 template<
typename MT,
bool SO,
bool DF >
2107 struct DeclHermTrait< StrictlyUpperMatrix<MT,SO,DF> >
2109 using Type = ZeroMatrix< typename MT::ElementType, SO >;
2125 template<
typename MT,
bool SO,
bool DF >
2126 struct DeclLowTrait< StrictlyUpperMatrix<MT,SO,DF> >
2128 using Type = ZeroMatrix< typename MT::ElementType, SO >;
2144 template<
typename MT,
bool SO,
bool DF >
2145 struct DeclUppTrait< StrictlyUpperMatrix<MT,SO,DF> >
2147 using Type = StrictlyUpperMatrix<MT>;
2163 template<
typename MT,
bool SO,
bool DF >
2164 struct DeclDiagTrait< StrictlyUpperMatrix<MT,SO,DF> >
2166 using Type = ZeroMatrix< typename MT::ElementType, SO >;
2182 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2183 struct HighType< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
2185 using Type = StrictlyUpperMatrix< typename HighType<MT1,MT2>::Type >;
2201 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
2202 struct LowType< StrictlyUpperMatrix<MT1,SO1,DF1>, StrictlyUpperMatrix<MT2,SO2,DF2> >
2204 using Type = StrictlyUpperMatrix< typename LowType<MT1,MT2>::Type >;
2220 template<
typename MT,
size_t I,
size_t N >
2221 struct SubmatrixTraitEval1< MT, I, I, N, N
2224 using Type = StrictlyUpperMatrix< typename SubmatrixTraitEval2<MT,I,I,N,N>::Type >;
BoolConstant< false > FalseType
Type/value traits base class.The FalseType class is used as base class for type traits and value trai...
Definition: IntegralConstant.h:121
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 decldiag trait.
Header file for the Schur product trait.
constexpr bool IsMatrix_v
Auxiliary variable template for the IsMatrix type trait.The IsMatrix_v variable template provides a c...
Definition: IsMatrix.h:138
Header file for the IsUniUpper type trait.
Header file for the subtraction trait.
Header file for the declherm trait.
MT::Iterator begin(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:372
StrictlyUpperMatrix specialization for dense matrices.
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:595
Header file for the MAYBE_UNUSED function template.
Header file for the IsIdentity type trait.
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 all forward declarations of the math module.
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 IsMatrix type trait.
Header file for the IsSquare type trait.
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.The EnableIf_t alias declaration provides a convenient...
Definition: EnableIf.h:138
Header file for the LowType type trait.
Header file for the multiplication trait.
Header file for the IsStrictlyUpper type trait.
Header file for the IsSymmetric type trait.
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
constexpr bool IsStrictlyUpper_v
Auxiliary variable template for the IsStrictlyUpper type trait.The IsStrictlyUpper_v variable templat...
Definition: IsStrictlyUpper.h:173
Matrix adapter for strictly upper triangular matrices.
Definition: BaseTemplate.h:558
Header file for the IsShrinkable type trait.
Header file for the YieldsStrictlyUpper 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 decllow trait.
constexpr bool IsNumeric_v
Auxiliary variable template for the IsNumeric type trait.The IsNumeric_v variable template provides a...
Definition: IsNumeric.h:143
Header file for the IsLower type trait.
constexpr void MAYBE_UNUSED(const Args &...)
Suppression of unused parameter warnings.
Definition: MaybeUnused.h:81
Header file for the IsAligned type trait.
Header file for the Kron product trait.
StrictlyUpperMatrix specialization for sparse matrices.
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:438
Header file for the RemoveAdaptor type trait.
Constraint on the data type.
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:615
Header file for the IsPadded type trait.
Header file for the IsAdaptor type trait.
Header file for the implementation of the base template of the StrictlyUpperMatrix.
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 IsNumeric type trait.
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:74
Header file for the declupp trait.
Header file for run time assertion macros.
Header file for the addition trait.
Header file for the division trait.
Header file for the submatrix trait.
Header file for the IsContiguous type trait.
decltype(auto) row(Matrix< MT, SO > &, RRAs...)
Creating a view on a specific row of the given matrix.
Definition: Row.h:133
Header file for the IsZero type trait.
Header file for the declsym 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:282
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:530
#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
constexpr bool YieldsStrictlyUpper_v
Auxiliary variable template for the YieldsStrictlyUpper type trait.The YieldsStrictlyUpper_v variable...
Definition: YieldsStrictlyUpper.h:124
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 YieldsDiagonal type trait.
Header file for the StorageOrder type trait.
Header file for the IntegralConstant class template.
Header file for the map trait.
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 IsUpper type trait.
Header file for the IsHermitian type trait.
Header file for the IsResizable type trait.
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 HighType type trait.