2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / ieee / rbug.c
blobce13d7e9eed73a756bcf7b41be46c3d930d03a4c
1 #if defined(__i386__) && defined(__FreeBSD__)
2 #include <ieeefp.h>
3 #endif
5 double d (unsigned long long k)
7 double x;
9 x = (double) k;
10 return x;
13 float s (unsigned long long k)
15 float x;
17 x = (float) k;
18 return x;
21 main ()
23 unsigned long long int k;
24 double x;
26 #if defined(__i386__) && defined(__FreeBSD__)
27 /* This test case assumes extended-precision, but FreeBSD defaults to
28 double-precision. Make it so. */
29 fpsetprec (FP_PE);
30 #endif
32 if (sizeof (double) >= 8)
34 k = 0x8693ba6d7d220401ULL;
35 x = d (k);
36 k = (unsigned long long) x;
37 if (k != 0x8693ba6d7d220800ULL)
38 abort ();
41 k = 0x8234508000000001ULL;
42 x = s (k);
43 k = (unsigned long long) x;
44 if (k != 0x8234510000000000ULL)
45 abort ();
47 exit (0);