1 //===-- cmpdf2_test.c - Test __cmpdf2 -------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file tests single-precision soft-double comparisons for the compiler-rt
11 // library.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #include <stdio.h>
16 
17 int __eqdf2(double, double);
18 int __gedf2(double, double);
19 int __gtdf2(double, double);
20 int __ledf2(double, double);
21 int __ltdf2(double, double);
22 int __nedf2(double, double);
23 int __unorddf2(double, double);
24 
25 struct TestVector {
26     double a;
27     double b;
28     int eqReference;
29     int geReference;
30     int gtReference;
31     int leReference;
32     int ltReference;
33     int neReference;
34     int unReference;
35 };
36 
37 int test__cmpdf2(const struct TestVector *vector) {
38 
39     if (__eqdf2(vector->a, vector->b) != vector->eqReference) {
40         printf("error in __eqdf2(%a, %a) = %d, expected %d\n",
41                vector->a, vector->b,
42                __eqdf2(vector->a, vector->b),
43                vector->eqReference);
44         return 1;
45     }
46 
47     if (__gedf2(vector->a, vector->b) != vector->geReference) {
48         printf("error in __gedf2(%a, %a) = %d, expected %d\n",
49                vector->a, vector->b,
50                __gedf2(vector->a, vector->b),
51                vector->geReference);
52         return 1;
53     }
54 
55     if (__gtdf2(vector->a, vector->b) != vector->gtReference) {
56         printf("error in __gtdf2(%a, %a) = %d, expected %d\n",
57                vector->a, vector->b,
58                __gtdf2(vector->a, vector->b),
59                vector->gtReference);
60         return 1;
61     }
62 
63     if (__ledf2(vector->a, vector->b) != vector->leReference) {
64         printf("error in __ledf2(%a, %a) = %d, expected %d\n",
65                vector->a, vector->b,
66                __ledf2(vector->a, vector->b),
67                vector->leReference);
68         return 1;
69     }
70 
71     if (__ltdf2(vector->a, vector->b) != vector->ltReference) {
72         printf("error in __ltdf2(%a, %a) = %d, expected %d\n",
73                vector->a, vector->b,
74                __ltdf2(vector->a, vector->b),
75                vector->ltReference);
76         return 1;
77     }
78 
79     if (__nedf2(vector->a, vector->b) != vector->neReference) {
80         printf("error in __nedf2(%a, %a) = %d, expected %d\n",
81                vector->a, vector->b,
82                __nedf2(vector->a, vector->b),
83                vector->neReference);
84         return 1;
85     }
86 
87     if (__unorddf2(vector->a, vector->b) != vector->unReference) {
88         printf("error in __unorddf2(%a, %a) = %d, expected %d\n",
89                vector->a, vector->b,
90                __unorddf2(vector->a, vector->b),
91                vector->unReference);
92         return 1;
93     }
94 
95     return 0;
96 }
97 
98 /*
99 void generateVectors() {
100 
101     const double arguments[] = {
102         __builtin_nan(""),
103         -__builtin_inf(),
104         -0x1.fffffffffffffp1023,
105         -0x1.0000000000001p0
106         -0x1.0000000000000p0,
107         -0x1.fffffffffffffp-1,
108         -0x1.0000000000000p-1022,
109         -0x0.fffffffffffffp-1022,
110         -0x0.0000000000001p-1022,
111         -0.0,
112          0.0,
113          0x0.0000000000001p-1022,
114          0x0.fffffffffffffp-1022,
115          0x1.0000000000000p-1022,
116          0x1.fffffffffffffp-1,
117          0x1.0000000000000p0,
118          0x1.0000000000001p0,
119          0x1.fffffffffffffp1023,
120          __builtin_inf()
121     };
122 
123     int numArguments = sizeof arguments / sizeof arguments[0];
124 
125     for (int i=0; i<numArguments; ++i) {
126         for (int j=0; j<numArguments; ++j) {
127             const double a = arguments[i];
128             const double b = arguments[j];
129             const int leResult = a < b ? -1 : a == b ? 0 :  1;
130             const int geResult = a > b ?  1 : a == b ? 0 : -1;
131             const int unResult = a != a || b != b ? 1 : 0;
132             printf("{%a,%a,%d,%d,%d,%d,%d,%d,%d},\n",
133                    a, b,
134                    leResult,
135                    geResult,
136                    geResult,
137                    leResult,
138                    leResult,
139                    leResult,
140                    unResult);
141         }
142     }
143 } */
144 
145 static const struct TestVector vectors[] = {
146     {__builtin_nan(""),__builtin_nan(""),1,-1,-1,1,1,1,1},
147     {__builtin_nan(""),-__builtin_inf(),1,-1,-1,1,1,1,1},
148     {__builtin_nan(""),-0x1.fffffffffffffp+1023,1,-1,-1,1,1,1,1},
149     {__builtin_nan(""),-0x1p+1,1,-1,-1,1,1,1,1},
150     {__builtin_nan(""),-0x1.fffffffffffffp-1,1,-1,-1,1,1,1,1},
151     {__builtin_nan(""),-0x1p-1022,1,-1,-1,1,1,1,1},
152     {__builtin_nan(""),-0x1.fffffcp-1023,1,-1,-1,1,1,1,1},
153     {__builtin_nan(""),-0x1p-1074,1,-1,-1,1,1,1,1},
154     {__builtin_nan(""),-0x0p+0,1,-1,-1,1,1,1,1},
155     {__builtin_nan(""),0x0p+0,1,-1,-1,1,1,1,1},
156     {__builtin_nan(""),0x1p-1074,1,-1,-1,1,1,1,1},
157     {__builtin_nan(""),0x1.fffffcp-1023,1,-1,-1,1,1,1,1},
158     {__builtin_nan(""),0x1p-1022,1,-1,-1,1,1,1,1},
159     {__builtin_nan(""),0x1.fffffffffffffp-1,1,-1,-1,1,1,1,1},
160     {__builtin_nan(""),0x1p+0,1,-1,-1,1,1,1,1},
161     {__builtin_nan(""),0x1.0000000000001p+0,1,-1,-1,1,1,1,1},
162     {__builtin_nan(""),0x1.fffffffffffffp+1023,1,-1,-1,1,1,1,1},
163     {__builtin_nan(""),__builtin_inf(),1,-1,-1,1,1,1,1},
164     {-__builtin_inf(),__builtin_nan(""),1,-1,-1,1,1,1,1},
165     {-__builtin_inf(),-__builtin_inf(),0,0,0,0,0,0,0},
166     {-__builtin_inf(),-0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
167     {-__builtin_inf(),-0x1p+1,-1,-1,-1,-1,-1,-1,0},
168     {-__builtin_inf(),-0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
169     {-__builtin_inf(),-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
170     {-__builtin_inf(),-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
171     {-__builtin_inf(),-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
172     {-__builtin_inf(),-0x0p+0,-1,-1,-1,-1,-1,-1,0},
173     {-__builtin_inf(),0x0p+0,-1,-1,-1,-1,-1,-1,0},
174     {-__builtin_inf(),0x1p-1074,-1,-1,-1,-1,-1,-1,0},
175     {-__builtin_inf(),0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
176     {-__builtin_inf(),0x1p-1022,-1,-1,-1,-1,-1,-1,0},
177     {-__builtin_inf(),0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
178     {-__builtin_inf(),0x1p+0,-1,-1,-1,-1,-1,-1,0},
179     {-__builtin_inf(),0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
180     {-__builtin_inf(),0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
181     {-__builtin_inf(),__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
182     {-0x1.fffffffffffffp+1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
183     {-0x1.fffffffffffffp+1023,-__builtin_inf(),1,1,1,1,1,1,0},
184     {-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023,0,0,0,0,0,0,0},
185     {-0x1.fffffffffffffp+1023,-0x1p+1,-1,-1,-1,-1,-1,-1,0},
186     {-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
187     {-0x1.fffffffffffffp+1023,-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
188     {-0x1.fffffffffffffp+1023,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
189     {-0x1.fffffffffffffp+1023,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
190     {-0x1.fffffffffffffp+1023,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
191     {-0x1.fffffffffffffp+1023,0x0p+0,-1,-1,-1,-1,-1,-1,0},
192     {-0x1.fffffffffffffp+1023,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
193     {-0x1.fffffffffffffp+1023,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
194     {-0x1.fffffffffffffp+1023,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
195     {-0x1.fffffffffffffp+1023,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
196     {-0x1.fffffffffffffp+1023,0x1p+0,-1,-1,-1,-1,-1,-1,0},
197     {-0x1.fffffffffffffp+1023,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
198     {-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
199     {-0x1.fffffffffffffp+1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
200     {-0x1p+1,__builtin_nan(""),1,-1,-1,1,1,1,1},
201     {-0x1p+1,-__builtin_inf(),1,1,1,1,1,1,0},
202     {-0x1p+1,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
203     {-0x1p+1,-0x1p+1,0,0,0,0,0,0,0},
204     {-0x1p+1,-0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
205     {-0x1p+1,-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
206     {-0x1p+1,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
207     {-0x1p+1,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
208     {-0x1p+1,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
209     {-0x1p+1,0x0p+0,-1,-1,-1,-1,-1,-1,0},
210     {-0x1p+1,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
211     {-0x1p+1,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
212     {-0x1p+1,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
213     {-0x1p+1,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
214     {-0x1p+1,0x1p+0,-1,-1,-1,-1,-1,-1,0},
215     {-0x1p+1,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
216     {-0x1p+1,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
217     {-0x1p+1,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
218     {-0x1.fffffffffffffp-1,__builtin_nan(""),1,-1,-1,1,1,1,1},
219     {-0x1.fffffffffffffp-1,-__builtin_inf(),1,1,1,1,1,1,0},
220     {-0x1.fffffffffffffp-1,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
221     {-0x1.fffffffffffffp-1,-0x1p+1,1,1,1,1,1,1,0},
222     {-0x1.fffffffffffffp-1,-0x1.fffffffffffffp-1,0,0,0,0,0,0,0},
223     {-0x1.fffffffffffffp-1,-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
224     {-0x1.fffffffffffffp-1,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
225     {-0x1.fffffffffffffp-1,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
226     {-0x1.fffffffffffffp-1,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
227     {-0x1.fffffffffffffp-1,0x0p+0,-1,-1,-1,-1,-1,-1,0},
228     {-0x1.fffffffffffffp-1,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
229     {-0x1.fffffffffffffp-1,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
230     {-0x1.fffffffffffffp-1,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
231     {-0x1.fffffffffffffp-1,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
232     {-0x1.fffffffffffffp-1,0x1p+0,-1,-1,-1,-1,-1,-1,0},
233     {-0x1.fffffffffffffp-1,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
234     {-0x1.fffffffffffffp-1,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
235     {-0x1.fffffffffffffp-1,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
236     {-0x1p-1022,__builtin_nan(""),1,-1,-1,1,1,1,1},
237     {-0x1p-1022,-__builtin_inf(),1,1,1,1,1,1,0},
238     {-0x1p-1022,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
239     {-0x1p-1022,-0x1p+1,1,1,1,1,1,1,0},
240     {-0x1p-1022,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
241     {-0x1p-1022,-0x1p-1022,0,0,0,0,0,0,0},
242     {-0x1p-1022,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
243     {-0x1p-1022,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
244     {-0x1p-1022,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
245     {-0x1p-1022,0x0p+0,-1,-1,-1,-1,-1,-1,0},
246     {-0x1p-1022,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
247     {-0x1p-1022,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
248     {-0x1p-1022,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
249     {-0x1p-1022,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
250     {-0x1p-1022,0x1p+0,-1,-1,-1,-1,-1,-1,0},
251     {-0x1p-1022,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
252     {-0x1p-1022,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
253     {-0x1p-1022,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
254     {-0x1.fffffcp-1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
255     {-0x1.fffffcp-1023,-__builtin_inf(),1,1,1,1,1,1,0},
256     {-0x1.fffffcp-1023,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
257     {-0x1.fffffcp-1023,-0x1p+1,1,1,1,1,1,1,0},
258     {-0x1.fffffcp-1023,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
259     {-0x1.fffffcp-1023,-0x1p-1022,1,1,1,1,1,1,0},
260     {-0x1.fffffcp-1023,-0x1.fffffcp-1023,0,0,0,0,0,0,0},
261     {-0x1.fffffcp-1023,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
262     {-0x1.fffffcp-1023,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
263     {-0x1.fffffcp-1023,0x0p+0,-1,-1,-1,-1,-1,-1,0},
264     {-0x1.fffffcp-1023,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
265     {-0x1.fffffcp-1023,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
266     {-0x1.fffffcp-1023,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
267     {-0x1.fffffcp-1023,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
268     {-0x1.fffffcp-1023,0x1p+0,-1,-1,-1,-1,-1,-1,0},
269     {-0x1.fffffcp-1023,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
270     {-0x1.fffffcp-1023,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
271     {-0x1.fffffcp-1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
272     {-0x1p-1074,__builtin_nan(""),1,-1,-1,1,1,1,1},
273     {-0x1p-1074,-__builtin_inf(),1,1,1,1,1,1,0},
274     {-0x1p-1074,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
275     {-0x1p-1074,-0x1p+1,1,1,1,1,1,1,0},
276     {-0x1p-1074,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
277     {-0x1p-1074,-0x1p-1022,1,1,1,1,1,1,0},
278     {-0x1p-1074,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
279     {-0x1p-1074,-0x1p-1074,0,0,0,0,0,0,0},
280     {-0x1p-1074,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
281     {-0x1p-1074,0x0p+0,-1,-1,-1,-1,-1,-1,0},
282     {-0x1p-1074,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
283     {-0x1p-1074,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
284     {-0x1p-1074,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
285     {-0x1p-1074,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
286     {-0x1p-1074,0x1p+0,-1,-1,-1,-1,-1,-1,0},
287     {-0x1p-1074,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
288     {-0x1p-1074,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
289     {-0x1p-1074,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
290     {-0x0p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
291     {-0x0p+0,-__builtin_inf(),1,1,1,1,1,1,0},
292     {-0x0p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
293     {-0x0p+0,-0x1p+1,1,1,1,1,1,1,0},
294     {-0x0p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
295     {-0x0p+0,-0x1p-1022,1,1,1,1,1,1,0},
296     {-0x0p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
297     {-0x0p+0,-0x1p-1074,1,1,1,1,1,1,0},
298     {-0x0p+0,-0x0p+0,0,0,0,0,0,0,0},
299     {-0x0p+0,0x0p+0,0,0,0,0,0,0,0},
300     {-0x0p+0,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
301     {-0x0p+0,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
302     {-0x0p+0,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
303     {-0x0p+0,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
304     {-0x0p+0,0x1p+0,-1,-1,-1,-1,-1,-1,0},
305     {-0x0p+0,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
306     {-0x0p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
307     {-0x0p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
308     {0x0p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
309     {0x0p+0,-__builtin_inf(),1,1,1,1,1,1,0},
310     {0x0p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
311     {0x0p+0,-0x1p+1,1,1,1,1,1,1,0},
312     {0x0p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
313     {0x0p+0,-0x1p-1022,1,1,1,1,1,1,0},
314     {0x0p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
315     {0x0p+0,-0x1p-1074,1,1,1,1,1,1,0},
316     {0x0p+0,-0x0p+0,0,0,0,0,0,0,0},
317     {0x0p+0,0x0p+0,0,0,0,0,0,0,0},
318     {0x0p+0,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
319     {0x0p+0,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
320     {0x0p+0,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
321     {0x0p+0,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
322     {0x0p+0,0x1p+0,-1,-1,-1,-1,-1,-1,0},
323     {0x0p+0,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
324     {0x0p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
325     {0x0p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
326     {0x1p-1074,__builtin_nan(""),1,-1,-1,1,1,1,1},
327     {0x1p-1074,-__builtin_inf(),1,1,1,1,1,1,0},
328     {0x1p-1074,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
329     {0x1p-1074,-0x1p+1,1,1,1,1,1,1,0},
330     {0x1p-1074,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
331     {0x1p-1074,-0x1p-1022,1,1,1,1,1,1,0},
332     {0x1p-1074,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
333     {0x1p-1074,-0x1p-1074,1,1,1,1,1,1,0},
334     {0x1p-1074,-0x0p+0,1,1,1,1,1,1,0},
335     {0x1p-1074,0x0p+0,1,1,1,1,1,1,0},
336     {0x1p-1074,0x1p-1074,0,0,0,0,0,0,0},
337     {0x1p-1074,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
338     {0x1p-1074,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
339     {0x1p-1074,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
340     {0x1p-1074,0x1p+0,-1,-1,-1,-1,-1,-1,0},
341     {0x1p-1074,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
342     {0x1p-1074,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
343     {0x1p-1074,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
344     {0x1.fffffcp-1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
345     {0x1.fffffcp-1023,-__builtin_inf(),1,1,1,1,1,1,0},
346     {0x1.fffffcp-1023,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
347     {0x1.fffffcp-1023,-0x1p+1,1,1,1,1,1,1,0},
348     {0x1.fffffcp-1023,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
349     {0x1.fffffcp-1023,-0x1p-1022,1,1,1,1,1,1,0},
350     {0x1.fffffcp-1023,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
351     {0x1.fffffcp-1023,-0x1p-1074,1,1,1,1,1,1,0},
352     {0x1.fffffcp-1023,-0x0p+0,1,1,1,1,1,1,0},
353     {0x1.fffffcp-1023,0x0p+0,1,1,1,1,1,1,0},
354     {0x1.fffffcp-1023,0x1p-1074,1,1,1,1,1,1,0},
355     {0x1.fffffcp-1023,0x1.fffffcp-1023,0,0,0,0,0,0,0},
356     {0x1.fffffcp-1023,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
357     {0x1.fffffcp-1023,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
358     {0x1.fffffcp-1023,0x1p+0,-1,-1,-1,-1,-1,-1,0},
359     {0x1.fffffcp-1023,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
360     {0x1.fffffcp-1023,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
361     {0x1.fffffcp-1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
362     {0x1p-1022,__builtin_nan(""),1,-1,-1,1,1,1,1},
363     {0x1p-1022,-__builtin_inf(),1,1,1,1,1,1,0},
364     {0x1p-1022,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
365     {0x1p-1022,-0x1p+1,1,1,1,1,1,1,0},
366     {0x1p-1022,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
367     {0x1p-1022,-0x1p-1022,1,1,1,1,1,1,0},
368     {0x1p-1022,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
369     {0x1p-1022,-0x1p-1074,1,1,1,1,1,1,0},
370     {0x1p-1022,-0x0p+0,1,1,1,1,1,1,0},
371     {0x1p-1022,0x0p+0,1,1,1,1,1,1,0},
372     {0x1p-1022,0x1p-1074,1,1,1,1,1,1,0},
373     {0x1p-1022,0x1.fffffcp-1023,1,1,1,1,1,1,0},
374     {0x1p-1022,0x1p-1022,0,0,0,0,0,0,0},
375     {0x1p-1022,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
376     {0x1p-1022,0x1p+0,-1,-1,-1,-1,-1,-1,0},
377     {0x1p-1022,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
378     {0x1p-1022,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
379     {0x1p-1022,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
380     {0x1.fffffffffffffp-1,__builtin_nan(""),1,-1,-1,1,1,1,1},
381     {0x1.fffffffffffffp-1,-__builtin_inf(),1,1,1,1,1,1,0},
382     {0x1.fffffffffffffp-1,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
383     {0x1.fffffffffffffp-1,-0x1p+1,1,1,1,1,1,1,0},
384     {0x1.fffffffffffffp-1,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
385     {0x1.fffffffffffffp-1,-0x1p-1022,1,1,1,1,1,1,0},
386     {0x1.fffffffffffffp-1,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
387     {0x1.fffffffffffffp-1,-0x1p-1074,1,1,1,1,1,1,0},
388     {0x1.fffffffffffffp-1,-0x0p+0,1,1,1,1,1,1,0},
389     {0x1.fffffffffffffp-1,0x0p+0,1,1,1,1,1,1,0},
390     {0x1.fffffffffffffp-1,0x1p-1074,1,1,1,1,1,1,0},
391     {0x1.fffffffffffffp-1,0x1.fffffcp-1023,1,1,1,1,1,1,0},
392     {0x1.fffffffffffffp-1,0x1p-1022,1,1,1,1,1,1,0},
393     {0x1.fffffffffffffp-1,0x1.fffffffffffffp-1,0,0,0,0,0,0,0},
394     {0x1.fffffffffffffp-1,0x1p+0,-1,-1,-1,-1,-1,-1,0},
395     {0x1.fffffffffffffp-1,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
396     {0x1.fffffffffffffp-1,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
397     {0x1.fffffffffffffp-1,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
398     {0x1p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
399     {0x1p+0,-__builtin_inf(),1,1,1,1,1,1,0},
400     {0x1p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
401     {0x1p+0,-0x1p+1,1,1,1,1,1,1,0},
402     {0x1p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
403     {0x1p+0,-0x1p-1022,1,1,1,1,1,1,0},
404     {0x1p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
405     {0x1p+0,-0x1p-1074,1,1,1,1,1,1,0},
406     {0x1p+0,-0x0p+0,1,1,1,1,1,1,0},
407     {0x1p+0,0x0p+0,1,1,1,1,1,1,0},
408     {0x1p+0,0x1p-1074,1,1,1,1,1,1,0},
409     {0x1p+0,0x1.fffffcp-1023,1,1,1,1,1,1,0},
410     {0x1p+0,0x1p-1022,1,1,1,1,1,1,0},
411     {0x1p+0,0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
412     {0x1p+0,0x1p+0,0,0,0,0,0,0,0},
413     {0x1p+0,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
414     {0x1p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
415     {0x1p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
416     {0x1.0000000000001p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
417     {0x1.0000000000001p+0,-__builtin_inf(),1,1,1,1,1,1,0},
418     {0x1.0000000000001p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
419     {0x1.0000000000001p+0,-0x1p+1,1,1,1,1,1,1,0},
420     {0x1.0000000000001p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
421     {0x1.0000000000001p+0,-0x1p-1022,1,1,1,1,1,1,0},
422     {0x1.0000000000001p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
423     {0x1.0000000000001p+0,-0x1p-1074,1,1,1,1,1,1,0},
424     {0x1.0000000000001p+0,-0x0p+0,1,1,1,1,1,1,0},
425     {0x1.0000000000001p+0,0x0p+0,1,1,1,1,1,1,0},
426     {0x1.0000000000001p+0,0x1p-1074,1,1,1,1,1,1,0},
427     {0x1.0000000000001p+0,0x1.fffffcp-1023,1,1,1,1,1,1,0},
428     {0x1.0000000000001p+0,0x1p-1022,1,1,1,1,1,1,0},
429     {0x1.0000000000001p+0,0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
430     {0x1.0000000000001p+0,0x1p+0,1,1,1,1,1,1,0},
431     {0x1.0000000000001p+0,0x1.0000000000001p+0,0,0,0,0,0,0,0},
432     {0x1.0000000000001p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
433     {0x1.0000000000001p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
434     {0x1.fffffffffffffp+1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
435     {0x1.fffffffffffffp+1023,-__builtin_inf(),1,1,1,1,1,1,0},
436     {0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
437     {0x1.fffffffffffffp+1023,-0x1p+1,1,1,1,1,1,1,0},
438     {0x1.fffffffffffffp+1023,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
439     {0x1.fffffffffffffp+1023,-0x1p-1022,1,1,1,1,1,1,0},
440     {0x1.fffffffffffffp+1023,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
441     {0x1.fffffffffffffp+1023,-0x1p-1074,1,1,1,1,1,1,0},
442     {0x1.fffffffffffffp+1023,-0x0p+0,1,1,1,1,1,1,0},
443     {0x1.fffffffffffffp+1023,0x0p+0,1,1,1,1,1,1,0},
444     {0x1.fffffffffffffp+1023,0x1p-1074,1,1,1,1,1,1,0},
445     {0x1.fffffffffffffp+1023,0x1.fffffcp-1023,1,1,1,1,1,1,0},
446     {0x1.fffffffffffffp+1023,0x1p-1022,1,1,1,1,1,1,0},
447     {0x1.fffffffffffffp+1023,0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
448     {0x1.fffffffffffffp+1023,0x1p+0,1,1,1,1,1,1,0},
449     {0x1.fffffffffffffp+1023,0x1.0000000000001p+0,1,1,1,1,1,1,0},
450     {0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023,0,0,0,0,0,0,0},
451     {0x1.fffffffffffffp+1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
452     {__builtin_inf(),__builtin_nan(""),1,-1,-1,1,1,1,1},
453     {__builtin_inf(),-__builtin_inf(),1,1,1,1,1,1,0},
454     {__builtin_inf(),-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
455     {__builtin_inf(),-0x1p+1,1,1,1,1,1,1,0},
456     {__builtin_inf(),-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
457     {__builtin_inf(),-0x1p-1022,1,1,1,1,1,1,0},
458     {__builtin_inf(),-0x1.fffffcp-1023,1,1,1,1,1,1,0},
459     {__builtin_inf(),-0x1p-1074,1,1,1,1,1,1,0},
460     {__builtin_inf(),-0x0p+0,1,1,1,1,1,1,0},
461     {__builtin_inf(),0x0p+0,1,1,1,1,1,1,0},
462     {__builtin_inf(),0x1p-1074,1,1,1,1,1,1,0},
463     {__builtin_inf(),0x1.fffffcp-1023,1,1,1,1,1,1,0},
464     {__builtin_inf(),0x1p-1022,1,1,1,1,1,1,0},
465     {__builtin_inf(),0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
466     {__builtin_inf(),0x1p+0,1,1,1,1,1,1,0},
467     {__builtin_inf(),0x1.0000000000001p+0,1,1,1,1,1,1,0},
468     {__builtin_inf(),0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
469     {__builtin_inf(),__builtin_inf(),0,0,0,0,0,0,0},
470 };
471 
472 int main(int argc, char *argv[]) {
473     const int numVectors = sizeof vectors / sizeof vectors[0];
474     int i;
475     for (i = 0; i<numVectors; ++i) {
476         if (test__cmpdf2(&vectors[i])) return 1;
477     }
478     return 0;
479 }
480