3

我们正在升级到 Scala 2.10。我们似乎已经修复了所有的阻碍因素,但对于我们的一些数值计算,在少数情况下答案会有所不同。2.9.1 和 2.10.2 之间是否有任何已知的变化可能导致这种情况,或者有其他人以前见过这样的事情吗?

由于我们所有的小测试都通过了,这应该是迭代计算中的一些累积效应,即使这样它也只影响一小部分案例。这些是复杂的计算,这是执行它们的唯一系统,因此我们没有独立的方法来验证哪个版本是正确的,除非重新实现洁净室。

4

1 回答 1

2

抱歉,目前还不能发表评论。您看到的差异有多大,您在代码中进行了什么样的计算?问哪个是正确的可能没有意义,毕竟是FP。你能尝试用strictfp编译你的代码吗?代码生成和优化的细微差异可能会导致 80 位中间体何时/多久被截断为 64 的差异——假设您在 x86 架构上运行。如果您可以访问没有 80 位 fp 寄存器的硬件,您可以尝试在其上运行这两个版本。即使这样,像 LL + S1 + S2 这样的简单表达式(其中 LL 远大于 S1 或 S2)也会根据相加的顺序给出不同的结果。

于 2013-08-23T00:33:28.990 回答