Hermitian Positive-Definite

This routine uses a custom algorithm for computing the inverse of a Hermitian positive-definite matrix \(A\) as

\[A^{-1} = (L L^H)^{-1} = L^{-H} L^{-1},\]

where \(L\) is the lower Cholesky factor of \(A\) (the upper Cholesky factor is computed in the case of upper-triangular storage). Rather than performing Cholesky factorization, triangular inversion, and then the Hermitian triangular outer product in sequence, this routine makes use of the single-sweep algorithm described in [BGvdG2008] (in particular, the variant 2 algorithm from Fig. 9).

If the matrix is found to not be HPD, then a NonHPDMatrixException is thrown.

Python API

HPDInverse(uplo, A)

C++ API

void HPDInverse(UpperOrLower uplo, Matrix<F> &A)
void HPDInverse(UpperOrLower uplo, AbstractDistMatrix<F> &A)

C API

Single-precision

ElError ElHPDInverse_s(ElUpperOrLower uplo, ElMatrix_s A)
ElError ElHPDInverseDist_s(ElUpperOrLower uplo, ElDistMatrix_s A)

Double-precision

ElError ElHPDInverse_d(ElUpperOrLower uplo, ElMatrix_d A)
ElError ElHPDInverseDist_d(ElUpperOrLower uplo, ElDistMatrix_d A)

Single-precision complex

ElError ElHPDInverse_c(ElUpperOrLower uplo, ElMatrix_c A)
ElError ElHPDInverseDist_c(ElUpperOrLower uplo, ElDistMatrix_c A)