我有一个遗留的 FORTRAN 项目,有一些非常密集的计算。我希望这个数学代码可以被 C/C++ 代码访问,所以我构建了一个 FORTRAN dll,将它导入 C/C++ 并开始从我的 FORTRAN dll 接收浮点下溢。
同时,如果我从 FORTRAN 应用程序调用 FORTRAN dll 代码,它的执行效果很好。
最后,我发现我使用的编译器(它是集成到 VS2013 中的 FTN 95)有一个选项(/UNDERFLOW)。如果未指定此标志,则默认情况下所有下溢都转换为零。这发生在 FORTRAN 应用程序中。当我使用 C 代码从这个 dll 执行方法时,我收到下溢。
所以,问题是:有没有办法强制 VC++ 编译器将下溢转换为零?
PS:是的,我知道依赖一直抛出浮点异常的代码是愚蠢的。然而,这段代码是旧的,在这一点上,用最新的技术完全重写它是不可能的。