标签: float32

intel MacBook 和 M1 之间的 np.float32 浮点差异

我最近将我的 Intel MacBook Pro 13" 升级为配备 M1 Pro 的 MacBook Pro 14"。一直在努力让我的软件重新编译和工作。幸运的是,除了一些晦涩的 Fortran 代码和 Python 中的浮点问题之外,没有什么大问题。关于 python/numpy 我有以下问题。

我有一个很大的代码库,但为了简单起见,我将使用这个简单的函数,将飞行高度转换为压力来显示问题。

def fl2pres(FL):
    P0=101325
    T0=288.15
    T1=216.65
    g=9.80665
    R=287.0528742
    GAMMA=0.0065
    P11=P0*np.exp(-g/GAMMA/R*np.log(T0/T1))

    h=FL*30.48

    return np.where(h<=11000, \
        P0*np.exp(-g/GAMMA/R*np.log((T0/(T0-GAMMA*h) ))),\
            P11*np.exp(-g/R/T1*(h-11000)) )
Run Code Online (Sandbox Code Playgroud)

当我在 M1 Pro 上运行代码时,我得到:

In [2]: fl2pres(np.float64([400, 200]))
Out[3]: array([18753.90334892, 46563.239766  ])
Run Code Online (Sandbox Code Playgroud)

和;

In [3]: fl2pres(np.float32([400, 200]))
Out[3]: array([18753.90234375, 46563.25080916])
Run Code Online (Sandbox Code Playgroud)

在我的旧款 Intel MacBook Pro 上执行同样的操作,我得到:

In [2]: fl2pres(np.float64([400, 200]))
Out[2]: array([18753.90334892, 46563.239766  ])
Run Code Online (Sandbox Code Playgroud)

和;

In [3]: fl2pres(np.float32([400, 200]))
Out[3]: array([18753.904296888, 46563.24778944])
Run Code Online (Sandbox Code Playgroud)

float64 计算匹配,但 float32 …

precision numpy apple-m1 float32

8
推荐指数
1
解决办法
1387
查看次数

标签 统计

apple-m1 ×1

float32 ×1

numpy ×1

precision ×1