小编bij*_*ncn的帖子

是否可以使 isnan() 在 gfortran -O3 -ffast-math 中工作?

我想用 gfortran 编译一个程序并-O3 -ffast-math启用它,因为它可以提供很好的性能提升。我很困惑,gfortranisnan()捕获了一些 NaN,但不是全部。看完之后

检查 C++ 中的 double(或 float)是否为 NaN
如何制作可移植的 isnan/isinf 函数
负 NaN 不是 NaN?

我的印象是,即使启用了快速数学,人们也可以通过位调整来检查 C 中的 NaN。然而,这让我感到困惑,因为快速数学

可能会导致依赖于数学函数的 IEEE 或 ISO 规则/规范的精确实现的程序输出不正确。

根据 gcc 4.7.2 的手册页。那么,如果数字没有按照 IEEE 标准表示,您如何知道要检查哪一位呢?如果您知道它,您将如何在 Fortran 95/03/08 中实现它?

不要费心发布(x \= x)依赖于 IEEE 规则的类似解决方案。他们给出的结果与 相同isnan()。我也知道-ffpe-trap=invalid,zero,overflow,但不想停止该程序。如果有帮助的话,我的操作系统是 64 位 LinuxMint 14。如果 Fortran 中不可能,防水的 C 解决方案也很好。

optimization fortran nan gfortran ieee-754

5
推荐指数
1
解决办法
1852
查看次数

标签 统计

fortran ×1

gfortran ×1

ieee-754 ×1

nan ×1

optimization ×1