我正在尝试调试一个Fortran程序。为了赶上浮点错误,我用下面的编译器选项为gfortran 4.9.0:浮点错误gfortran
FFLAGS1 = -std=f2003 -ffree-form -fdefault-real-8 -fdefault-double-8 \
-Ofast -fall-intrinsics -fcheck=all -m64 \
-fno-trapping-math -c \
-ffpe-trap=invalid,zero,overflow,underflow,precision,denormal -Wall
使用这些选项,程序在这一行失败:
read(ctrlUnit,*) slope_fasst, aspect
试图读取这些时输入:10.0 70.0
如果删除
-ffpe-trap=invalid,zero,overflow,underflow,precision,denormal
从编译选项
,它读取吨他遵循的路线很好。这两个变量都被声明为real(8)
。在输入文件中,我尝试过空格,逗号等,但看不到变化。有没有人有建议?
什么错误呢运行系统报告?程序在失败时试图读取什么? – 2015-04-03 13:56:36
我试图读取这些输入:10.0 70.0 – user2417662 2015-04-03 17:20:00
这些是唯一正在读取的输入吗?这很有趣,因为'10.0'和'70.0' *可以精确地表示为单精度或双精度IEEE 754浮点,所以它必须是在转换过程中发生的触发陷阱的错误。理想情况下,如果最终结果不完全可表示,则字符串转换只会设置不精确标志。 – 2015-04-03 18:36:30