1#ifndef SIGNAL_SUPPRESS
2#include <signal.h>
3#endif
4
5float fnan = 1.0f/0.0f - 1.0f/0.0f;
6float x = 1.0f;
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 (fnan == fnan)
25    abort ();
26  if (fnan != x)
27    x = 1.0;
28  else
29    abort ();
30
31  if (fnan < x)
32    abort ();
33  if (fnan > x)
34    abort ();
35  if (fnan <= x)
36    abort ();
37  if (fnan >= x)
38    abort ();
39  if (fnan == x)
40    abort ();
41#endif
42  exit (0);
43}
44