1 /* Excess precision tests. Test implicit conversions in comparisons: 2 excess precision in C11 mode. */ 3 /* { dg-do run } */ 4 /* { dg-options "-std=c11 -mfpmath=387 -fexcess-precision=standard" } */ 5 6 extern void abort (void); 7 extern void exit (int); 8 9 int main(void)10main (void) 11 { 12 float f = 0x1p63f; 13 unsigned long long int u = (1ULL << 63) + 1; 14 15 if ((f == u) != 0) 16 abort (); 17 18 if ((u == f) != 0) 19 abort (); 20 21 if ((f != u) != 1) 22 abort (); 23 24 if ((u != f) != 1) 25 abort (); 26 27 if ((f < u) != 1) 28 abort (); 29 30 if ((u < f) != 0) 31 abort (); 32 33 if ((f <= u) != 1) 34 abort (); 35 36 if ((u <= f) != 0) 37 abort (); 38 39 if ((f > u) != 0) 40 abort (); 41 42 if ((u > f) != 1) 43 abort (); 44 45 if ((f >= u) != 0) 46 abort (); 47 48 if ((u >= f) != 1) 49 abort (); 50 51 exit (0); 52 } 53