35 #ifndef _BLAZE_MATH_DENSE_EIGEN_H_ 36 #define _BLAZE_MATH_DENSE_EIGEN_H_ 76 template<
typename MT,
bool SO,
typename VT,
bool TF >
77 inline void eigen(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& w );
79 template<
typename MT1,
bool SO1,
typename VT,
bool TF,
typename MT2,
bool SO2 >
80 inline void eigen(
const DenseMatrix<MT1,SO1>& A, DenseVector<VT,TF>& w, DenseMatrix<MT2,SO2>& V );
104 template<
typename MT
108 inline EnableIf_< And< IsSymmetric<MT>, IsFloatingPoint< ElementType_<MT> > > >
109 eigen_backend(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& w )
111 using Tmp = ResultType_< RemoveAdaptor_<MT> >;
120 syevd( tmp, ~w,
'N',
'L' );
145 template<
typename MT
149 inline EnableIf_< And< IsHermitian<MT>, IsComplex< ElementType_<MT> > > >
150 eigen_backend(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& w )
152 using Tmp = ResultType_< RemoveAdaptor_<MT> >;
161 heevd( tmp, ~w,
'N',
'L' );
186 template<
typename MT
190 inline DisableIf_< Or< And< IsSymmetric<MT>, IsFloatingPoint< ElementType_<MT> > >
191 , And< IsHermitian<MT>, IsComplex< ElementType_<MT> > > > >
192 eigen_backend(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& w )
194 using Tmp = ResultType_< RemoveAdaptor_<MT> >;
296 template<
typename MT
309 eigen_backend( ~A, ~w );
335 template<
typename MT1
353 syevd( tmp, ~w,
'V',
'L' );
382 template<
typename MT1
400 heevd( tmp, ~w,
'V',
'L' );
429 template<
typename MT1
557 template<
typename MT1
577 eigen_backend( ~A, ~w, ~V );
Constraint on the data type.
Header file for auxiliary alias declarations.
#define BLAZE_CONSTRAINT_MUST_HAVE_MUTABLE_DATA_ACCESS(T)
Constraint on the data type.In case the given data type T does not provide low-level data access to m...
Definition: MutableDataAccess.h:61
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.In case the given data type T is a computational expression (i...
Definition: Computation.h:81
typename DisableIf< Condition, T >::Type DisableIf_
Auxiliary type for the DisableIf class template.The DisableIf_ alias declaration provides a convenien...
Definition: DisableIf.h:224
Header file for the And class template.
Header file for the DenseVector base class.
Constraint on the data type.
typename T::ResultType ResultType_
Alias declaration for nested ResultType type definitions.The ResultType_ alias declaration provides a...
Definition: Aliases.h:343
Header file for the LAPACK general matrix eigenvalue functions (geev)
#define BLAZE_CONSTRAINT_MUST_NOT_BE_ADAPTOR_TYPE(T)
Constraint on the data type.In case the given data type T is an adaptor type (as for instance LowerMa...
Definition: Adaptor.h:81
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:78
Constraint on the data type.
Header file for the DisableIf class template.
Header file for the IsSymmetric type trait.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Compile time check for row-major matrix types.This type trait tests whether or not the given template...
Definition: IsRowMajorMatrix.h:110
Header file for the IsFloatingPoint type trait.
void geev(char jobvl, char jobvr, int n, float *A, int lda, float *wr, float *wi, float *VL, int ldvl, float *VR, int ldvr, float *work, int lwork, int *info)
LAPACK kernel for computing the eigenvalues of the given dense general single precision column-major ...
Definition: geev.h:163
Header file for the Or class template.
Header file for the DenseMatrix base class.
typename T::ElementType ElementType_
Alias declaration for nested ElementType type definitions.The ElementType_ alias declaration provides...
Definition: Aliases.h:163
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 floating point data types.This type trait tests whether or not the given templ...
Definition: IsFloatingPoint.h:75
Header file for the RemoveAdaptor type trait.
Constraint on the data type.
Header file for the EnableIf class template.
Header file for the LAPACK Hermitian matrix eigenvalue functions (heevd)
#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
Header file for the LAPACK symmetric matrix eigenvalue functions (syevd)
typename EnableIf< Condition, T >::Type EnableIf_
Auxiliary alias declaration for the EnableIf class template.The EnableIf_ alias declaration provides ...
Definition: EnableIf.h:224
Compile time check for complex types.This type trait tests whether or not the given template paramete...
Definition: IsComplex.h:76
Header file for the IsRowMajorMatrix type trait.
Header file for the IsComplex type trait.
Compile time logical and evaluation.The And alias declaration performs at compile time a logical and ...
Definition: And.h:76
Header file for the IsHermitian type trait.
void syevd(char jobz, char uplo, int n, float *A, int lda, float *w, float *work, int lwork, int *iwork, int liwork, int *info)
LAPACK kernel for computing the eigenvalues of the given dense symmetric single precision column-majo...
Definition: syevd.h:131
void eigen(const DenseMatrix< MT, SO > &A, DenseVector< VT, TF > &w)
Eigenvalue computation of the given dense matrix.
Definition: Eigen.h:300