modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-1.c (about)

     1  #ifndef SIGNAL_SUPPRESS
     2  #include <signal.h>
     3  #endif
     4  
     5  double dnan = 1.0/0.0 - 1.0/0.0;
     6  double x = 1.0;
     7  
     8  void leave ()
     9  {
    10    exit (0);
    11  }
    12  
    13  main ()
    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  }