xref: /aosp_15_r20/external/AFLplusplus/test/test-fp_cases.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 
main()9*08b48e0bSAndroid Build Coastguard Worker int main() {
10*08b48e0bSAndroid Build Coastguard Worker 
11*08b48e0bSAndroid Build Coastguard Worker   volatile FLOAT_TYPE a, b;
12*08b48e0bSAndroid Build Coastguard Worker   /* different values */
13*08b48e0bSAndroid Build Coastguard Worker   a = -2.1;
14*08b48e0bSAndroid Build Coastguard Worker   b = -2;                             /* signs equal, exp equal, mantissa > */
15*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
16*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
17*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
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 
22*08b48e0bSAndroid Build Coastguard Worker   a = 1.8;
23*08b48e0bSAndroid Build Coastguard Worker   b = 2.1;                           /* signs equal, exp differ, mantissa > */
24*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
25*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
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 
31*08b48e0bSAndroid Build Coastguard Worker   a = 2;
32*08b48e0bSAndroid Build Coastguard Worker   b = 2.1;                            /* signs equal, exp equal, mantissa < */
33*08b48e0bSAndroid Build Coastguard Worker   assert((a < b));
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 
40*08b48e0bSAndroid Build Coastguard Worker   a = -2;
41*08b48e0bSAndroid Build Coastguard Worker   b = -1.8;                          /* signs equal, exp differ, mantissa < */
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   a = -1;
50*08b48e0bSAndroid Build Coastguard Worker   b = 1;                         /* signs differ, exp equal, mantissa equal */
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   assert(!(a == b));
57*08b48e0bSAndroid Build Coastguard Worker 
58*08b48e0bSAndroid Build Coastguard Worker   a = -1;
59*08b48e0bSAndroid Build Coastguard Worker   b = 0;                        /* signs differ, exp differ, mantissa equal */
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   assert((a != b));
65*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
66*08b48e0bSAndroid Build Coastguard Worker 
67*08b48e0bSAndroid Build Coastguard Worker   a = -2;
68*08b48e0bSAndroid Build Coastguard Worker   b = 2.8;                           /* signs differ, exp equal, mantissa < */
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   assert(!(a >= b));
73*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
74*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
75*08b48e0bSAndroid Build Coastguard Worker 
76*08b48e0bSAndroid Build Coastguard Worker   a = -2;
77*08b48e0bSAndroid Build Coastguard Worker   b = 1.8;                          /* signs differ, exp differ, mantissa < */
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   assert((a != b));
83*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
84*08b48e0bSAndroid Build Coastguard Worker 
85*08b48e0bSAndroid Build Coastguard Worker   a = -2;
86*08b48e0bSAndroid Build Coastguard Worker   b = -2.1;                           /* signs equal, exp equal, mantissa > */
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   assert(!(a <= b));
91*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
92*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
93*08b48e0bSAndroid Build Coastguard Worker 
94*08b48e0bSAndroid Build Coastguard Worker   a = 2.1;
95*08b48e0bSAndroid Build Coastguard Worker   b = 1.8;                           /* signs equal, exp differ, mantissa > */
96*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
97*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
98*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
99*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
100*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
101*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
102*08b48e0bSAndroid Build Coastguard Worker 
103*08b48e0bSAndroid Build Coastguard Worker   a = 2.1;
104*08b48e0bSAndroid Build Coastguard Worker   b = 2;                              /* signs equal, exp equal, mantissa < */
105*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
106*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
107*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
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 
112*08b48e0bSAndroid Build Coastguard Worker   a = -1.8;
113*08b48e0bSAndroid Build Coastguard Worker   b = -2;                            /* signs equal, exp differ, mantissa < */
114*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
115*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
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 
121*08b48e0bSAndroid Build Coastguard Worker   a = 1;
122*08b48e0bSAndroid Build Coastguard Worker   b = -1;                        /* signs differ, exp equal, mantissa equal */
123*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
124*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
125*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
126*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
127*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
128*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
129*08b48e0bSAndroid Build Coastguard Worker 
130*08b48e0bSAndroid Build Coastguard Worker   a = 0;
131*08b48e0bSAndroid Build Coastguard Worker   b = -1;                       /* signs differ, exp differ, mantissa equal */
132*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
133*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
134*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
135*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
136*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
137*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
138*08b48e0bSAndroid Build Coastguard Worker 
139*08b48e0bSAndroid Build Coastguard Worker   a = 2.8;
140*08b48e0bSAndroid Build Coastguard Worker   b = -2;                            /* signs differ, exp equal, mantissa < */
141*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
142*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
143*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
144*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
145*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
146*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
147*08b48e0bSAndroid Build Coastguard Worker 
148*08b48e0bSAndroid Build Coastguard Worker   a = 1.8;
149*08b48e0bSAndroid Build Coastguard Worker   b = -2;                           /* signs differ, exp differ, mantissa < */
150*08b48e0bSAndroid Build Coastguard Worker   assert((a > b));
151*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
152*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
153*08b48e0bSAndroid Build Coastguard Worker   assert(!(a <= b));
154*08b48e0bSAndroid Build Coastguard Worker   assert((a != b));
155*08b48e0bSAndroid Build Coastguard Worker   assert(!(a == b));
156*08b48e0bSAndroid Build Coastguard Worker 
157*08b48e0bSAndroid Build Coastguard Worker   /* equal values */
158*08b48e0bSAndroid Build Coastguard Worker   a = 0;
159*08b48e0bSAndroid Build Coastguard Worker   b = 0;
160*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
161*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
162*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
163*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
164*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
165*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
166*08b48e0bSAndroid Build Coastguard Worker 
167*08b48e0bSAndroid Build Coastguard Worker   a = -0;
168*08b48e0bSAndroid Build Coastguard Worker   b = 0;
169*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
170*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
171*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
172*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
173*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
174*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
175*08b48e0bSAndroid Build Coastguard Worker 
176*08b48e0bSAndroid Build Coastguard Worker   a = 1;
177*08b48e0bSAndroid Build Coastguard Worker   b = 1;
178*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
179*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
180*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
181*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
182*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
183*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
184*08b48e0bSAndroid Build Coastguard Worker 
185*08b48e0bSAndroid Build Coastguard Worker   a = 0.5;
186*08b48e0bSAndroid Build Coastguard Worker   b = 0.5;
187*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
188*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
189*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
190*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
191*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
192*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
193*08b48e0bSAndroid Build Coastguard Worker 
194*08b48e0bSAndroid Build Coastguard Worker   a = -1;
195*08b48e0bSAndroid Build Coastguard Worker   b = -1;
196*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
197*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
198*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
199*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
200*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
201*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
202*08b48e0bSAndroid Build Coastguard Worker 
203*08b48e0bSAndroid Build Coastguard Worker   a = -0.5;
204*08b48e0bSAndroid Build Coastguard Worker   b = -0.5;
205*08b48e0bSAndroid Build Coastguard Worker   assert(!(a < b));
206*08b48e0bSAndroid Build Coastguard Worker   assert((a <= b));
207*08b48e0bSAndroid Build Coastguard Worker   assert(!(a > b));
208*08b48e0bSAndroid Build Coastguard Worker   assert((a >= b));
209*08b48e0bSAndroid Build Coastguard Worker   assert(!(a != b));
210*08b48e0bSAndroid Build Coastguard Worker   assert((a == b));
211*08b48e0bSAndroid Build Coastguard Worker 
212*08b48e0bSAndroid Build Coastguard Worker }
213*08b48e0bSAndroid Build Coastguard Worker 
214