Inverse of a symmetric indefinite matrix

One of the applications of LDLT-decomposition is the inversion of symmetric matrices. By its functionality, this algorithm is similar to analogous algorithms for matrices which are given by Cholesky decomposition and LU-decomposition.

Subroutine SMatrixLDLTInverse gets LDLT-decomposition of matrix A (an output of a subroutine SMatrixLDLT) as an input and returns matrix A-1 given by its lower or upper triangle depending on a variant of LDLT-decomposition (A = L·D·LT or A = U·D·UT). This subroutine is worth using if we have LDLT-decomposition, otherwise it is better to use the second subroutine.

Subroutine SMatrixInverse gets the lower or upper triangle of matrix A as an input, calls the subroutine SMatrixLDLT and inverts and returns the lower or upper triangle of matrix A-1.

Both subroutines return False if the matrix is singular (in this case one of the elementary units of matrix D equals 0), in that case, the matrix inversion is not performed. If the matrix is not a singular and the inversion could be performed, then the subroutines return True. In that case, the matrix could be ill-conditioned, but the subroutines don't evaluate the matrix condition number.

This algorithm is transferred from the LAPACK library.

This article is licensed for personal use only.

Download ALGLIB for C++ / C# / Java / Python / ...

ALGLIB Project offers you two editions of ALGLIB:

ALGLIB Free Edition:
+delivered for free
+offers full set of numerical functionality
+extensive algorithmic optimizations
-no multithreading
-non-commercial license

ALGLIB Commercial Edition:
+flexible pricing
+offers full set of numerical functionality
+extensive algorithmic optimizations
+high performance (SMP, SIMD)
+commercial license with support plan

Links to download sections for Free and Commercial editions can be found below:

ALGLIB 4.01.0 for C++

C++ library.
Delivered with sources.
Monolithic design.
Extreme portability.
Editions:   FREE   COMMERCIAL

ALGLIB 4.01.0 for C#

C# library with native kernels.
Delivered with sources.
VB.NET and IronPython wrappers.
Extreme portability.
Editions:   FREE   COMMERCIAL

ALGLIB 4.01.0 for Java

Java wrapper around HPC core.
Delivered with sources.
Seamless integration with Java.
Editions:   FREE   COMMERCIAL

ALGLIB 4.01.0 for Delphi

Delphi wrapper around C core.
Delivered as precompiled binary.
Compatible with FreePascal.
Editions:   FREE   COMMERCIAL

ALGLIB 4.01.0 for CPython

CPython wrapper around C core.
Delivered as precompiled binary.
Editions:   FREE   COMMERCIAL