xref: /aosp_15_r20/external/AFLplusplus/test/test-fp_minusZerocases.c (revision 08b48e0b10e97b33e7b60c5b6e2243bd915777f2)
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()11 int 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