Scala版本之间数值行为的差异

时间:2013-08-22 05:07:24

标签: scala scala-2.10 numerical

我们正在升级到Scala 2.10。我们似乎修复了所有的显示停止器,但是对于我们的一些数值计算,答案在少数情况下略有不同。在2.9.1和2.10.2之间是否有任何已知的更改可能会导致此更改或之前有其他人看到类似的内容?

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

1 个答案:

答案 0 :(得分:2)

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