繁体   English   中英

浮点错误gfortran

[英]floating point error gfortran

我正在尝试调试Fortran程序。 为了捕获浮点错误,我对gfortran 4.9.0使用了以下编译器选项:

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) 在输入文件中,我尝试使用空格,逗号等,但未看到任何更改。 有人有建议吗?

似乎gfortran -ffpe-trap,precision标志会导致完全正常/常规的读/写操作出错。

例如,此程序引发“浮动异常”错误:

    write(*,*)1.0
    end

(gfortran 4.1.2,redhat linux)

解决方案,不要使用该标志。

请注意,这是有道理的,因为从机器号到ascii的转换会导致精度的损失(我不确定这是否就是捕获此类标记的意图)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM