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