Fortran: allow IEEE_VALUE to correctly return signaling NaNs
[official-gcc.git] / gcc / testsuite / gfortran.dg / ieee / ieee_10.f90
bloba596504ae1e4a2b8f9cb93022a2d4c63fa403147
1 ! { dg-do run }
2 ! { dg-additional-options "-ffpe-trap=overflow,invalid" }
4 ! Use dg-additional-options rather than dg-options to avoid overwriting the
5 ! default IEEE options which are passed by ieee.exp and necessary.
6 program foo
8 use ieee_arithmetic
10 implicit none
12 real x
13 real(8) y
15 ! At this point it is unclear what the behavior should be
16 ! for -ffpe-trap=invalid with a signaling NaN
17 !x = ieee_value(x, ieee_signaling_nan)
18 !if (.not. ieee_is_nan(x)) stop 1
19 x = ieee_value(x, ieee_quiet_nan)
20 if (.not. ieee_is_nan(x)) stop 2
22 x = ieee_value(x, ieee_positive_inf)
23 if (ieee_is_finite(x)) stop 3
24 x = ieee_value(x, ieee_negative_inf)
25 if (ieee_is_finite(x)) stop 4
27 ! At this point it is unclear what the behavior should be
28 ! for -ffpe-trap=invalid with a signaling NaN
29 !y = ieee_value(y, ieee_signaling_nan)
30 !if (.not. ieee_is_nan(y)) stop 5
31 y = ieee_value(y, ieee_quiet_nan)
32 if (.not. ieee_is_nan(y)) stop 6
34 y = ieee_value(y, ieee_positive_inf)
35 if (ieee_is_finite(y)) stop 7
36 y = ieee_value(y, ieee_negative_inf)
37 if (ieee_is_finite(y)) stop 8
39 end program foo