note that large tv_weights need small tolerances