Preconditioned conjugate gradient method (source code)

= Preconditioned conjugate gradient method
{c}

A symmetric preconditioner transforms $Ax=b$ into
$$
PAP^T\widehat x=Pb,\qquad x=P^T\widehat x.
$$
The aim is to make the transformed positive-definite matrix have clustered eigenvalues while keeping application of $P$ inexpensive.