Inertia

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.

Python API

Inertia(A[, uplo=LOWER[, pivType=BUNCH_KAUFMAN_A]])
Parameters
  • A – The (sequential or distributed) dense Hermitian matrix

  • uplo – (optional) Which triangle of \(A\) to access

  • pivType – (optional) The preferred pivoting strategy

Return type

The resulting InertiaType instance

C++ API

class 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)