如何确保在窗口和 Linux 上具有相同的浮点行为

How to ensure same floating-point behavior on windows and linux?

本文关键字:Linux 何确保 确保 窗口      更新时间:2023-10-16

我有一个软件可以对双精度进行大量计算,它必须在Linux和Windows上运行。我不关心使用什么行为(越快越好(,但我必须在两个平台上获得相同的结果。

我正在使用 Windows 6.9.2 上的 x86_64-w64-mingw32 gcc 版本 10 进行编译。以及 xubuntu 上的 x86_64-linux-gnu gcc 4.9.3。

我尝试使用以下编译选项: -四舍五入-数学 -fno-rounding-math -浮装店在这两个系统上,似乎没有任何效果。

我对浮点表示的复杂性有所了解,但是对于必须跨平台的软件强制实施相同的行为真的那么难吗?

要具有相同的行为,至少您必须:

1-标准化您的类型,不要从双倍切换到长双倍仅使用唯一类型长双精度示例2-如果您有任何常量,请使用与您的类型相关的浮点文字:

如果选择长双精度,则常量必须具有后缀 l 或 L例如:0.5L