def bench_function(f):
    samples = util.get_sample_count()

    start_time = time.time()

    pi = f(samples)

    end_time = time.time()

    util.output(samples, pi, start_time, end_time)
        x = random.random()
        y = random.random()
        if (x * x) + (y * y) < 1:
            inside += 1
    mypi = (4.0 * inside) / nsamples

    # capital Reduce works with C/NumPy compatible data
    # -types and avoids the need to serialize data at
    # transmission and receipt. Lowercase reduce would
    # work on Python objects.
    #
    # The value of mypi will be summed into pi on rank 0
    comm.Reduce(np.array(mypi), pi, op=MPI.SUM, root=0)
    return pi / mpisize


if __name__ == '__main__':
    samples = util.get_sample_count()

    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()

    start_time = MPI.Wtime()

    pi = calcpi(samples)

    end_time = MPI.Wtime()

    if rank == 0:
        util.output(samples, pi, start_time, end_time)