20010226-1.c   [plain text]


#include <float.h>

long double dfrom = 1.1;
long double m1;
long double m2;
unsigned long mant_long;

int main()
{
  /* Some targets don't support a conforming long double type.  This is
     common with very small parts which set long double == float.   Look
     to see if the type has at least 32 bits of precision.  */
  if (LDBL_EPSILON > 0x1p-31L)
    return 0;

  m1 = dfrom / 2.0;
  m2 = m1 * 4294967296.0;
  mant_long = ((unsigned long) m2) & 0xffffffff;

  if (mant_long == 0x8ccccccc)
    return 0;
  else
    abort();
}