xref: /aosp_15_r20/external/AFLplusplus/test/test-fp_cases.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 
main()9 int main() {
10 
11   volatile FLOAT_TYPE a, b;
12   /* different values */
13   a = -2.1;
14   b = -2;                             /* signs equal, exp equal, mantissa > */
15   assert((a < b));
16   assert((a <= b));
17   assert(!(a > b));
18   assert(!(a >= b));
19   assert((a != b));
20   assert(!(a == b));
21 
22   a = 1.8;
23   b = 2.1;                           /* signs equal, exp differ, mantissa > */
24   assert((a < b));
25   assert((a <= b));
26   assert(!(a > b));
27   assert(!(a >= b));
28   assert((a != b));
29   assert(!(a == b));
30 
31   a = 2;
32   b = 2.1;                            /* signs equal, exp equal, mantissa < */
33   assert((a < b));
34   assert((a <= b));
35   assert(!(a > b));
36   assert(!(a >= b));
37   assert((a != b));
38   assert(!(a == b));
39 
40   a = -2;
41   b = -1.8;                          /* signs equal, exp differ, mantissa < */
42   assert((a < b));
43   assert((a <= b));
44   assert(!(a > b));
45   assert(!(a >= b));
46   assert((a != b));
47   assert(!(a == b));
48 
49   a = -1;
50   b = 1;                         /* signs differ, exp equal, mantissa equal */
51   assert((a < b));
52   assert((a <= b));
53   assert(!(a > b));
54   assert(!(a >= b));
55   assert((a != b));
56   assert(!(a == b));
57 
58   a = -1;
59   b = 0;                        /* signs differ, exp differ, mantissa equal */
60   assert((a < b));
61   assert((a <= b));
62   assert(!(a > b));
63   assert(!(a >= b));
64   assert((a != b));
65   assert(!(a == b));
66 
67   a = -2;
68   b = 2.8;                           /* signs differ, exp equal, mantissa < */
69   assert((a < b));
70   assert((a <= b));
71   assert(!(a > b));
72   assert(!(a >= b));
73   assert((a != b));
74   assert(!(a == b));
75 
76   a = -2;
77   b = 1.8;                          /* signs differ, exp differ, mantissa < */
78   assert((a < b));
79   assert((a <= b));
80   assert(!(a > b));
81   assert(!(a >= b));
82   assert((a != b));
83   assert(!(a == b));
84 
85   a = -2;
86   b = -2.1;                           /* signs equal, exp equal, mantissa > */
87   assert((a > b));
88   assert((a >= b));
89   assert(!(a < b));
90   assert(!(a <= b));
91   assert((a != b));
92   assert(!(a == b));
93 
94   a = 2.1;
95   b = 1.8;                           /* signs equal, exp differ, mantissa > */
96   assert((a > b));
97   assert((a >= b));
98   assert(!(a < b));
99   assert(!(a <= b));
100   assert((a != b));
101   assert(!(a == b));
102 
103   a = 2.1;
104   b = 2;                              /* signs equal, exp equal, mantissa < */
105   assert((a > b));
106   assert((a >= b));
107   assert(!(a < b));
108   assert(!(a <= b));
109   assert((a != b));
110   assert(!(a == b));
111 
112   a = -1.8;
113   b = -2;                            /* signs equal, exp differ, mantissa < */
114   assert((a > b));
115   assert((a >= b));
116   assert(!(a < b));
117   assert(!(a <= b));
118   assert((a != b));
119   assert(!(a == b));
120 
121   a = 1;
122   b = -1;                        /* signs differ, exp equal, mantissa equal */
123   assert((a > b));
124   assert((a >= b));
125   assert(!(a < b));
126   assert(!(a <= b));
127   assert((a != b));
128   assert(!(a == b));
129 
130   a = 0;
131   b = -1;                       /* signs differ, exp differ, mantissa equal */
132   assert((a > b));
133   assert((a >= b));
134   assert(!(a < b));
135   assert(!(a <= b));
136   assert((a != b));
137   assert(!(a == b));
138 
139   a = 2.8;
140   b = -2;                            /* signs differ, exp equal, mantissa < */
141   assert((a > b));
142   assert((a >= b));
143   assert(!(a < b));
144   assert(!(a <= b));
145   assert((a != b));
146   assert(!(a == b));
147 
148   a = 1.8;
149   b = -2;                           /* signs differ, exp differ, mantissa < */
150   assert((a > b));
151   assert((a >= b));
152   assert(!(a < b));
153   assert(!(a <= b));
154   assert((a != b));
155   assert(!(a == b));
156 
157   /* equal values */
158   a = 0;
159   b = 0;
160   assert(!(a < b));
161   assert((a <= b));
162   assert(!(a > b));
163   assert((a >= b));
164   assert(!(a != b));
165   assert((a == b));
166 
167   a = -0;
168   b = 0;
169   assert(!(a < b));
170   assert((a <= b));
171   assert(!(a > b));
172   assert((a >= b));
173   assert(!(a != b));
174   assert((a == b));
175 
176   a = 1;
177   b = 1;
178   assert(!(a < b));
179   assert((a <= b));
180   assert(!(a > b));
181   assert((a >= b));
182   assert(!(a != b));
183   assert((a == b));
184 
185   a = 0.5;
186   b = 0.5;
187   assert(!(a < b));
188   assert((a <= b));
189   assert(!(a > b));
190   assert((a >= b));
191   assert(!(a != b));
192   assert((a == b));
193 
194   a = -1;
195   b = -1;
196   assert(!(a < b));
197   assert((a <= b));
198   assert(!(a > b));
199   assert((a >= b));
200   assert(!(a != b));
201   assert((a == b));
202 
203   a = -0.5;
204   b = -0.5;
205   assert(!(a < b));
206   assert((a <= b));
207   assert(!(a > b));
208   assert((a >= b));
209   assert(!(a != b));
210   assert((a == b));
211 
212 }
213 
214