1#ifndef SIGNAL_SUPPRESS
2#include <signal.h>
3#endif
4
5long double dnan = 1.0l/0.0l - 1.0l/0.0l;
6long double x = 1.0l;
7
8void leave ()
9{
10  exit (0);
11}
12
13main ()
14{
15#if ! defined (__vax__) && ! defined (_CRAY)
16  /* Move this line earlier, for architectures (like alpha) that issue
17     SIGFPE on the first comparisons. */
18#ifndef SIGNAL_SUPPRESS
19  /* Some machines catches a SIGFPE when a NaN is compared.
20     Let this test succeed o such machines.  */
21  signal (SIGFPE, leave);
22#endif
23  /* NaN is an IEEE unordered operand.  All these test should be false.  */
24  if (dnan == dnan)
25    abort ();
26  if (dnan != x)
27    x = 1.0;
28  else
29    abort ();
30
31  if (dnan < x)
32    abort ();
33  if (dnan > x)
34    abort ();
35  if (dnan <= x)
36    abort ();
37  if (dnan >= x)
38    abort ();
39  if (dnan == x)
40    abort ();
41#endif
42  exit (0);
43}
44