@jit更改函数的结果

时间:2018-04-30 10:09:24

标签: python numpy numba

我正在使用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)

0 个答案:

没有答案