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

     1  #ifndef SIGNAL_SUPPRESS
     2  #include <signal.h>
     3  #endif
     4  
     5  float fnan = 1.0f/0.0f - 1.0f/0.0f;
     6  float x = 1.0f;
     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 (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  }