It's always a good idea to benchmark your code if you're using numba. You can also run a benchmark with extra settings.
import numpy as np @nb.njit() def hypot_n(x, y): return (x**2 + y**2)**0.5 @nb.njit(parallel=True, fastmath=True) def hypot_p(x, y): return (x**2 + y**2)**0.5 r1 = np.random.random(size=(2000, 2000)) r2 = np.random.random(size=(2000, 2000)) # We will call both functions once to compile them. hypot_n(r1, r2); hypot_p(r1, r2);
You can benchmark these by running:
%timeit hypot_n(r1, r2) %timeit (r1 ** 2 + r2 ** 2)**0.5 %timeit hypot_p(r1, r2)
Out of these, the numba function with fastmath and parallel turned on is the winner. For more information on the fastmath settings, check the docs here.