Hermitian generalized-definite eigensolvers¶
The following Hermitian generalized-definite eigenvalue problems frequently appear, where both \(A\) and \(B\) are Hermitian, and \(B\) is additionally positive-definite:
which is denoted with the value ABX
via the Pencil
enum,
which uses the BAX
value, and finally
which uses the AXBX
enum value.
-
type
Pencil
¶ An enum for specifying either the
ABX
,BAX
, orAXBX
generalized eigenvalue problems (described above).
Computing eigenvalues¶
Compute the set of eigenvalues of the Hermitian-definite matrix pencil determined by the subset structure (the default is to compute all eigenvalues). By default, Elemental is used to transform the problem to and from real symmetric tridiagonal form and PMRRR is used to solve the tridiagonal EVP. Alternatively, the ctrl structure may be altered to request the usage of a (prototype) Spectral Divide and Conquer algorithm.
Note
Strict subset computation is not currently supported with Spectral Divide and Conquer.
C++ API¶
-
void
HermitianGenDefEig
(Pencil pencil, UpperOrLower uplo, Matrix<F> &A, Matrix<F> &B, Matrix<Base<F>> &w, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>(), const HermitianEigCtrl<Base<F>> ctrl = HermitianEigCtrl<Base<F>>())¶
-
void
HermitianGenDefEig
(Pencil pencil, UpperOrLower uplo, AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &B, AbstractDistMatrix<Base<F>> &w, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>(), const HermitianEigCtrl<Base<F>> ctrl = HermitianEigCtrl<Base<F>>())¶
C API¶
-
ElError
ElHermitianGenDefEig_s
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_s A, ElMatrix_s B, ElMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEig_d
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_d A, ElMatrix_d B, ElMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEig_c
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_c A, ElMatrix_c B, ElMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEig_z
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_z A, ElMatrix_z B, ElMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigDist_s
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_s A, ElDistMatrix_s B, ElDistMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigDist_d
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_d A, ElDistMatrix_d B, ElDistMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigDist_c
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_c A, ElDistMatrix_c B, ElDistMatrix_s w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigDist_z
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_z A, ElDistMatrix_z B, ElDistMatrix_d w, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPartial_s
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_s A, ElMatrix_s B, ElMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPartial_d
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_d A, ElMatrix_d B, ElMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianGenDefEigPartial_c
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_c A, ElMatrix_c B, ElMatrix_s w, ElMatrix_c Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPartial_z
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_z A, ElMatrix_z B, ElMatrix_d w, SortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianGenDefEigPartialDist_s
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_s A, ElDistMatrix_s B, ElDistMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPartialDist_d
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_d A, ElDistMatrix_d B, ElDistMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianGenDefEigPartialDist_c
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_c A, ElDistMatrix_c B, ElDistMatrix_s w, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPartialDist_z
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_z A, ElDistMatrix_z B, ElDistMatrix_d w, ElSortType sort, ElHermitianEigSubset_d subset)¶
Computing eigenpairs¶
Compute the set of eigenpairs of the Hermitian-definite matrix pencil determined by the subset structure (the default is to compute all eigenpairs). By default, Elemental is used to transform the problem to and from real symmetric tridiagonal form and PMRRR is used to solve the tridiagonal EVP. Alternatively, the ctrl structure may be altered to request the usage of a (prototype) Spectral Divide and Conquer algorithm.
Note
Strict subset computation is not currently supported with Spectral Divide and Conquer.
C++ API¶
-
void
HermitianGenDefEig
(Pencil pencil, UpperOrLower uplo, Matrix<F> &A, Matrix<F> &B, Matrix<Base<F>> &w, Matrix<F> &Z, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>(), const HermitianEigCtrl<Base<F>> ctrl = HermitianEigCtrl<Base<F>>())¶
-
void
HermitianGenDefEig
(Pencil pencil, UpperOrLower uplo, AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &B, AbstractDistMatrix<Base<F>> &w, AbstractDistMatrix<F> &Z, SortType sort = ASCENDING, const HermitianEigSubset<Base<F>> subset = HermitianEigSubset<Base<F>>(), const HermitianEigCtrl<Base<F>> ctrl = HermitianEigCtrl<Base<F>>())¶
C API¶
-
ElError
ElHermitianGenDefEigPair_s
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_s A, ElMatrix_s B, ElMatrix_s w, ElMatrix_s Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPair_d
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_d A, ElMatrix_d B, ElMatrix_d w, ElMatrix_d Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPair_c
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_c A, ElMatrix_c B, ElMatrix_s w, ElMatrix_c Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPair_z
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_z A, ElMatrix_z B, ElMatrix_d w, ElMatrix_z Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPairDist_s
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_s A, ElDistMatrix_s B, ElDistMatrix_s w, ElDistMatrix_s Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPairDist_d
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_d A, ElDistMatrix_d B, ElDistMatrix_d w, ElDistMatrix_d Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPairDist_c
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_c A, ElDistMatrix_c B, ElDistMatrix_s w, ElDistMatrix_c Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPairDist_z
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_z A, ElDistMatrix_z B, ElDistMatrix_d w, ElDistMatrix_z Z, ElSortType sort)¶
-
ElError
ElHermitianGenDefEigPairPartial_s
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_s A, ElMatrix_s B, ElMatrix_s w, ElMatrix_s Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPairPartial_d
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_d A, ElMatrix_d B, ElMatrix_d w, ElMatrix_d Z, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianGenDefEigPairPartial_c
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_c A, ElMatrix_c B, ElMatrix_s w, ElMatrix_c Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPairPartial_z
(ElPencil pencil, ElUpperOrLower uplo, ElMatrix_z A, ElMatrix_z B, ElMatrix_d w, ElMatrix_z Z, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianGenDefEigPairPartialDist_s
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_s A, ElDistMatrix_s B, ElDistMatrix_s w, ElDistMatrix_s Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPairPartialDist_d
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_d A, ElDistMatrix_d B, ElDistMatrix_d w, ElDistMatrix_d Z, ElSortType sort, ElHermitianEigSubset_d subset)¶
-
ElError
ElHermitianGenDefEigPairPartialDist_c
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_c A, ElDistMatrix_c B, ElDistMatrix_s w, ElDistMatrix_c Z, ElSortType sort, ElHermitianEigSubset_s subset)¶
-
ElError
ElHermitianGenDefEigPairPartialDist_z
(ElPencil pencil, ElUpperOrLower uplo, ElDistMatrix_z A, ElDistMatrix_z B, ElDistMatrix_d w, ElDistMatrix_z Z, ElSortType sort, ElHermitianEigSubset_d subset)¶