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  }