1-- { dg-do run }
2
3procedure Nan_Max is
4
5   function NaN return Long_Float is
6      Zero : Long_Float := 0.0;
7   begin
8      return Zero / Zero;
9   end;
10
11   Z : Long_Float := 1.0;
12   N : Long_Float := NaN;
13
14begin
15   if Long_Float'Max (N, Z) /= Z then
16      raise Program_Error;
17   end if;
18
19   if Long_Float'Max (Z, N) /= Z then
20      raise Program_Error;
21   end if;
22
23   if Long_Float'Max (NaN, Z) /= Z then
24      raise Program_Error;
25   end if;
26
27   if Long_Float'Max (Z, NaN) /= Z then
28      raise Program_Error;
29   end if;
30end;
31