import numpy as np
import time
print(np.__version__)
loops = 100
size = 80000
def pymod(x, y): return x % y
def workaround(x, y): return x - (y * np.floor(x / y))
#def divmod(x, y): return np.divmod(x, y)[1]
a = np.random.rand(size)
a = np.cumsum(a)
def test(func, data):
d = 3
start_time = time.time()
for i in range(loops):
b = func(data, d)
d += 0.001
end_time = time.time()
print(func.__name__, (end_time - start_time) / loops)
test(pymod, a)
test(workaround, a)
test(np.remainder, a)
test(np.mod, a)
test(np.fmod, a)
#test(divmod, a)
aW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCB0aW1lCgpwcmludChucC5fX3ZlcnNpb25fXykKCmxvb3BzID0gMTAwCnNpemUgPSA4MDAwMAoKZGVmIHB5bW9kKHgsIHkpOiByZXR1cm4geCAlIHkKCmRlZiB3b3JrYXJvdW5kKHgsIHkpOiByZXR1cm4geCAtICh5ICogbnAuZmxvb3IoeCAvIHkpKQoKI2RlZiBkaXZtb2QoeCwgeSk6IHJldHVybiBucC5kaXZtb2QoeCwgeSlbMV0KCmEgPSBucC5yYW5kb20ucmFuZChzaXplKQphID0gbnAuY3Vtc3VtKGEpCgpkZWYgdGVzdChmdW5jLCBkYXRhKToKICAgIGQgPSAzCiAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgIGZvciBpIGluIHJhbmdlKGxvb3BzKToKICAgICAgICBiID0gZnVuYyhkYXRhLCBkKQogICAgICAgIGQgKz0gMC4wMDEKICAgIGVuZF90aW1lID0gdGltZS50aW1lKCkKCiAgICBwcmludChmdW5jLl9fbmFtZV9fLCAoZW5kX3RpbWUgLSBzdGFydF90aW1lKSAvIGxvb3BzKQoKdGVzdChweW1vZCwgYSkKdGVzdCh3b3JrYXJvdW5kLCBhKQp0ZXN0KG5wLnJlbWFpbmRlciwgYSkKdGVzdChucC5tb2QsIGEpCnRlc3QobnAuZm1vZCwgYSkKI3Rlc3QoZGl2bW9kLCBhKQo=