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

     1  #include <float.h>
     2  
     3  long double dfrom = 1.1L;
     4  long double m1;
     5  long double m2;
     6  unsigned long mant_long;
     7  
     8  int main()
     9  {
    10    /* Some targets don't support a conforming long double type.  This is
    11       common with very small parts which set long double == float.   Look
    12       to see if the type has at least 32 bits of precision.  */
    13    if (LDBL_EPSILON > 0x1p-31L)
    14      return 0;
    15  
    16    m1 = dfrom / 2.0L;
    17    m2 = m1 * 4294967296.0L;
    18    mant_long = ((unsigned long) m2) & 0xffffffff;
    19  
    20    if (mant_long == 0x8ccccccc)
    21      return 0;
    22    else
    23      abort();
    24  }