OSDN Git Service

PR debug/43557
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gfortran.dg / real_const_3.f90
1 !{ dg-do run }
2 !{ dg-options "-fno-range-check" }
3 !{ dg-add-options ieee }
4 !{ dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
5 ! PR19310 and PR19904, allow disabling range check during compile.
6 ! Contributed by Jerry DeLisle  <jvdelisle@gcc.gnu.org>
7 program main
8   character(len=80) str
9   real, parameter :: zero=0, nan=0/zero
10   complex :: z = (-0.1,-2.2)/(0.0,0.0)
11   complex :: z2 = (0.1,1)/0
12   complex :: z3 = (1e35, -2e3)/1.234e-37
13   complex :: z4 = (1e-35, -2e-35)/1234e34
14   real :: a
15   a = exp(1000.0)
16   b = 1/exp(1000.0)
17
18   write(str,*) a
19   if (trim(adjustl(str)) .ne. '+Infinity') call abort
20
21   if (b .ne. 0.) call abort
22
23   write(str,*) -1.0/b
24   if (trim(adjustl(str)) .ne. '-Infinity') call abort
25
26   write(str,*) b/0.0
27   if (trim(adjustl(str)) .ne. 'NaN') call abort
28
29   write(str,*) 0.0/0.0
30   if (trim(adjustl(str)) .ne. 'NaN') call abort
31
32   write(str,*) 1.0/(-0.)
33   if (trim(adjustl(str)) .ne. '-Infinity') call abort
34
35   write(str,*) -2.0/0.
36   if (trim(adjustl(str)) .ne. '-Infinity') call abort
37
38   write(str,*) 3.0/0.
39   if (trim(adjustl(str)) .ne. '+Infinity') call abort
40
41   write(str,*)  nan
42   if (trim(adjustl(str)) .ne. 'NaN') call abort
43
44   write(str,*) z
45   if (trim(adjustl(str)) .ne. '(            NaN,            NaN)') call abort
46
47   write(str,*) z2
48   if (trim(adjustl(str)) .ne. '(            NaN,            NaN)') call abort
49
50   write(str,*) z3
51   if (trim(adjustl(str)) .ne. '(      +Infinity,      -Infinity)') call abort
52
53   write(str,*) z4
54   if (trim(adjustl(str)) .ne. '(  0.0000000    , -0.0000000    )') call abort
55
56 end program main