数值误差是否可重复

Is numerical error reproducible?

本文关键字:是否 误差      更新时间:2023-10-16

也许这是一个愚蠢的问题,但我从未想过,直到最近我才被迫这么做。

假设一个程序是用完全相同的状态初始化的,并且没有未初始化变量的未定义行为。在执行代码之前,CPU上的寄存器状态可能不同。假设没有外部现象导致异常的钻头翻转。

相同的数值计算序列总是会产生相同的结果吗(如中,双精度和浮点的整个位表示)?换句话说,数值误差是决定性的吗?

编辑:我知道指针地址每次都可能不同,但让我们抽象指针地址,避免在任何计算中使用。

形式上没有,但在实践中大多是。因此,当DLL中的一个错误导致其他程序显示出不可复制的结果时,人们非常恼火。

我想到的特殊情况涉及一个DLL,它被加载到计算机上的每个进程中。我不记得确切的原因,但我认为这是某种输入法编辑器(通常用于非ASCII语言)。这个特定的DLL做了一些浮点计算,并更改了浮点舍入模式