1 /* test cases for floating point comparison transformations 2 * compile with -DFLOAT_TYPE=float 3 * or -DFLOAT_TYPE=double 4 * or -DFLOAT_TYPE="long double" 5 */ 6 7 #include <assert.h> 8 #define _GNU_SOURCE 9 #include <math.h> /* for NaNs and infinity values */ 10 main()11int main() { 12 13 volatile FLOAT_TYPE a, b; 14 15 /* negative zero */ 16 a = 1.0 / -(1.0 / 0.0); /* negative 0 */ 17 b = 0.0; /* positive 0 */ 18 assert(!(a < b)); 19 assert((a <= b)); 20 assert(!(a > b)); 21 assert((a >= b)); 22 assert(!(a != b)); 23 assert((a == b)); 24 25 a = 1.0 / -(1.0 / 0.0); /* negative 0 */ 26 b = 1.0 / -(1.0 / 0.0); /* negative 0 */ 27 assert(!(a < b)); 28 assert((a <= b)); 29 assert(!(a > b)); 30 assert((a >= b)); 31 assert(!(a != b)); 32 assert((a == b)); 33 34 } 35 36