!
!  Module emulating not universally available intrinsics
!
module Emulated
!
  implicit none
!
  integer (KIND=4) :: inan
!  integer (KIND=8) :: inan
  real (KIND=4), parameter :: rtype=0.
!  real (KIND=8), parameter :: rtype=0.d0
!
  data inan /Z'7FBFFFFF'/     !(KIND=4)
!  data inan /Z'7FF7FFFFFFFFFFFF'/      !(KIND=8)
!
  real :: rnan
!
 contains
!***********************************************************************
  subroutine initialize_nan()
!
    rnan=transfer(inan,rtype)
!
  endsubroutine initialize_nan
!**********************************************************************
  elemental function isnan(v)
!
! 23-Dec-10/MR: coded
! 15-Jan-11/MR: modified for portability; added alternative code for double precision
!
! emulates not yet standard function isnan

  logical          :: isnan
  real, intent(in) :: v
!
  integer (KIND=4), parameter :: itype=0
!  integer (KIND=8), parameter :: itype=0
  integer (KIND=4) :: iv
!  integer (KIND=8) :: iv
!
  iv=transfer(v,itype)
!
  isnan = iv==inan
!
  endfunction isnan
!***********************************************************************
endmodule emulated