program rwinfn
************************************************************************
* (Read/write Infinity and NaN)
* Program to test whether Infinity and NaN can be output to a text
* file, and then input correctly.
* (30-Nov-2001)
************************************************************************
character*50 line
real arg, s, x, nan, inf
logical isnan, ispinf, isninf
isnan(arg) = (arg .ne. arg)
isninf(arg) = (arg .eq. -inf)
ispinf(arg) = (arg .eq. inf)
open (unit = 1, file = 'rwinfnan.tmp', status = 'unknown',
x access = 'sequential', form = 'formatted')
s = 0.0
x = s
inf = 1.0/s
nan = x/s
write (1,*) nan
write (1,*) inf
rewind (1)
read (1,'(a)') line
write (6,*) 'NaN was written as: ', line
read (1,'(a)') line
write (6,*) 'Inf was written as: ', line
rewind (1)
read (1,*) x
if (isnan(x)) then
write (6,*) 'NaN was correctly input'
else
write (6,*) 'NaN was INCORRECTLY input as ', x
endif
read (1,*) x
if (x .eq. x) then
write (6,*) 'Inf was correctly input'
else
write (6,*) 'Inf was INCORRECTLY input as ', x
endif
end