数值误差是否可重复
Is numerical error reproducible?
也许这是一个愚蠢的问题,但我从未想过,直到最近我才被迫这么做。
假设一个程序是用完全相同的状态初始化的,并且没有未初始化变量的未定义行为。在执行代码之前,CPU上的寄存器状态可能不同。假设没有外部现象导致异常的钻头翻转。
相同的数值计算序列总是会产生相同的结果吗(如中,双精度和浮点的整个位表示)?换句话说,数值误差是决定性的吗?
编辑:我知道指针地址每次都可能不同,但让我们抽象指针地址,避免在任何计算中使用。
形式上没有,但在实践中大多是。因此,当DLL中的一个错误导致其他程序显示出不可复制的结果时,人们非常恼火。
我想到的特殊情况涉及一个DLL,它被加载到计算机上的每个进程中。我不记得确切的原因,但我认为这是某种输入法编辑器(通常用于非ASCII语言)。这个特定的DLL做了一些浮点计算,并更改了浮点舍入模式。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 为什么在浮点中从大到小会引入更多的误差
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- boost odeint 中的受控误差步进器是否支持复杂的数据类型?
- 是否存在两个相乘(或除)的数字会引入误差?
- 检查time_t是否在其他time_t之间,并有一些误差幅度
- "floor"是否有可能由于浮点舍入误差而返回不准确的结果?
- 数值误差是否可重复