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