logical function is_nan8(f) implicit none real(8), intent(in) :: f logical :: is_nan integer (8) :: n integer :: i n = transfer(f, 0_8) ! Exponent part is_nan = .true. do i = 52, 62 if( .not. btest(n,i) )then is_nan = .false. return endif enddo ! Fraction part is_nan = .false. do i = 0, 51 if( btest(n,i) )then is_nan = .true. return endif enddo end function is_nan8