xref: /aosp_15_r20/external/AFLplusplus/test/test-fp_Infcases.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 #ifdef INFINITY
16*08b48e0bSAndroid Build Coastguard Worker   FLOAT_TYPE inf = (FLOAT_TYPE)INFINITY;
17*08b48e0bSAndroid Build Coastguard Worker #else
18*08b48e0bSAndroid Build Coastguard Worker   FLOAT_TYPE inf = 1.0 / 0.0;                          /* produces infinity */
19*08b48e0bSAndroid Build Coastguard Worker #endif
20*08b48e0bSAndroid Build Coastguard Worker   FLOAT_TYPE negZero = 1.0 / -inf;
21*08b48e0bSAndroid Build Coastguard Worker   FLOAT_TYPE posZero = 0.0;
22*08b48e0bSAndroid Build Coastguard Worker 
23*08b48e0bSAndroid Build Coastguard Worker   /* plus infinity */
24*08b48e0bSAndroid Build Coastguard Worker   a = (1.0 / 0.0);                                     /* positive infinity */
25*08b48e0bSAndroid Build Coastguard Worker   b = (1.0 / 0.0);                                     /* positive infinity */
26*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
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 
33*08b48e0bSAndroid Build Coastguard Worker   b = -(1.0 / 0.0);                                    /* negative infinity */
34*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
35*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
36*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
37*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
38*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
39*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
40*08b48e0bSAndroid Build Coastguard Worker 
41*08b48e0bSAndroid Build Coastguard Worker   b = 1.0 / -(1.0 / 0.0);                                     /* negative 0 */
42*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
43*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
44*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
45*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
46*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
47*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
48*08b48e0bSAndroid Build Coastguard Worker 
49*08b48e0bSAndroid Build Coastguard Worker   b = 0.0;                                                    /* positive 0 */
50*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
51*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
52*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
53*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
54*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
55*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
56*08b48e0bSAndroid Build Coastguard Worker 
57*08b48e0bSAndroid Build Coastguard Worker   b = -42.0;
58*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
59*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
60*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
61*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
62*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
63*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
64*08b48e0bSAndroid Build Coastguard Worker 
65*08b48e0bSAndroid Build Coastguard Worker   b = 42.0;
66*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
67*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
68*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
69*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
70*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
71*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
72*08b48e0bSAndroid Build Coastguard Worker 
73*08b48e0bSAndroid Build Coastguard Worker   /* negative infinity */
74*08b48e0bSAndroid Build Coastguard Worker   a = -(1.0 / 0.0);
75*08b48e0bSAndroid Build Coastguard Worker   b = (1.0 / 0.0);                                     /* positive infinity */
76*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
77*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
78*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
79*08b48e0bSAndroid Build Coastguard Worker   assert(!(a >= b));
80*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
81*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
82*08b48e0bSAndroid Build Coastguard Worker 
83*08b48e0bSAndroid Build Coastguard Worker   b = -(1.0 / 0.0);                                    /* negative infinity */
84*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
85*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
86*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
87*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
88*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
89*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
90*08b48e0bSAndroid Build Coastguard Worker 
91*08b48e0bSAndroid Build Coastguard Worker   b = 1.0 / -(1.0 / 0.0);                                     /* negative 0 */
92*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
93*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
94*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
95*08b48e0bSAndroid Build Coastguard Worker   assert(!(a >= b));
96*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
97*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
98*08b48e0bSAndroid Build Coastguard Worker 
99*08b48e0bSAndroid Build Coastguard Worker   b = 0.0;                                                    /* positive 0 */
100*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
101*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
102*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
103*08b48e0bSAndroid Build Coastguard Worker   assert(!(a >= b));
104*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
105*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
106*08b48e0bSAndroid Build Coastguard Worker 
107*08b48e0bSAndroid Build Coastguard Worker   b = -42.0;
108*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
109*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
110*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
111*08b48e0bSAndroid Build Coastguard Worker   assert(!(a >= b));
112*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
113*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
114*08b48e0bSAndroid Build Coastguard Worker 
115*08b48e0bSAndroid Build Coastguard Worker   b = 42.0;
116*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
117*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
118*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
119*08b48e0bSAndroid Build Coastguard Worker   assert(!(a >= b));
120*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
121*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
122*08b48e0bSAndroid Build Coastguard Worker 
123*08b48e0bSAndroid Build Coastguard Worker }
124*08b48e0bSAndroid Build Coastguard Worker 
125