35 #ifndef _BLAZE_MATH_ADAPTORS_HERMITIANMATRIX_H_ 36 #define _BLAZE_MATH_ADAPTORS_HERMITIANMATRIX_H_ 117 template<
typename MT,
bool SO,
bool DF >
118 void reset( HermitianMatrix<MT,SO,DF>& m );
120 template<
typename MT,
bool SO,
bool DF >
121 void reset( HermitianMatrix<MT,SO,DF>& m,
size_t i );
123 template<
typename MT,
bool SO,
bool DF >
124 void clear( HermitianMatrix<MT,SO,DF>& m );
126 template<
bool RF,
typename MT,
bool SO,
bool DF >
127 bool isDefault(
const HermitianMatrix<MT,SO,DF>& m );
129 template<
typename MT,
bool SO,
bool DF >
130 bool isIntact(
const HermitianMatrix<MT,SO,DF>& m );
132 template<
typename MT,
bool SO,
bool DF >
133 void swap( HermitianMatrix<MT,SO,DF>& a, HermitianMatrix<MT,SO,DF>& b ) noexcept;
145 template<
typename MT
168 template<
typename MT
185 template<
typename MT
226 return isDefault<RF>( m.matrix_ );
252 template<
typename MT
270 template<
typename MT
306 inline void invert( HermitianMatrix<MT,SO,true>& m )
324 m.matrix_ = std::move( tmp );
348 template<
typename MT
352 inline bool trySet(
const HermitianMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
359 return ( i != j ||
isReal( value ) );
383 template<
typename MT
388 trySet(
const HermitianMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
397 return ( m == 0UL ) ||
423 template<
typename MT
427 inline bool tryAdd(
const HermitianMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
429 return trySet( mat, i, j, value );
453 template<
typename MT
458 tryAdd(
const HermitianMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
460 return trySet( mat,
row,
column, m, n, value );
482 template<
typename MT
486 inline bool trySub(
const HermitianMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
488 return trySet( mat, i, j, value );
512 template<
typename MT
517 trySub(
const HermitianMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
519 return trySet( mat,
row,
column, m, n, value );
541 template<
typename MT
545 inline bool tryMult(
const HermitianMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
547 return trySet( mat, i, j, value );
571 template<
typename MT
576 tryMult(
const HermitianMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
578 return trySet( mat,
row,
column, m, n, value );
600 template<
typename MT
604 inline bool tryDiv(
const HermitianMatrix<MT,SO,DF>& mat,
size_t i,
size_t j,
const ET& value )
606 return trySet( mat, i, j, value );
630 template<
typename MT
635 tryDiv(
const HermitianMatrix<MT,SO,DF>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
637 return trySet( mat,
row,
column, m, n, value );
659 template<
typename MT
663 inline bool tryAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
664 const Vector<VT,false>& rhs,
size_t row,
size_t column )
674 using ET = ElementType_t< HermitianMatrix<MT,SO,DF> >;
676 return ( IsBuiltin_v<ET> ||
703 template<
typename MT
707 inline bool tryAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
708 const Vector<VT,true>& rhs,
size_t row,
size_t column )
718 using ET = ElementType_t< HermitianMatrix<MT,SO,DF> >;
720 return ( IsBuiltin_v<ET> ||
749 template<
typename MT
754 inline bool tryAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
const DenseVector<VT,TF>& rhs,
767 for(
size_t i=0UL; i<(~rhs).
size(); ++i ) {
768 if( !
isReal( (~rhs)[i] ) )
797 template<
typename MT
802 inline bool tryAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
const SparseVector<VT,TF>& rhs,
815 for(
const auto& element : ~rhs ) {
816 if( !
isReal( element.value() ) )
843 template<
typename MT1
848 inline bool tryAssign(
const HermitianMatrix<MT1,SO1,DF>& lhs,
849 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
860 const size_t M( (~rhs).
rows() );
861 const size_t N( (~rhs).
columns() );
872 const size_t subrow( lower ? 0UL :
column -
row );
873 const size_t subcol( lower ?
row -
column : 0UL );
897 template<
typename MT
902 inline bool tryAddAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
903 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
905 return tryAssign( lhs, ~rhs,
row,
column );
929 template<
typename MT
934 inline bool tryAddAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
959 template<
typename MT1
964 inline bool tryAddAssign(
const HermitianMatrix<MT1,SO1,DF>& lhs,
965 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
967 return tryAssign( lhs, ~rhs,
row,
column );
990 template<
typename MT
995 inline bool trySubAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
996 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
998 return tryAssign( lhs, ~rhs,
row,
column );
1022 template<
typename MT
1027 inline bool trySubAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1053 template<
typename MT1
1058 inline bool trySubAssign(
const HermitianMatrix<MT1,SO1,DF>& lhs,
1059 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
1061 return tryAssign( lhs, ~rhs,
row,
column );
1084 template<
typename MT
1089 inline bool tryMultAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
1090 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
1092 return tryAssign( lhs, ~rhs,
row,
column );
1116 template<
typename MT
1121 inline bool tryMultAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1147 template<
typename MT1
1152 inline bool trySchurAssign(
const HermitianMatrix<MT1,SO1,DF>& lhs,
1153 const Matrix<MT2,SO2>& rhs,
size_t row,
size_t column )
1155 return tryAssign( lhs, ~rhs,
row,
column );
1177 template<
typename MT
1182 inline bool tryDivAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
1183 const Vector<VT,TF>& rhs,
size_t row,
size_t column )
1185 return tryAssign( lhs, ~rhs,
row,
column );
1209 template<
typename MT
1214 inline bool tryDivAssign(
const HermitianMatrix<MT,SO,DF>& lhs,
const Vector<VT,TF>& rhs,
1233 template<
typename MT,
bool SO,
bool DF >
1234 struct Size< HermitianMatrix<MT,SO,DF>, 0UL >
1235 :
public Size<MT,0UL>
1238 template<
typename MT,
bool SO,
bool DF >
1239 struct Size< HermitianMatrix<MT,SO,DF>, 1UL >
1240 :
public Size<MT,1UL>
1256 template<
typename MT,
bool SO,
bool DF >
1257 struct MaxSize< HermitianMatrix<MT,SO,DF>, 0UL >
1258 :
public MaxSize<MT,0UL>
1261 template<
typename MT,
bool SO,
bool DF >
1262 struct MaxSize< HermitianMatrix<MT,SO,DF>, 1UL >
1263 :
public MaxSize<MT,1UL>
1279 template<
typename MT,
bool SO,
bool DF >
1280 struct IsSquare< HermitianMatrix<MT,SO,DF> >
1297 template<
typename MT,
bool SO,
bool DF >
1298 struct IsUniform< HermitianMatrix<MT,SO,DF> >
1299 :
public IsUniform<MT>
1315 template<
typename MT,
bool SO,
bool DF >
1316 struct IsSymmetric< HermitianMatrix<MT,SO,DF> >
1317 :
public IsBuiltin< ElementType_t<MT> >
1333 template<
typename MT,
bool SO,
bool DF >
1334 struct IsHermitian< HermitianMatrix<MT,SO,DF> >
1351 template<
typename MT,
bool SO,
bool DF >
1352 struct IsStrictlyLower< HermitianMatrix<MT,SO,DF> >
1369 template<
typename MT,
bool SO,
bool DF >
1370 struct IsStrictlyUpper< HermitianMatrix<MT,SO,DF> >
1387 template<
typename MT,
bool SO,
bool DF >
1388 struct IsAdaptor< HermitianMatrix<MT,SO,DF> >
1405 template<
typename MT,
bool SO,
bool DF >
1406 struct IsRestricted< HermitianMatrix<MT,SO,DF> >
1423 template<
typename MT,
bool SO >
1424 struct HasConstDataAccess< HermitianMatrix<MT,SO,true> >
1441 template<
typename MT,
bool SO,
bool DF >
1442 struct IsAligned< HermitianMatrix<MT,SO,DF> >
1443 :
public IsAligned<MT>
1459 template<
typename MT,
bool SO,
bool DF >
1460 struct IsContiguous< HermitianMatrix<MT,SO,DF> >
1461 :
public IsContiguous<MT>
1477 template<
typename MT,
bool SO,
bool DF >
1478 struct IsPadded< HermitianMatrix<MT,SO,DF> >
1479 :
public IsPadded<MT>
1495 template<
typename MT,
bool SO,
bool DF >
1496 struct IsResizable< HermitianMatrix<MT,SO,DF> >
1497 :
public IsResizable<MT>
1513 template<
typename MT,
bool SO,
bool DF >
1514 struct IsShrinkable< HermitianMatrix<MT,SO,DF> >
1515 :
public IsShrinkable<MT>
1531 template<
typename MT,
bool SO,
bool DF >
1532 struct RemoveAdaptor< HermitianMatrix<MT,SO,DF> >
1550 template<
typename T1,
typename T2 >
1551 struct AddTraitEval1< T1, T2
1554 ( ( IsHermitian_v<T1> && !IsSymmetric_v<T1> &&
1555 IsHermitian_v<T2> && !IsSymmetric_v<T2> ) ||
1556 ( IsHermitian_v<T1> && !IsSymmetric_v<T1> &&
1557 IsSymmetric_v<T2> && !
IsComplex_v< UnderlyingNumeric_t<T2> > ) ||
1558 ( IsSymmetric_v<T1> && !IsComplex_v< UnderlyingNumeric_t<T1> > &&
1559 IsHermitian_v<T2> && !IsSymmetric_v<T2> ) ) &&
1560 !( IsUniform_v<T1> && IsUniform_v<T2> ) &&
1561 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1563 using Type = HermitianMatrix< typename AddTraitEval2<T1,T2>::Type >;
1579 template<
typename T1,
typename T2 >
1580 struct SubTraitEval1< T1, T2
1583 ( ( IsHermitian_v<T1> && !IsSymmetric_v<T1> &&
1584 IsHermitian_v<T2> && !IsSymmetric_v<T2> ) ||
1585 ( IsHermitian_v<T1> && !IsSymmetric_v<T1> &&
1586 IsSymmetric_v<T2> && !
IsComplex_v< UnderlyingNumeric_t<T2> > ) ||
1587 ( IsSymmetric_v<T1> && !IsComplex_v< UnderlyingNumeric_t<T1> > &&
1588 IsHermitian_v<T2> && !IsSymmetric_v<T2> ) ) &&
1589 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1591 using Type = HermitianMatrix< typename SubTraitEval2<T1,T2>::Type >;
1607 template<
typename T1,
typename T2 >
1608 struct SchurTraitEval1< T1, T2
1611 ( IsHermitian_v<T1> && IsHermitian_v<T2> ) &&
1612 !( IsSymmetric_v<T1> && IsSymmetric_v<T2> ) &&
1613 !( IsDiagonal_v<T1> || IsZero_v<T1> ) &&
1614 !( IsDiagonal_v<T2> || IsZero_v<T2> ) > >
1616 using Type = HermitianMatrix< typename SchurTraitEval2<T1,T2>::Type >;
1632 template<
typename T1,
typename T2 >
1633 struct MultTraitEval1< T1, T2
1636 ( IsHermitian_v<T1> && !IsSymmetric_v<T1> && !IsUniform_v<T1> ) > >
1638 using Type = HermitianMatrix< typename MultTraitEval2<T1,T2>::Type >;
1641 template<
typename T1,
typename T2 >
1642 struct MultTraitEval1< T1, T2
1645 ( IsHermitian_v<T2> && !IsSymmetric_v<T2> && !IsUniform_v<T2> ) > >
1647 using Type = HermitianMatrix< typename MultTraitEval2<T1,T2>::Type >;
1663 template<
typename T1,
typename T2 >
1664 struct KronTraitEval1< T1, T2
1667 ( IsHermitian_v<T1> && IsHermitian_v<T2> ) &&
1668 !( IsSymmetric_v<T1> && IsSymmetric_v<T2> ) &&
1669 !( IsZero_v<T1> || IsZero_v<T2> ) > >
1671 using Type = HermitianMatrix< typename KronTraitEval2<T1,T2>::Type >;
1687 template<
typename T1,
typename T2 >
1688 struct DivTraitEval1< T1, T2
1691 using Type = HermitianMatrix< typename DivTraitEval2<T1,T2>::Type >;
1707 template<
typename T,
typename OP >
1708 struct UnaryMapTraitEval1< T, OP
1710 !YieldsSymmetric_v<OP,T> &&
1711 !YieldsIdentity_v<OP,T> > >
1713 using Type = HermitianMatrix< typename UnaryMapTraitEval2<T,OP>::Type, StorageOrder_v<T> >;
1721 template<
typename T1,
typename T2,
typename OP >
1722 struct BinaryMapTraitEval1< T1, T2, OP
1724 !YieldsSymmetric_v<OP,T1,T2> &&
1725 !YieldsIdentity_v<OP,T1,T2> > >
1727 using Type = HermitianMatrix< typename BinaryMapTraitEval2<T1,T2,OP>::Type >;
1743 template<
typename MT,
bool SO,
bool DF >
1744 struct DeclSymTrait< HermitianMatrix<MT,SO,DF> >
1746 using Type = SymmetricMatrix<MT,SO,DF>;
1762 template<
typename MT,
bool SO,
bool DF >
1763 struct DeclHermTrait< HermitianMatrix<MT,SO,DF> >
1765 using Type = HermitianMatrix<MT,SO,DF>;
1781 template<
typename MT,
bool SO,
bool DF >
1782 struct DeclLowTrait< HermitianMatrix<MT,SO,DF> >
1784 using Type = DiagonalMatrix<MT,SO,DF>;
1800 template<
typename MT,
bool SO,
bool DF >
1801 struct DeclUppTrait< HermitianMatrix<MT,SO,DF> >
1803 using Type = DiagonalMatrix<MT,SO,DF>;
1819 template<
typename MT,
bool SO,
bool DF >
1820 struct DeclDiagTrait< HermitianMatrix<MT,SO,DF> >
1822 using Type = DiagonalMatrix<MT,SO,DF>;
1838 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1839 struct HighType< HermitianMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1841 using Type = HermitianMatrix< typename HighType<MT1,MT2>::Type >;
1857 template<
typename MT1,
bool SO1,
bool DF1,
typename MT2,
bool SO2,
bool DF2 >
1858 struct LowType< HermitianMatrix<MT1,SO1,DF1>, HermitianMatrix<MT2,SO2,DF2> >
1860 using Type = HermitianMatrix< typename LowType<MT1,MT2>::Type >;
1876 template<
typename MT,
size_t I,
size_t N >
1877 struct SubmatrixTraitEval1< MT, I, I, N, N
1879 !IsSymmetric_v<MT> > >
1881 using Type = HermitianMatrix< typename SubmatrixTraitEval2<MT,I,I,N,N>::Type >;
bool isReal(const DiagonalProxy< MT > &proxy)
Returns whether the matrix element represents a real number.
Definition: DiagonalProxy.h:657
Header file for the UnderlyingNumeric type trait.
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 decldiag trait.
Header file for the Schur product trait.
constexpr bool IsComplex_v
Auxiliary variable template for the IsComplex type trait.The IsComplex_v variable template provides a...
Definition: IsComplex.h:139
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 subtraction trait.
Flag for the inversion of a diagonal matrix.
Definition: InversionFlag.h:115
decltype(auto) submatrix(Matrix< MT, SO > &, RSAs...)
Creating a view on a specific submatrix of the given matrix.
Definition: Submatrix.h:178
Flag for the inversion of a general matrix (same as byLU).
Definition: InversionFlag.h:108
Header file for the declherm trait.
Flag for the inversion of a upper unitriangular matrix.
Definition: InversionFlag.h:114
Flag for the inversion of a lower unitriangular matrix.
Definition: InversionFlag.h:112
Header file for the IsDiagonal type trait.
Header file for the dense matrix inversion flags.
Flag for the Bunch-Kaufman-based inversion for Hermitian matrices.
Definition: InversionFlag.h:105
void reset(const DiagonalProxy< MT > &proxy)
Resetting the represented element to the default initial values.
Definition: DiagonalProxy.h:595
Header file for the YieldsIdentity type trait.
Header file for the MAYBE_UNUSED function 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 all forward declarations of the math module.
constexpr bool IsHermitian_v
Auxiliary variable template for the IsHermitian type trait.The IsHermitian_v variable template provid...
Definition: IsHermitian.h:172
Header file for the MaxSize type trait.
constexpr size_t columns(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of columns of the matrix.
Definition: Matrix.h:514
bool isIdentity(const DenseMatrix< MT, SO > &dm)
Checks if the give dense matrix is an identity matrix.
Definition: DenseMatrix.h:2433
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
void invert(const HermitianProxy< MT > &proxy)
In-place inversion of the represented element.
Definition: HermitianProxy.h:779
Constraint on the data type.
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
Flag for the LU-based matrix inversion.
Definition: InversionFlag.h:103
Header file for the IsShrinkable 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
Flag for the inversion of a Hermitian matrix (same as byLDLH).
Definition: InversionFlag.h:110
constexpr void MAYBE_UNUSED(const Args &...)
Suppression of unused parameter warnings.
Definition: MaybeUnused.h:81
Header file for the IsAligned type trait.
Flag for the Bunch-Kaufman-based inversion for symmetric matrices.
Definition: InversionFlag.h:104
HermitianMatrix specialization for sparse matrices.
Header file for the Kron product trait.
Header file for the exception macros of the math module.
Header file for the RemoveAdaptor type trait.
Header file for the implementation of the base template of the HeritianMatrix.
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.
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 conjugate shim.
Header file for the IsNumeric type trait.
Header file for the HasConstDataAccess type trait.
Header file for the declupp trait.
Flag for the inversion of a symmetric matrix (same as byLDLT).
Definition: InversionFlag.h:109
Header file for run time assertion macros.
Header file for the YieldsSymmetric type trait.
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.
bool isHermitian(const DenseMatrix< MT, SO > &dm)
Checks if the given dense matrix is Hermitian.
Definition: DenseMatrix.h:1406
Matrix adapter for Hermitian matrices.
Definition: BaseTemplate.h:611
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_BE_BLAS_COMPATIBLE_TYPE(T)
Constraint on the data type.In case the given data type T is not a BLAS compatible data type (i....
Definition: BLASCompatible.h:61
Flag for the Cholesky-based inversion for positive-definite matrices.
Definition: InversionFlag.h:106
#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 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 IsBuiltin type trait.
Header file for the isDivisor shim.
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
Header file for the IsComplex type trait.
bool isDefault(const DiagonalProxy< MT > &proxy)
Returns whether the represented element is in default state.
Definition: DiagonalProxy.h:635
constexpr bool YieldsHermitian_v
Auxiliary variable template for the YieldsHermitian type trait.The YieldsHermitian_v variable templat...
Definition: YieldsHermitian.h:124
Header file for the YieldsHermitian 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.
Header file for the isReal shim.
HermitianMatrix specialization for dense matrices.
InversionFlag
Inversion flag.The InversionFlag type enumeration represents the different types of matrix inversion ...
Definition: InversionFlag.h:101
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression,...
Definition: Assert.h:101
Header file for the HighType type trait.