diagonalizes