use vreduce_fdiff and vsum_fdiff