A general square real matrix [A] can be decomposed by orthogonal
similarity transformations into the form [A]=[Q][H][Q]T
where
[H] (n-by-n) is (upper or lower) hessenberg matrix
[Q] (m-by-r) is orthogonal
[Q] (n-by-r) is orthogonal
r = min(m,n)
[U]
is orthogonal and [H] is an upper Hessenberg matrix, meaning that it
has zeros below the first subdiagonal.