sparse, standard and cython implementation all match to 1- decimal places according to test