在什么情况下Fortran输出NaN?

时间:2018-10-10 15:01:40

标签: debugging fortran nan

我知道除以零和负实数的平方根会输出NaN。还有其他类似的问题吗?

1 个答案:

答案 0 :(得分:1)

我将参考wikipedia entry on NaN和Fortran Standard尝试枚举它们。

  

可以返回NaN的三种操作:[5]

     
      
  • 使用NaN作为至少一个操作数的操作。
  •   

在Fortran中,它将包括算术和比较运算符的应用以及数学内在函数。

  
      
  • 不确定的形式:

         
        
    • (±0)/(±0)和(±∞)/(±∞)的分度。
    •   
    • (±0)×(±∞)和(±∞)×(±0)的乘积。
    •   
    • 加法(+∞)+(-∞),(-∞)+(+∞)和等效减法(+∞)-(+∞)和(-∞)-(-∞)。
    •   
    • 该标准具有以下替代功能:      
          
      • 标准pow函数和整数指数pown函数将0⁰,1∞和∞⁰定义为1。
      •   
      • powr函数将所有三个不确定形式定义为无效操作,因此返回NaN。
      •   
    •   
  •   

因此,包括了所有算术运算符(以及原子运算函数)。所有这些都很明显,接下来就是乐趣:

  
      
  • 具有复杂结果的实际操作,例如:      
        
    • 负数的平方根。
    •   
    • 负数的对数。
    •   
    • 小于-1或大于1的数字的反正弦或余弦。
    •   
  •   

这意味着(如评论中的@kvantour所述)在其域之外调用的任何内部函数:SQRTLOGATANATAN2,{ {1}},ACOSACOSHASINASINHFRACTIONRRSPACINGSET_EXPONENT