Over the last few months we have seen how we can efficiently implement the Householder transformations and shifted Givens rotations used by Francis's algorithm to diagonalise a real symmetric matrix

and together are known as the spectral decomposition of

In this post, we shall add it to the

**M**, yielding its eigensystem in a matrix**V**whose columns are its eigenvectors and a diagonal matrix**Λ**whose diagonal elements are their associated eigenvalues, which satisfy**M**=

**V**×

**Λ**×

**V**

^{T}

and together are known as the spectral decomposition of

**M**.In this post, we shall add it to the

`ak`

library using the `householder`

and `givens`

functions that we have put so much effort into optimising.