0

在 Linux(Ubuntu 16.04,内核 4.4.0-186-generic)上,我使用sunf95Oracle Developer Studio 12.6 中的 Fortran 编译器来编译以下 Fortran 代码:

program testieee
    use ieee_arithmetic, only : is_nan => ieee_is_nan
    implicit none
    print *, is_nan(0.0)
end program testieee

未指定编译器选项。编译失败并显示以下消息:

f90comp: ../src/s_intr_mod.c :772 : ieee_arithmetic_semantics: assertion `0' failed.
f90: Fatal error in $PATH_TO_ORACLE_DEVELOPER_STUDIO/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/lib/compilers/bin/f90comp : Signal number = 6

但是,使用相同的编译器可以成功编译以下代码:

program testieee
    use ieee_arithmetic, only : ieee_is_nan  ! Here is the only difference.
    implicit none
    print *, ieee_is_nan(0.0)
end program testieee

gfortran、g95、ifort、nagfor、pgfortran 和 absoft fortran 编译器可以毫无问题地编译这两个版本的代码。

那么为什么 Oracle Developer Studio 12.6 会失败呢?错误信息是什么意思?对代码的任何评论/批评将不胜感激。非常感谢。

编辑

  • 正如@Ian Bush 推测的那样,错误可能是因为名称“is_nan”与某些非标准内在过程的名称冲突。所以我尝试将其更改为“my_nan”,但错误仍然存​​在。感谢伊恩·布什。
4

0 回答 0