【发布时间】:2018-03-21 15:43:33
【问题描述】:
我有一个对双精度数进行大量计算的软件,它必须在 linux 和 windows 上运行。我不关心使用什么行为(越快越好),但我必须在两个平台上获得相同的结果。
我正在 Windows 10 上使用 x86_64-w64-mingw32 gcc 版本 4.9.2 进行编译。 以及 xubuntu 上的 x86_64-linux-gnu gcc 4.9.3。
我尝试过使用以下编译选项: -基础数学 -fno-rounding-math -float-存储 在这两个系统上,似乎没有任何工作。
我对浮点表示的复杂性有所了解,但对于必须跨平台的软件强制执行相同的行为真的那么难吗?
【问题讨论】:
-
“似乎没有任何效果”。你能显示一些代码吗?
-
究竟有什么不同?
-
如果您的所有平台都使用 ieee 754,不妨试试checking
-
您是否调用了任何数学库例程,例如
sin或log?除了浮点之外,您的程序中是否有任何多线程或其他非确定性行为?
标签: c++ gcc floating-point mingw