克林壁虎 2022-10-21 11:47 采纳率: 84.6%
浏览 21
已结题

fortran中FPE相关问题

您好!
我在读fortran90代码文件时遇到了一些看不懂的定义,这些定义似乎是默认的,但我在网上找不到它们的解释。
如:
FPE$INVALID,FPE$DENORMAL,FPE$ZERODIVIDE,FPE$OVERFLOW,FPE$UNDERFLOW,FPE$INEXACT
我感到它们似乎是某一个体系的(因为前面都有FPE)。但我不太明白它们各自具体的涵义,也不明白$这个符号在这里起到怎样的作用,看起来也和%有点像?
谢谢!

附代码如下:(这一整段我都没看懂QAQ)
module sim_mod
use mpi
use ifport
……
function hand_fpe(sigid, except)
!DEC$ ATTRIBUTES C :: hand_fpe
use ifport
INTEGER(4) :: hand_fpe
INTEGER(2) :: sigid, except

  if (sigid/=SIG$FPE) then
     print "('The hand_fpe is not for signal ', I0)", sigid
     hand_fpe = 1
     return
  end if
  select case(except)!select case
     case( FPE$INVALID )
        print *, ' Floating point exception: Invalid number'
     case( FPE$DENORMAL )
        print *, ' Floating point exception: Denormalized number'
     case( FPE$ZERODIVIDE )
        print *, ' Floating point exception: Zero divide'
     case( FPE$OVERFLOW )
        print *, ' Floating point exception: Overflow'
     case( FPE$UNDERFLOW )
        print *, ' Floating point exception: Underflow'
     case( FPE$INEXACT )
        print *, ' Floating point exception: Inexact precision'
     case default
        print *, ' Floating point exception: Non-IEEE type'
  end select
  print *, 'lake failed: ', lake_info
  hand_fpe = 1

end function
end module

  • 写回答

2条回答 默认 最新

  • 地球屋里老师 2022-10-21 12:23
    关注

    !DEC$ 是编译指令,不是fortran语法,属于编译器自己的扩展。
    FPE$DENORMAL是模块ifport中定义的普通变量,其中的$没有特殊意义,就是个字符而已。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月1日
  • 已采纳回答 11月23日
  • 创建了问题 10月21日