在GCC中启用严格浮点模式

Jor*_*dan 10 c gcc

我还没有创建一个程序来查看GCC是否需要它通过,当我这样做时,我想知道如何启用严格的浮点模式,这将允许运行和计算机之间的可重现结果,谢谢.

Pas*_*uoq 5

-msse2在支持它的Intel/AMD处理器上进行编译将使您几乎到达那里.不要让任何库将FPU置于FTZ/DNZ模式,并且您将大部分设置(尽管处理器错误).

对于其他架构,答案会有所不同.那些没有提供任何方便的方法来获得精确的IEEE 754语义(例如,预先SSE2 IA32 CPU)的架构将需要使用浮点仿真库来获得您想要的结果,而且性能会受到很高的影响.

如果您的目标体系结构支持fmadd(没有中间舍入的乘法和加法)指令,请确保在源代码中有明确的乘法和加法时,编译器不会使用它.除非使用-ffast-math选项,否则GCC不应该这样做.