orthogonal diagonalization