diagonalize
not defined yet