NaN (Not A Number)の検出

NaNは0.0/0.0(0割る0)の結果と定義されます (参考)

ifortの場合、floating invalidというエラーがでます。

テスト環境:ifort (IFORT) 11.1

プログラム例

program isnan_test
! Description:
!
! Author: am
!
! Host: aofd30
! Directory: /work2/am/12.Work11/22.Climatology_2/43.SW_penetration/isnan_test
!
! Revision history:
!  This file is created by /usr/local/mybin/nff.sh at 18:03 on 09-13-2011.
  USE, INTRINSIC :: IEEE_ARITHMETIC
!  implicit none
  real VALUE
  integer K
!  write(*,'(a)')'Program isnan_test starts.'
!  write(*,*)''
  K1 = ( IEEE_IS_NAN( 0.0/0.0 ) )
  K2 = ( IEEE_IS_NAN( 1.0/0.0 ) )
  K3 = ( IEEE_IS_NAN( 1.0/1.0 ) )
  print *,'K1=',K1
  print *,'K2=',K2
  print *,'K3=',K3
!  write(*,'(a)')'Done program isnan_test.'
!  write(*,*)
end program isnan_test

実行例

$ ./isnan_test

K1= -1

K2= 0

K3= 0

real 0m0.002s

user 0m0.001s

sys 0m0.001s

参考

http://software.intel.com/en-us/forums/showthread.php?t=63080