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.
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)¶
Double-precision complex¶
-
ElError
ElHPDInverse_z
(ElUpperOrLower uplo, ElMatrix_z A)¶
-
ElError
ElHPDInverseDist_z
(ElUpperOrLower uplo, ElDistMatrix_z A)¶