mfix运行过程终止,无报错信息
2022.5.31更新:
发现这是WSL 1特有的问题,遇到除0的情况,不会报错,只会直接终止程序,并且用文中提到的编译参数:
gfortran -g main2.f90 -ffpe-trap=invalid,zero,overflow
也不会给出报错信息,导致无法排查错误。换成WSL 2,编译的时候用上面的参数就可以了。
原文:
今天踩了个坑,很难排查,比如:
C = 0.0
A = B/C
if(A < xxx) then
...
endif
在mfix里,这种出现除0的情况,然后A又在判断语句里,程序就直接退出,没有任何报错(原因未知,单独的fortran程序并不会出现这种情况)。所以在变量做分母的时候,最好加一个SMALL_NUMBER,例如:
C = 0.0
A = B/(C+SMALL_NUMBER)
if(A < xxx) then
...
endif
其中,SMALL_NUMBER
通常可以取一个很小的值,例如1e-7
欢迎微信打赏!

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App