Hermitian tridiagonal eigensolvers¶
Elemental provides a collection of routines, primarily based upon the [MRRR] algorithm, for both full and partial solutions of the Hermitian eigenvalue problem
where T is a given Hermitian tridiagonal matrix, and unitary Z and real diagonal \(\Lambda\) are sought.
Note that the tridiagonal matrix is defined via its real main diagonal, d, and (possibly complex) subdiagonal, dSub.
Computing eigenvalues¶
Compute the set of eigenvalues of the Hermitian tridiagonal matrix T determined by the subset structure (the default is to compute all eigenvalues).
C++ API¶
-
void
HermitianTridiagEig
(Matrix<Base<F>> &d, Matrix<F> &dSub, Matrix<Base<F>> &w, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>())¶
-
void
HermitianTridiagEig
(const AbstractDistMatrix<Base<F>> &d, const AbstractDistMatrix<F> &dSub, AbstractDistMatrix<Base<F>> &w, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>())¶
C API¶
-
ElError
ElHermitianTridiagEig_s
(ElMatrix_s d, ElMatrix_s dSub, ElMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEig_d
(ElMatrix_d d, ElMatrix_d dSub, ElMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEig_c
(ElMatrix_s d, ElMatrix_c dSub, ElMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEig_z
(ElMatrix_d d, ElMatrix_z dSub, ElMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigDist_s
(ElConstDistMatrix_s d, ElConstDistMatrix_s dSub, ElDistMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigDist_d
(ElConstDistMatrix_d d, ElConstDistMatrix_d dSub, ElDistMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigDist_c
(ElConstDistMatrix_s d, ElConstDistMatrix_c dSub, ElDistMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigDist_z
(ElConstDistMatrix_d d, ElConstDistMatrix_z dSub, ElDistMatrix_d w, ElSortType sort)¶ Return the full set of eigenvalues
-
ElError
ElHermitianTridiagEigPartial_s
(ElMatrix_s d, ElMatrix_s dSub, ElMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPartial_d
(ElMatrix_d d, ElMatrix_d dSub, ElMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianTridiagEigPartial_c
(ElMatrix_s d, ElMatrix_c dSub, ElMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPartial_z
(ElMatrix_d d, ElMatrix_z dSub, ElMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianTridiagEigPartialDist_s
(ElConstDistMatrix_s d, ElConstDistMatrix_s dSub, ElDistMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPartialDist_d
(ElConstDistMatrix_d d, ElConstDistMatrix_d dSub, ElDistMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianTridiagEigPartialDist_c
(ElConstDistMatrix_s d, ElConstDistMatrix_c dSub, ElDistMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPartialDist_z
(ElConstDistMatrix_d d, ElConstDistMatrix_z dSub, ElDistMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶ Return a subset of the eigenvalues
Computing eigenpairs¶
Compute the set of eigenpairs of the Hermitian tridiagonal matrix T determined by the subset structure (the default is to compute all eigenpairs) via PMRRR.
C++ API¶
-
void
HermitianTridiagEig
(Matrix<Base<F>> &d, Matrix<F> &dSub, Matrix<Base<F>> &w, Matrix<F> &Z, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>())¶
-
void
HermitianTridiagEig
(const AbstractDistMatrix<Base<F>> &d, const AbstractDistMatrix<F> &dSub, AbstractDistMatrix<Base<F>> &w, AbstractDistMatrix<F> &Z, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>())¶
C API¶
-
ElError
ElHermitianTridiagEigPair_s
(ElMatrix_s d, ElMatrix_s dSub, ElMatrix_s w, ElMatrix_s Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPair_d
(ElMatrix_d d, ElMatrix_d dSub, ElMatrix_d w, ElMatrix_d Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPair_c
(ElMatrix_s d, ElMatrix_c dSub, ElMatrix_s w, ElMatrix_c Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPair_z
(ElMatrix_d d, ElMatrix_z dSub, ElMatrix_d w, ElMatrix_z Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPairDist_s
(ElConstDistMatrix_s d, ElConstDistMatrix_s dSub, ElDistMatrix_s w, ElDistMatrix_s Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPairDist_d
(ElConstDistMatrix_d d, ElConstDistMatrix_d dSub, ElDistMatrix_d w, ElDistMatrix_d Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPairDist_c
(ElConstDistMatrix_s d, ElConstDistMatrix_c dSub, ElDistMatrix_s w, ElDistMatrix_c Z, ElSortType sort)¶
-
ElError
ElHermitianTridiagEigPairDist_z
(ElConstDistMatrix_d d, ElConstDistMatrix_z dSub, ElDistMatrix_d w, ElDistMatrix_z Z, ElSortType sort)¶ Return the full set of eigenvalues
-
ElError
ElHermitianTridiagEigPairPartial_s
(ElMatrix_s d, ElMatrix_s dSub, ElMatrix_s w, ElMatrix_s Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPairPartial_d
(ElMatrix_d d, ElMatrix_d dSub, ElMatrix_d w, ElMatrix_d Z, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianTridiagEigPairPartial_c
(ElMatrix_s d, ElMatrix_c dSub, ElMatrix_s w, ElMatrix_c Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPairPartial_z
(ElMatrix_d d, ElMatrix_z dSub, ElMatrix_d w, ElMatrix_z Z, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianTridiagEigPairPartialDist_s
(ElConstDistMatrix_s d, ElConstDistMatrix_s dSub, ElDistMatrix_s w, ElDistMatrix_s Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPairPartialDist_d
(ElConstDistMatrix_d d, ElConstDistMatrix_d dSub, ElDistMatrix_d w, ElDistMatrix_d Z, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianTridiagEigPairPartialDist_c
(ElConstDistMatrix_s d, ElConstDistMatrix_c dSub, ElDistMatrix_s w, ElDistMatrix_c Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianTridiagEigPairPartialDist_z
(ElConstDistMatrix_d d, ElConstDistMatrix_z dSub, ElDistMatrix_d w, ElDistMatrix_z Z, ElSortType sort, ElHermitianEigSubset_d subset)¶ Return a subset of the eigenvalues
Subset computation¶
The HermitianEigSubset<Real>
structure is used to control subset
computation, and, when not explicitly manipulated, defaults to a request for
the entire set of eigenvalues or eigenpairs.
C++ API¶
-
template<>
typeHermitianEigSubset
<Real>¶ -
bool
indexSubset
¶
-
Int
upperIndex
¶ If indexSubset is true, then the eigenvalues/pairs with indices (inclusively) between lowerIndex and upperIndex will be found.
-
bool
rangeSubset
¶
-
Real
lowerBound
¶
-
Real
upperBound
¶ Alternatively, if rangeSubset is true, then the eigenvalues/pairs within the numerical range \((lowerBound,upperBound]\) will be found.
-
bool
C API¶
-
HermitianEigSubset_s
¶ -
bool
indexSubset
¶
-
Int
lowerIndex
¶
-
Int
upperIndex
¶ If indexSubset is true, then the eigenvalues/pairs with indices (inclusively) between lowerIndex and upperIndex will be found.
-
bool
rangeSubset
¶
-
float
lowerBound
¶
-
float
upperBound
¶ Alternatively, if rangeSubset is true, then the eigenvalues/pairs within the numerical range \((lowerBound,upperBound]\) will be found.
-
bool
-
HermitianEigSubset_d
¶ -
bool
indexSubset
¶
-
Int
lowerIndex
¶
-
Int
upperIndex
¶ If indexSubset is true, then the eigenvalues/pairs with indices (inclusively) between lowerIndex and upperIndex will be found.
-
bool
rangeSubset
¶
-
double
lowerBound
¶
-
double
upperBound
¶ Alternatively, if rangeSubset is true, then the eigenvalues/pairs within the numerical range \((lowerBound,upperBound]\) will be found.
-
bool