1! { dg-do run }
2! { dg-options "-fno-range-check" }
3! { dg-add-options ieee }
4! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
5!
6! PR fortran/34319
7!
8! Check support of INF/NaN for I/O.
9!
10program main
11  implicit none
12  real :: r
13  complex :: z
14  character(len=30) :: str
15
16  str = "nan"
17  read(str,*) r
18  if (.not.isnan(r)) call abort()
19  str = "(nan,4.0)"
20  read(str,*) z
21  if (.not.isnan(real(z)) .or. aimag(z) /= 4.0) call abort()
22  str = "(7.0,nan)"
23  read(str,*) z
24  if (.not.isnan(aimag(z)) .or. real(z) /= 7.0) call abort()
25
26  str = "inFinity"
27  read(str,*) r
28  if (r <= huge(r)) call abort()
29  str = "(+inFinity,4.0)"
30  read(str,*) z
31  if ((real(z) <= huge(r)) .or. aimag(z) /= 4.0) call abort()
32  str = "(7.0,-inFinity)"
33  read(str,*) z
34  if ((aimag(z) >= -huge(r)) .or. real(z) /= 7.0) call abort()
35
36  str = "inf"
37  read(str,*) r
38  if (r <= huge(r)) call abort()
39  str = "(+inf,4.0)"
40  read(str,*) z
41  if ((real(z) <= huge(r)) .or. aimag(z) /= 4.0) call abort()
42  str = "(7.0,-inf)"
43  read(str,*) z
44  if ((aimag(z) >= -huge(r)) .or. real(z) /= 7.0) call abort()
45
46end program main
47