我还没有创建一个程序来查看GCC是否需要传递它,当我这样做时,我想知道如何启用严格的浮点模式,这将允许在运行和计算机之间产生可重复的结果,谢谢。
我还没有创建一个程序来查看GCC是否需要传递它,当我这样做时,我想知道如何启用严格的浮点模式,这将允许在运行和计算机之间产生可重复的结果,谢谢。
-msse2
编译支持它的英特尔/AMD处理器几乎可以实现目标。不要让任何库将FPU置于FTZ/DNZ模式下,这样你就可以基本完成任务(处理器错误除外)。fmadd
(无中间舍入的乘法和加法)指令,请确保在源代码中有显式乘法和加法时,你的编译器不要使用它。GCC不应该这样做,除非你使用-ffast-math选项。FLT_EVAL_METHOD
的值。该宏由编译器设置。还请参阅程序员设置的FP_CONTRACT
。 - Pascal Cuoq-ffloat-store
并始终将中间值存储到变量中或应用(显式)转换为所需的类型/精度,则应至少达到目标的90%,甚至更多。欢迎评论是否还有此方法无法覆盖的情况。请注意,我声称即使没有任何SSE选项,这也可以实现。long double
来处理所有事情... - R.. GitHub STOP HELPING ICEfesetround(FE_TOWARDZERO)
... :-) - R.. GitHub STOP HELPING ICE-ffloat-store
与Microsoft的/fp:precise
模式相符。这是一件好事。 - Peter M-mpc64
,即使在x87 FPU上也可以强制进行双精度计算。请参见GCC手册。