Home | History | Annotate | Download | only in Unit
      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