Я ускоряю вычисления для функции с циклом, используя numba.jit
компилятор. Но я вижу, что если я использую функцию без @jit
, я получаю правильный ответ, который состоит из двух float32
чисел, но если я использую @jit
или даже @jit('UniTuple(float32, 2)(float32, float32)', nopython=True)
, я получаю float
тип чисел тип результата которая имеет большую точность, чем должна. Результат для первого числа должен быть -0.0125
.
Как я могу это исправить, чтобы у меня был точно правильный номер? И почему это отличается с @jit
и без?
gE = np.array([-0.0125], dtype=np.float32)
gP = np.array([0.01533981], dtype=np.float32)
@jit('UniTuple(float32, 2)(float32, float32)', nopython=True)
def findEP(TE, TP):
E, P = 0,0
delR = 999
for i, (e, p) in enumerate (zip(gE, gP)):
temp = np.sqrt( (TE - e )**2 + (TP - p )**2)
if (temp < delR):
delR = temp
E, P = e, p
return E, P
findEP(-0.0125, 0.01533981)
(-0.012500000186264515, 0.015339810401201248)
и без @jit для той же функции:
gE = np.array([-0.0125], dtype=np.float32)
gP = np.array([0.01533981], dtype=np.float32)
#@jit('UniTuple(float32, 2)(float32, float32)', nopython=True)
def findEP(TE, TP):
E, P = 0,0
delR = 999
for i, (e, p) in enumerate (zip(gE, gP)):
temp = np.sqrt( (TE - e )**2 + (TP - p )**2)
if (temp < delR):
delR = temp
E, P = e, p
return E, P
findEP(-0.0125, 0.01533981)
(-0.0125, 0.01533981)