跨CPU的浮点是否一致?

时间:2013-06-12 19:08:02

标签: c floating-point ieee-754 cpu-architecture

如果我在两个实现IEEE Standard for Floating-Point Arithmetic (IEEE 754)的不同类型的CPU上运行完全相同的浮点计算序列(例如在C程序中),是否可以安全地期望两个CPU返回相同的浮点数?

我问这是因为不同的CPU包含不同的中间大小的不同浮点单元(例如80bit FPU in certain x86 architectures),我需要确保跨多个不同CPU架构运行的模拟是确定性的,即给出相同的结果给出无论架构如何,都是相同的起点。

1 个答案:

答案 0 :(得分:1)

C标准没有充分指定浮点语义来保证不同C实现之间的可重复性。 (如果C实现采用附录F,它将有所帮助,但它仍然不足,特别是如果使用数学库中的各种超越函数。)

获得可重现结果的技术包括限制C语言实现的可移植性,提供超出C标准的保证,包括必要的数学库例程和代码,而不是使用本机库,用汇编语言编写,以及限制使用的语言功能