now it performs SVD before calculating energy (sort of canonoical)