Inertia

Implementation

The following routines return a triplet containing the number of positive, negative, and zero eigenvalues of a Hermitian matrix by analyzing the quasi-diagonal matrix resulting from a pivoted LDLH factorization.

C++ API

type InertiaType
Int numPositive
Int numNegative
Int numZero

The basic eigenvalue structure of a Hermitian matrix (which can be quickly computed from the quasi-diagonal matrix produced by Bunch-Kaufman).

InertiaType Inertia(UpperOrLower uplo, Matrix<F> &A, LDLPivotType pivotType = BUNCH_PARLETT)
InertiaType Inertia(UpperOrLower uplo, AbstractDistMatrix<F> &A, LDLPivotType pivotType = BUNCH_PARLETT)

C API

ElInertiaType
ElInt numPositive
ElInt numNegative
ElInt numZero
ElError ElInertia_s(ElUpperOrLower uplo, ElMatrix_s A, ElInertiaType* inertia)
ElError ElInertia_d(ElUpperOrLower uplo, ElMatrix_d A, ElInertiaType* inertia)
ElError ElInertia_c(ElUpperOrLower uplo, ElMatrix_c A, ElInertiaType* inertia)
ElError ElInertia_z(ElUpperOrLower uplo, ElMatrix_z A, ElInertiaType* inertia)
ElError ElInertiaDist_s(ElUpperOrLower uplo, ElDistMatrix_s A, ElInertiaType* inertia)
ElError ElInertiaDist_d(ElUpperOrLower uplo, ElDistMatrix_d A, ElInertiaType* inertia)
ElError ElInertiaDist_c(ElUpperOrLower uplo, ElDistMatrix_c A, ElInertiaType* inertia)
ElError ElInertiaDist_z(ElUpperOrLower uplo, ElDistMatrix_z A, ElInertiaType* inertia)