Matrix Factorizations

LDL^T decomposition

Cholesky is beautiful but it takes a square root for every pivot, and square roots are slow and only defined for positive numbers. The LDL^T factorization keeps Cholesky's symmetric structure while sidestepping the roots: it writes a symmetric A as A = L D L^T, where L is unit lower triangular (ones on the diagonal) and D is diagonal.

The trick is to leave the pivots in a separate diagonal factor D instead of splitting their square roots into L. If A is positive definite, D has all positive entries and you recover Cholesky by setting the Cholesky L to (this L) times sqrt(D). But because D is allowed to contain negative or zero entries, LDL^T also handles symmetric matrices that are indefinite, where Cholesky simply does not exist.

Indefinite symmetric systems are everywhere: saddle-point problems from constrained optimization, KKT systems, and interior-point methods all produce them. For those, the robust version is the Bunch-Kaufman variant, which permits 1x1 and 2x2 blocks in D and pivots symmetrically for stability. It is the standard solver for symmetric-indefinite systems.

Caveat: plain LDL^T without pivoting can still be unstable for indefinite A, exactly as plain LU can. The block-pivoting Bunch-Kaufman scheme is what you actually call when symmetry must be preserved but positive definiteness cannot be assumed.

A = L D L^T, D = diag(d1, ..., dn), signs of di give inertia

The number of positive, negative, and zero entries of D is the inertia of A (Sylvester's law).

Think of LDL^T as Cholesky with the square roots factored out into D, generalized so D can be indefinite. Same cost class as Cholesky, broader reach.

Also called
square-root-free CholeskyA = L D L^TLDLT 分解