Home | History | Annotate | Line # | Download | only in testfloat
testCases.c revision 1.1
      1 
      2 /*
      3 ===============================================================================
      4 
      5 This C source file is part of TestFloat, Release 2a, a package of programs
      6 for testing the correctness of floating-point arithmetic complying to the
      7 IEC/IEEE Standard for Floating-Point.
      8 
      9 Written by John R. Hauser.  More information is available through the Web
     10 page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
     11 
     12 THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable effort
     13 has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
     14 TIMES RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS RESTRICTED TO
     15 PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
     16 AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
     17 
     18 Derivative works are acceptable, even for commercial purposes, so long as
     19 (1) they include prominent notice that the work is derivative, and (2) they
     20 include prominent notice akin to these four paragraphs for those parts of
     21 this code that are retained.
     22 
     23 ===============================================================================
     24 */
     25 
     26 #include "milieu.h"
     27 #include "fail.h"
     28 #include "random.h"
     29 #include "softfloat.h"
     30 #include "testCases.h"
     31 
     32 typedef struct {
     33     int16 expNum, term1Num, term2Num;
     34     flag done;
     35 } sequenceT;
     36 
     37 enum {
     38     int32NumP1 = 124
     39 };
     40 
     41 static const uint32 int32P1[ int32NumP1 ] = {
     42     0x00000000,
     43     0x00000001,
     44     0x00000002,
     45     0x00000004,
     46     0x00000008,
     47     0x00000010,
     48     0x00000020,
     49     0x00000040,
     50     0x00000080,
     51     0x00000100,
     52     0x00000200,
     53     0x00000400,
     54     0x00000800,
     55     0x00001000,
     56     0x00002000,
     57     0x00004000,
     58     0x00008000,
     59     0x00010000,
     60     0x00020000,
     61     0x00040000,
     62     0x00080000,
     63     0x00100000,
     64     0x00200000,
     65     0x00400000,
     66     0x00800000,
     67     0x01000000,
     68     0x02000000,
     69     0x04000000,
     70     0x08000000,
     71     0x10000000,
     72     0x20000000,
     73     0x40000000,
     74     0x80000000,
     75     0xC0000000,
     76     0xE0000000,
     77     0xF0000000,
     78     0xF8000000,
     79     0xFC000000,
     80     0xFE000000,
     81     0xFF000000,
     82     0xFF800000,
     83     0xFFC00000,
     84     0xFFE00000,
     85     0xFFF00000,
     86     0xFFF80000,
     87     0xFFFC0000,
     88     0xFFFE0000,
     89     0xFFFF0000,
     90     0xFFFF8000,
     91     0xFFFFC000,
     92     0xFFFFE000,
     93     0xFFFFF000,
     94     0xFFFFF800,
     95     0xFFFFFC00,
     96     0xFFFFFE00,
     97     0xFFFFFF00,
     98     0xFFFFFF80,
     99     0xFFFFFFC0,
    100     0xFFFFFFE0,
    101     0xFFFFFFF0,
    102     0xFFFFFFF8,
    103     0xFFFFFFFC,
    104     0xFFFFFFFE,
    105     0xFFFFFFFF,
    106     0xFFFFFFFD,
    107     0xFFFFFFFB,
    108     0xFFFFFFF7,
    109     0xFFFFFFEF,
    110     0xFFFFFFDF,
    111     0xFFFFFFBF,
    112     0xFFFFFF7F,
    113     0xFFFFFEFF,
    114     0xFFFFFDFF,
    115     0xFFFFFBFF,
    116     0xFFFFF7FF,
    117     0xFFFFEFFF,
    118     0xFFFFDFFF,
    119     0xFFFFBFFF,
    120     0xFFFF7FFF,
    121     0xFFFEFFFF,
    122     0xFFFDFFFF,
    123     0xFFFBFFFF,
    124     0xFFF7FFFF,
    125     0xFFEFFFFF,
    126     0xFFDFFFFF,
    127     0xFFBFFFFF,
    128     0xFF7FFFFF,
    129     0xFEFFFFFF,
    130     0xFDFFFFFF,
    131     0xFBFFFFFF,
    132     0xF7FFFFFF,
    133     0xEFFFFFFF,
    134     0xDFFFFFFF,
    135     0xBFFFFFFF,
    136     0x7FFFFFFF,
    137     0x3FFFFFFF,
    138     0x1FFFFFFF,
    139     0x0FFFFFFF,
    140     0x07FFFFFF,
    141     0x03FFFFFF,
    142     0x01FFFFFF,
    143     0x00FFFFFF,
    144     0x007FFFFF,
    145     0x003FFFFF,
    146     0x001FFFFF,
    147     0x000FFFFF,
    148     0x0007FFFF,
    149     0x0003FFFF,
    150     0x0001FFFF,
    151     0x0000FFFF,
    152     0x00007FFF,
    153     0x00003FFF,
    154     0x00001FFF,
    155     0x00000FFF,
    156     0x000007FF,
    157     0x000003FF,
    158     0x000001FF,
    159     0x000000FF,
    160     0x0000007F,
    161     0x0000003F,
    162     0x0000001F,
    163     0x0000000F,
    164     0x00000007,
    165     0x00000003
    166 };
    167 
    168 static int32 int32NextP1( sequenceT *sequencePtr )
    169 {
    170     uint8 termNum;
    171     int32 z;
    172 
    173     termNum = sequencePtr->term1Num;
    174     z = int32P1[ termNum ];
    175     ++termNum;
    176     if ( int32NumP1 <= termNum ) {
    177         termNum = 0;
    178         sequencePtr->done = TRUE;
    179     }
    180     sequencePtr->term1Num = termNum;
    181     return (sbits32) z;
    182 
    183 }
    184 
    185 static const int32 int32NumP2 = ( int32NumP1 * int32NumP1 + int32NumP1 ) / 2;
    186 
    187 static int32 int32NextP2( sequenceT *sequencePtr )
    188 {
    189     uint8 term1Num, term2Num;
    190     int32 z;
    191 
    192     term2Num = sequencePtr->term2Num;
    193     term1Num = sequencePtr->term1Num;
    194     z = int32P1[ term1Num ] + int32P1[ term2Num ];
    195     ++term2Num;
    196     if ( int32NumP1 <= term2Num ) {
    197         ++term1Num;
    198         if ( int32NumP1 <= term1Num ) {
    199             term1Num = 0;
    200             sequencePtr->done = TRUE;
    201         }
    202         term2Num = term1Num;
    203         sequencePtr->term1Num = term1Num;
    204     }
    205     sequencePtr->term2Num = term2Num;
    206     return (sbits32) z;
    207 
    208 }
    209 
    210 static int32 int32RandomP3( void )
    211 {
    212 
    213     return
    214         (sbits32) (
    215               int32P1[ randomUint8() % int32NumP1 ]
    216             + int32P1[ randomUint8() % int32NumP1 ]
    217             + int32P1[ randomUint8() % int32NumP1 ]
    218         );
    219 
    220 }
    221 
    222 enum {
    223     int32NumPInfWeightMasks = 29
    224 };
    225 
    226 static const uint32 int32PInfWeightMasks[ int32NumPInfWeightMasks ] = {
    227     0xFFFFFFFF,
    228     0x7FFFFFFF,
    229     0x3FFFFFFF,
    230     0x1FFFFFFF,
    231     0x0FFFFFFF,
    232     0x07FFFFFF,
    233     0x03FFFFFF,
    234     0x01FFFFFF,
    235     0x00FFFFFF,
    236     0x007FFFFF,
    237     0x003FFFFF,
    238     0x001FFFFF,
    239     0x000FFFFF,
    240     0x0007FFFF,
    241     0x0003FFFF,
    242     0x0001FFFF,
    243     0x0000FFFF,
    244     0x00007FFF,
    245     0x00003FFF,
    246     0x00001FFF,
    247     0x00000FFF,
    248     0x000007FF,
    249     0x000003FF,
    250     0x000001FF,
    251     0x000000FF,
    252     0x0000007F,
    253     0x0000003F,
    254     0x0000001F,
    255     0x0000000F
    256 };
    257 
    258 static const uint32 int32PInfWeightOffsets[ int32NumPInfWeightMasks ] = {
    259     0x00000000,
    260     0xC0000000,
    261     0xE0000000,
    262     0xF0000000,
    263     0xF8000000,
    264     0xFC000000,
    265     0xFE000000,
    266     0xFF000000,
    267     0xFF800000,
    268     0xFFC00000,
    269     0xFFE00000,
    270     0xFFF00000,
    271     0xFFF80000,
    272     0xFFFC0000,
    273     0xFFFE0000,
    274     0xFFFF0000,
    275     0xFFFF8000,
    276     0xFFFFC000,
    277     0xFFFFE000,
    278     0xFFFFF000,
    279     0xFFFFF800,
    280     0xFFFFFC00,
    281     0xFFFFFE00,
    282     0xFFFFFF00,
    283     0xFFFFFF80,
    284     0xFFFFFFC0,
    285     0xFFFFFFE0,
    286     0xFFFFFFF0,
    287     0xFFFFFFF8
    288 };
    289 
    290 static int32 int32RandomPInf( void )
    291 {
    292     int8 weightMaskNum;
    293 
    294     weightMaskNum = randomUint8() % int32NumPInfWeightMasks;
    295     return
    296         (sbits32) (
    297               ( randomUint32() & int32PInfWeightMasks[ weightMaskNum ] )
    298             + int32PInfWeightOffsets[ weightMaskNum ]
    299         );
    300 
    301 }
    302 
    303 #ifdef BITS64
    304 
    305 enum {
    306     int64NumP1 = 252
    307 };
    308 
    309 static const uint64 int64P1[ int64NumP1 ] = {
    310     LIT64( 0x0000000000000000 ),
    311     LIT64( 0x0000000000000001 ),
    312     LIT64( 0x0000000000000002 ),
    313     LIT64( 0x0000000000000004 ),
    314     LIT64( 0x0000000000000008 ),
    315     LIT64( 0x0000000000000010 ),
    316     LIT64( 0x0000000000000020 ),
    317     LIT64( 0x0000000000000040 ),
    318     LIT64( 0x0000000000000080 ),
    319     LIT64( 0x0000000000000100 ),
    320     LIT64( 0x0000000000000200 ),
    321     LIT64( 0x0000000000000400 ),
    322     LIT64( 0x0000000000000800 ),
    323     LIT64( 0x0000000000001000 ),
    324     LIT64( 0x0000000000002000 ),
    325     LIT64( 0x0000000000004000 ),
    326     LIT64( 0x0000000000008000 ),
    327     LIT64( 0x0000000000010000 ),
    328     LIT64( 0x0000000000020000 ),
    329     LIT64( 0x0000000000040000 ),
    330     LIT64( 0x0000000000080000 ),
    331     LIT64( 0x0000000000100000 ),
    332     LIT64( 0x0000000000200000 ),
    333     LIT64( 0x0000000000400000 ),
    334     LIT64( 0x0000000000800000 ),
    335     LIT64( 0x0000000001000000 ),
    336     LIT64( 0x0000000002000000 ),
    337     LIT64( 0x0000000004000000 ),
    338     LIT64( 0x0000000008000000 ),
    339     LIT64( 0x0000000010000000 ),
    340     LIT64( 0x0000000020000000 ),
    341     LIT64( 0x0000000040000000 ),
    342     LIT64( 0x0000000080000000 ),
    343     LIT64( 0x0000000100000000 ),
    344     LIT64( 0x0000000200000000 ),
    345     LIT64( 0x0000000400000000 ),
    346     LIT64( 0x0000000800000000 ),
    347     LIT64( 0x0000001000000000 ),
    348     LIT64( 0x0000002000000000 ),
    349     LIT64( 0x0000004000000000 ),
    350     LIT64( 0x0000008000000000 ),
    351     LIT64( 0x0000010000000000 ),
    352     LIT64( 0x0000020000000000 ),
    353     LIT64( 0x0000040000000000 ),
    354     LIT64( 0x0000080000000000 ),
    355     LIT64( 0x0000100000000000 ),
    356     LIT64( 0x0000200000000000 ),
    357     LIT64( 0x0000400000000000 ),
    358     LIT64( 0x0000800000000000 ),
    359     LIT64( 0x0001000000000000 ),
    360     LIT64( 0x0002000000000000 ),
    361     LIT64( 0x0004000000000000 ),
    362     LIT64( 0x0008000000000000 ),
    363     LIT64( 0x0010000000000000 ),
    364     LIT64( 0x0020000000000000 ),
    365     LIT64( 0x0040000000000000 ),
    366     LIT64( 0x0080000000000000 ),
    367     LIT64( 0x0100000000000000 ),
    368     LIT64( 0x0200000000000000 ),
    369     LIT64( 0x0400000000000000 ),
    370     LIT64( 0x0800000000000000 ),
    371     LIT64( 0x1000000000000000 ),
    372     LIT64( 0x2000000000000000 ),
    373     LIT64( 0x4000000000000000 ),
    374     LIT64( 0x8000000000000000 ),
    375     LIT64( 0xC000000000000000 ),
    376     LIT64( 0xE000000000000000 ),
    377     LIT64( 0xF000000000000000 ),
    378     LIT64( 0xF800000000000000 ),
    379     LIT64( 0xFC00000000000000 ),
    380     LIT64( 0xFE00000000000000 ),
    381     LIT64( 0xFF00000000000000 ),
    382     LIT64( 0xFF80000000000000 ),
    383     LIT64( 0xFFC0000000000000 ),
    384     LIT64( 0xFFE0000000000000 ),
    385     LIT64( 0xFFF0000000000000 ),
    386     LIT64( 0xFFF8000000000000 ),
    387     LIT64( 0xFFFC000000000000 ),
    388     LIT64( 0xFFFE000000000000 ),
    389     LIT64( 0xFFFF000000000000 ),
    390     LIT64( 0xFFFF800000000000 ),
    391     LIT64( 0xFFFFC00000000000 ),
    392     LIT64( 0xFFFFE00000000000 ),
    393     LIT64( 0xFFFFF00000000000 ),
    394     LIT64( 0xFFFFF80000000000 ),
    395     LIT64( 0xFFFFFC0000000000 ),
    396     LIT64( 0xFFFFFE0000000000 ),
    397     LIT64( 0xFFFFFF0000000000 ),
    398     LIT64( 0xFFFFFF8000000000 ),
    399     LIT64( 0xFFFFFFC000000000 ),
    400     LIT64( 0xFFFFFFE000000000 ),
    401     LIT64( 0xFFFFFFF000000000 ),
    402     LIT64( 0xFFFFFFF800000000 ),
    403     LIT64( 0xFFFFFFFC00000000 ),
    404     LIT64( 0xFFFFFFFE00000000 ),
    405     LIT64( 0xFFFFFFFF00000000 ),
    406     LIT64( 0xFFFFFFFF80000000 ),
    407     LIT64( 0xFFFFFFFFC0000000 ),
    408     LIT64( 0xFFFFFFFFE0000000 ),
    409     LIT64( 0xFFFFFFFFF0000000 ),
    410     LIT64( 0xFFFFFFFFF8000000 ),
    411     LIT64( 0xFFFFFFFFFC000000 ),
    412     LIT64( 0xFFFFFFFFFE000000 ),
    413     LIT64( 0xFFFFFFFFFF000000 ),
    414     LIT64( 0xFFFFFFFFFF800000 ),
    415     LIT64( 0xFFFFFFFFFFC00000 ),
    416     LIT64( 0xFFFFFFFFFFE00000 ),
    417     LIT64( 0xFFFFFFFFFFF00000 ),
    418     LIT64( 0xFFFFFFFFFFF80000 ),
    419     LIT64( 0xFFFFFFFFFFFC0000 ),
    420     LIT64( 0xFFFFFFFFFFFE0000 ),
    421     LIT64( 0xFFFFFFFFFFFF0000 ),
    422     LIT64( 0xFFFFFFFFFFFF8000 ),
    423     LIT64( 0xFFFFFFFFFFFFC000 ),
    424     LIT64( 0xFFFFFFFFFFFFE000 ),
    425     LIT64( 0xFFFFFFFFFFFFF000 ),
    426     LIT64( 0xFFFFFFFFFFFFF800 ),
    427     LIT64( 0xFFFFFFFFFFFFFC00 ),
    428     LIT64( 0xFFFFFFFFFFFFFE00 ),
    429     LIT64( 0xFFFFFFFFFFFFFF00 ),
    430     LIT64( 0xFFFFFFFFFFFFFF80 ),
    431     LIT64( 0xFFFFFFFFFFFFFFC0 ),
    432     LIT64( 0xFFFFFFFFFFFFFFE0 ),
    433     LIT64( 0xFFFFFFFFFFFFFFF0 ),
    434     LIT64( 0xFFFFFFFFFFFFFFF8 ),
    435     LIT64( 0xFFFFFFFFFFFFFFFC ),
    436     LIT64( 0xFFFFFFFFFFFFFFFE ),
    437     LIT64( 0xFFFFFFFFFFFFFFFF ),
    438     LIT64( 0xFFFFFFFFFFFFFFFD ),
    439     LIT64( 0xFFFFFFFFFFFFFFFB ),
    440     LIT64( 0xFFFFFFFFFFFFFFF7 ),
    441     LIT64( 0xFFFFFFFFFFFFFFEF ),
    442     LIT64( 0xFFFFFFFFFFFFFFDF ),
    443     LIT64( 0xFFFFFFFFFFFFFFBF ),
    444     LIT64( 0xFFFFFFFFFFFFFF7F ),
    445     LIT64( 0xFFFFFFFFFFFFFEFF ),
    446     LIT64( 0xFFFFFFFFFFFFFDFF ),
    447     LIT64( 0xFFFFFFFFFFFFFBFF ),
    448     LIT64( 0xFFFFFFFFFFFFF7FF ),
    449     LIT64( 0xFFFFFFFFFFFFEFFF ),
    450     LIT64( 0xFFFFFFFFFFFFDFFF ),
    451     LIT64( 0xFFFFFFFFFFFFBFFF ),
    452     LIT64( 0xFFFFFFFFFFFF7FFF ),
    453     LIT64( 0xFFFFFFFFFFFEFFFF ),
    454     LIT64( 0xFFFFFFFFFFFDFFFF ),
    455     LIT64( 0xFFFFFFFFFFFBFFFF ),
    456     LIT64( 0xFFFFFFFFFFF7FFFF ),
    457     LIT64( 0xFFFFFFFFFFEFFFFF ),
    458     LIT64( 0xFFFFFFFFFFDFFFFF ),
    459     LIT64( 0xFFFFFFFFFFBFFFFF ),
    460     LIT64( 0xFFFFFFFFFF7FFFFF ),
    461     LIT64( 0xFFFFFFFFFEFFFFFF ),
    462     LIT64( 0xFFFFFFFFFDFFFFFF ),
    463     LIT64( 0xFFFFFFFFFBFFFFFF ),
    464     LIT64( 0xFFFFFFFFF7FFFFFF ),
    465     LIT64( 0xFFFFFFFFEFFFFFFF ),
    466     LIT64( 0xFFFFFFFFDFFFFFFF ),
    467     LIT64( 0xFFFFFFFFBFFFFFFF ),
    468     LIT64( 0xFFFFFFFF7FFFFFFF ),
    469     LIT64( 0xFFFFFFFEFFFFFFFF ),
    470     LIT64( 0xFFFFFFFDFFFFFFFF ),
    471     LIT64( 0xFFFFFFFBFFFFFFFF ),
    472     LIT64( 0xFFFFFFF7FFFFFFFF ),
    473     LIT64( 0xFFFFFFEFFFFFFFFF ),
    474     LIT64( 0xFFFFFFDFFFFFFFFF ),
    475     LIT64( 0xFFFFFFBFFFFFFFFF ),
    476     LIT64( 0xFFFFFF7FFFFFFFFF ),
    477     LIT64( 0xFFFFFEFFFFFFFFFF ),
    478     LIT64( 0xFFFFFDFFFFFFFFFF ),
    479     LIT64( 0xFFFFFBFFFFFFFFFF ),
    480     LIT64( 0xFFFFF7FFFFFFFFFF ),
    481     LIT64( 0xFFFFEFFFFFFFFFFF ),
    482     LIT64( 0xFFFFDFFFFFFFFFFF ),
    483     LIT64( 0xFFFFBFFFFFFFFFFF ),
    484     LIT64( 0xFFFF7FFFFFFFFFFF ),
    485     LIT64( 0xFFFEFFFFFFFFFFFF ),
    486     LIT64( 0xFFFDFFFFFFFFFFFF ),
    487     LIT64( 0xFFFBFFFFFFFFFFFF ),
    488     LIT64( 0xFFF7FFFFFFFFFFFF ),
    489     LIT64( 0xFFEFFFFFFFFFFFFF ),
    490     LIT64( 0xFFDFFFFFFFFFFFFF ),
    491     LIT64( 0xFFBFFFFFFFFFFFFF ),
    492     LIT64( 0xFF7FFFFFFFFFFFFF ),
    493     LIT64( 0xFEFFFFFFFFFFFFFF ),
    494     LIT64( 0xFDFFFFFFFFFFFFFF ),
    495     LIT64( 0xFBFFFFFFFFFFFFFF ),
    496     LIT64( 0xF7FFFFFFFFFFFFFF ),
    497     LIT64( 0xEFFFFFFFFFFFFFFF ),
    498     LIT64( 0xDFFFFFFFFFFFFFFF ),
    499     LIT64( 0xBFFFFFFFFFFFFFFF ),
    500     LIT64( 0x7FFFFFFFFFFFFFFF ),
    501     LIT64( 0x3FFFFFFFFFFFFFFF ),
    502     LIT64( 0x1FFFFFFFFFFFFFFF ),
    503     LIT64( 0x0FFFFFFFFFFFFFFF ),
    504     LIT64( 0x07FFFFFFFFFFFFFF ),
    505     LIT64( 0x03FFFFFFFFFFFFFF ),
    506     LIT64( 0x01FFFFFFFFFFFFFF ),
    507     LIT64( 0x00FFFFFFFFFFFFFF ),
    508     LIT64( 0x007FFFFFFFFFFFFF ),
    509     LIT64( 0x003FFFFFFFFFFFFF ),
    510     LIT64( 0x001FFFFFFFFFFFFF ),
    511     LIT64( 0x000FFFFFFFFFFFFF ),
    512     LIT64( 0x0007FFFFFFFFFFFF ),
    513     LIT64( 0x0003FFFFFFFFFFFF ),
    514     LIT64( 0x0001FFFFFFFFFFFF ),
    515     LIT64( 0x0000FFFFFFFFFFFF ),
    516     LIT64( 0x00007FFFFFFFFFFF ),
    517     LIT64( 0x00003FFFFFFFFFFF ),
    518     LIT64( 0x00001FFFFFFFFFFF ),
    519     LIT64( 0x00000FFFFFFFFFFF ),
    520     LIT64( 0x000007FFFFFFFFFF ),
    521     LIT64( 0x000003FFFFFFFFFF ),
    522     LIT64( 0x000001FFFFFFFFFF ),
    523     LIT64( 0x000000FFFFFFFFFF ),
    524     LIT64( 0x0000007FFFFFFFFF ),
    525     LIT64( 0x0000003FFFFFFFFF ),
    526     LIT64( 0x0000001FFFFFFFFF ),
    527     LIT64( 0x0000000FFFFFFFFF ),
    528     LIT64( 0x00000007FFFFFFFF ),
    529     LIT64( 0x00000003FFFFFFFF ),
    530     LIT64( 0x00000001FFFFFFFF ),
    531     LIT64( 0x00000000FFFFFFFF ),
    532     LIT64( 0x000000007FFFFFFF ),
    533     LIT64( 0x000000003FFFFFFF ),
    534     LIT64( 0x000000001FFFFFFF ),
    535     LIT64( 0x000000000FFFFFFF ),
    536     LIT64( 0x0000000007FFFFFF ),
    537     LIT64( 0x0000000003FFFFFF ),
    538     LIT64( 0x0000000001FFFFFF ),
    539     LIT64( 0x0000000000FFFFFF ),
    540     LIT64( 0x00000000007FFFFF ),
    541     LIT64( 0x00000000003FFFFF ),
    542     LIT64( 0x00000000001FFFFF ),
    543     LIT64( 0x00000000000FFFFF ),
    544     LIT64( 0x000000000007FFFF ),
    545     LIT64( 0x000000000003FFFF ),
    546     LIT64( 0x000000000001FFFF ),
    547     LIT64( 0x000000000000FFFF ),
    548     LIT64( 0x0000000000007FFF ),
    549     LIT64( 0x0000000000003FFF ),
    550     LIT64( 0x0000000000001FFF ),
    551     LIT64( 0x0000000000000FFF ),
    552     LIT64( 0x00000000000007FF ),
    553     LIT64( 0x00000000000003FF ),
    554     LIT64( 0x00000000000001FF ),
    555     LIT64( 0x00000000000000FF ),
    556     LIT64( 0x000000000000007F ),
    557     LIT64( 0x000000000000003F ),
    558     LIT64( 0x000000000000001F ),
    559     LIT64( 0x000000000000000F ),
    560     LIT64( 0x0000000000000007 ),
    561     LIT64( 0x0000000000000003 )
    562 };
    563 
    564 static int64 int64NextP1( sequenceT *sequencePtr )
    565 {
    566     uint8 termNum;
    567     int64 z;
    568 
    569     termNum = sequencePtr->term1Num;
    570     z = int64P1[ termNum ];
    571     ++termNum;
    572     if ( int64NumP1 <= termNum ) {
    573         termNum = 0;
    574         sequencePtr->done = TRUE;
    575     }
    576     sequencePtr->term1Num = termNum;
    577     return (sbits64) z;
    578 
    579 }
    580 
    581 static const int64 int64NumP2 = ( int64NumP1 * int64NumP1 + int64NumP1 ) / 2;
    582 
    583 static int64 int64NextP2( sequenceT *sequencePtr )
    584 {
    585     uint8 term1Num, term2Num;
    586     int64 z;
    587 
    588     term2Num = sequencePtr->term2Num;
    589     term1Num = sequencePtr->term1Num;
    590     z = int64P1[ term1Num ] + int64P1[ term2Num ];
    591     ++term2Num;
    592     if ( int64NumP1 <= term2Num ) {
    593         ++term1Num;
    594         if ( int64NumP1 <= term1Num ) {
    595             term1Num = 0;
    596             sequencePtr->done = TRUE;
    597         }
    598         term2Num = term1Num;
    599         sequencePtr->term1Num = term1Num;
    600     }
    601     sequencePtr->term2Num = term2Num;
    602     return (sbits64) z;
    603 
    604 }
    605 
    606 static int64 int64RandomP3( void )
    607 {
    608 
    609     return
    610         (sbits64) (
    611               int64P1[ randomUint8() % int64NumP1 ]
    612             + int64P1[ randomUint8() % int64NumP1 ]
    613             + int64P1[ randomUint8() % int64NumP1 ]
    614         );
    615 
    616 }
    617 
    618 enum {
    619     int64NumPInfWeightMasks = 61
    620 };
    621 
    622 static const uint64 int64PInfWeightMasks[ int64NumPInfWeightMasks ] = {
    623     LIT64( 0xFFFFFFFFFFFFFFFF ),
    624     LIT64( 0x7FFFFFFFFFFFFFFF ),
    625     LIT64( 0x3FFFFFFFFFFFFFFF ),
    626     LIT64( 0x1FFFFFFFFFFFFFFF ),
    627     LIT64( 0x0FFFFFFFFFFFFFFF ),
    628     LIT64( 0x07FFFFFFFFFFFFFF ),
    629     LIT64( 0x03FFFFFFFFFFFFFF ),
    630     LIT64( 0x01FFFFFFFFFFFFFF ),
    631     LIT64( 0x00FFFFFFFFFFFFFF ),
    632     LIT64( 0x007FFFFFFFFFFFFF ),
    633     LIT64( 0x003FFFFFFFFFFFFF ),
    634     LIT64( 0x001FFFFFFFFFFFFF ),
    635     LIT64( 0x000FFFFFFFFFFFFF ),
    636     LIT64( 0x0007FFFFFFFFFFFF ),
    637     LIT64( 0x0003FFFFFFFFFFFF ),
    638     LIT64( 0x0001FFFFFFFFFFFF ),
    639     LIT64( 0x0000FFFFFFFFFFFF ),
    640     LIT64( 0x00007FFFFFFFFFFF ),
    641     LIT64( 0x00003FFFFFFFFFFF ),
    642     LIT64( 0x00001FFFFFFFFFFF ),
    643     LIT64( 0x00000FFFFFFFFFFF ),
    644     LIT64( 0x000007FFFFFFFFFF ),
    645     LIT64( 0x000003FFFFFFFFFF ),
    646     LIT64( 0x000001FFFFFFFFFF ),
    647     LIT64( 0x000000FFFFFFFFFF ),
    648     LIT64( 0x0000007FFFFFFFFF ),
    649     LIT64( 0x0000003FFFFFFFFF ),
    650     LIT64( 0x0000001FFFFFFFFF ),
    651     LIT64( 0x0000000FFFFFFFFF ),
    652     LIT64( 0x00000007FFFFFFFF ),
    653     LIT64( 0x00000003FFFFFFFF ),
    654     LIT64( 0x00000001FFFFFFFF ),
    655     LIT64( 0x00000000FFFFFFFF ),
    656     LIT64( 0x000000007FFFFFFF ),
    657     LIT64( 0x000000003FFFFFFF ),
    658     LIT64( 0x000000001FFFFFFF ),
    659     LIT64( 0x000000000FFFFFFF ),
    660     LIT64( 0x0000000007FFFFFF ),
    661     LIT64( 0x0000000003FFFFFF ),
    662     LIT64( 0x0000000001FFFFFF ),
    663     LIT64( 0x0000000000FFFFFF ),
    664     LIT64( 0x00000000007FFFFF ),
    665     LIT64( 0x00000000003FFFFF ),
    666     LIT64( 0x00000000001FFFFF ),
    667     LIT64( 0x00000000000FFFFF ),
    668     LIT64( 0x000000000007FFFF ),
    669     LIT64( 0x000000000003FFFF ),
    670     LIT64( 0x000000000001FFFF ),
    671     LIT64( 0x000000000000FFFF ),
    672     LIT64( 0x0000000000007FFF ),
    673     LIT64( 0x0000000000003FFF ),
    674     LIT64( 0x0000000000001FFF ),
    675     LIT64( 0x0000000000000FFF ),
    676     LIT64( 0x00000000000007FF ),
    677     LIT64( 0x00000000000003FF ),
    678     LIT64( 0x00000000000001FF ),
    679     LIT64( 0x00000000000000FF ),
    680     LIT64( 0x000000000000007F ),
    681     LIT64( 0x000000000000003F ),
    682     LIT64( 0x000000000000001F ),
    683     LIT64( 0x000000000000000F )
    684 };
    685 
    686 static const uint64 int64PInfWeightOffsets[ int64NumPInfWeightMasks ] = {
    687     LIT64( 0x0000000000000000 ),
    688     LIT64( 0xC000000000000000 ),
    689     LIT64( 0xE000000000000000 ),
    690     LIT64( 0xF000000000000000 ),
    691     LIT64( 0xF800000000000000 ),
    692     LIT64( 0xFC00000000000000 ),
    693     LIT64( 0xFE00000000000000 ),
    694     LIT64( 0xFF00000000000000 ),
    695     LIT64( 0xFF80000000000000 ),
    696     LIT64( 0xFFC0000000000000 ),
    697     LIT64( 0xFFE0000000000000 ),
    698     LIT64( 0xFFF0000000000000 ),
    699     LIT64( 0xFFF8000000000000 ),
    700     LIT64( 0xFFFC000000000000 ),
    701     LIT64( 0xFFFE000000000000 ),
    702     LIT64( 0xFFFF000000000000 ),
    703     LIT64( 0xFFFF800000000000 ),
    704     LIT64( 0xFFFFC00000000000 ),
    705     LIT64( 0xFFFFE00000000000 ),
    706     LIT64( 0xFFFFF00000000000 ),
    707     LIT64( 0xFFFFF80000000000 ),
    708     LIT64( 0xFFFFFC0000000000 ),
    709     LIT64( 0xFFFFFE0000000000 ),
    710     LIT64( 0xFFFFFF0000000000 ),
    711     LIT64( 0xFFFFFF8000000000 ),
    712     LIT64( 0xFFFFFFC000000000 ),
    713     LIT64( 0xFFFFFFE000000000 ),
    714     LIT64( 0xFFFFFFF000000000 ),
    715     LIT64( 0xFFFFFFF800000000 ),
    716     LIT64( 0xFFFFFFFC00000000 ),
    717     LIT64( 0xFFFFFFFE00000000 ),
    718     LIT64( 0xFFFFFFFF00000000 ),
    719     LIT64( 0xFFFFFFFF80000000 ),
    720     LIT64( 0xFFFFFFFFC0000000 ),
    721     LIT64( 0xFFFFFFFFE0000000 ),
    722     LIT64( 0xFFFFFFFFF0000000 ),
    723     LIT64( 0xFFFFFFFFF8000000 ),
    724     LIT64( 0xFFFFFFFFFC000000 ),
    725     LIT64( 0xFFFFFFFFFE000000 ),
    726     LIT64( 0xFFFFFFFFFF000000 ),
    727     LIT64( 0xFFFFFFFFFF800000 ),
    728     LIT64( 0xFFFFFFFFFFC00000 ),
    729     LIT64( 0xFFFFFFFFFFE00000 ),
    730     LIT64( 0xFFFFFFFFFFF00000 ),
    731     LIT64( 0xFFFFFFFFFFF80000 ),
    732     LIT64( 0xFFFFFFFFFFFC0000 ),
    733     LIT64( 0xFFFFFFFFFFFE0000 ),
    734     LIT64( 0xFFFFFFFFFFFF0000 ),
    735     LIT64( 0xFFFFFFFFFFFF8000 ),
    736     LIT64( 0xFFFFFFFFFFFFC000 ),
    737     LIT64( 0xFFFFFFFFFFFFE000 ),
    738     LIT64( 0xFFFFFFFFFFFFF000 ),
    739     LIT64( 0xFFFFFFFFFFFFF800 ),
    740     LIT64( 0xFFFFFFFFFFFFFC00 ),
    741     LIT64( 0xFFFFFFFFFFFFFE00 ),
    742     LIT64( 0xFFFFFFFFFFFFFF00 ),
    743     LIT64( 0xFFFFFFFFFFFFFF80 ),
    744     LIT64( 0xFFFFFFFFFFFFFFC0 ),
    745     LIT64( 0xFFFFFFFFFFFFFFE0 ),
    746     LIT64( 0xFFFFFFFFFFFFFFF0 ),
    747     LIT64( 0xFFFFFFFFFFFFFFF8 )
    748 };
    749 
    750 static int64 int64RandomPInf( void )
    751 {
    752     int8 weightMaskNum;
    753 
    754     weightMaskNum = randomUint8() % int64NumPInfWeightMasks;
    755     return
    756         (sbits64) (
    757               ( randomUint64() & int64PInfWeightMasks[ weightMaskNum ] )
    758             + int64PInfWeightOffsets[ weightMaskNum ]
    759         );
    760 
    761 }
    762 
    763 #endif
    764 
    765 enum {
    766     float32NumQIn  = 22,
    767     float32NumQOut = 50,
    768     float32NumP1   =  4,
    769     float32NumP2   = 88
    770 };
    771 
    772 static const uint32 float32QIn[ float32NumQIn ] = {
    773     0x00000000,		/* positive, subnormal		*/
    774     0x00800000,		/* positive, -126		*/
    775     0x33800000,		/* positive,  -24		*/
    776     0x3E800000,		/* positive,   -2		*/
    777     0x3F000000,		/* positive,   -1		*/
    778     0x3F800000,		/* positive,    0		*/
    779     0x40000000,		/* positive,    1		*/
    780     0x40800000,		/* positive,    2		*/
    781     0x4B800000,		/* positive,   24		*/
    782     0x7F000000,		/* positive,  127		*/
    783     0x7F800000,		/* positive, infinity or NaN	*/
    784     0x80000000,		/* negative, subnormal		*/
    785     0x80800000,		/* negative, -126		*/
    786     0xB3800000,		/* negative,  -24		*/
    787     0xBE800000,		/* negative,   -2		*/
    788     0xBF000000,		/* negative,   -1		*/
    789     0xBF800000,		/* negative,    0		*/
    790     0xC0000000,		/* negative,    1		*/
    791     0xC0800000,		/* negative,    2		*/
    792     0xCB800000,		/* negative,   24		*/
    793     0xFE800000,		/* negative,  126		*/
    794     0xFF800000		/* negative, infinity or NaN	*/
    795 };
    796 
    797 static const uint32 float32QOut[ float32NumQOut ] = {
    798     0x00000000,		/* positive, subnormal		*/
    799     0x00800000,		/* positive, -126		*/
    800     0x01000000,		/* positive, -125		*/
    801     0x33800000,		/* positive,  -24		*/
    802     0x3D800000,		/* positive,   -4		*/
    803     0x3E000000,		/* positive,   -3		*/
    804     0x3E800000,		/* positive,   -2		*/
    805     0x3F000000,		/* positive,   -1		*/
    806     0x3F800000,		/* positive,    0		*/
    807     0x40000000,		/* positive,    1		*/
    808     0x40800000,		/* positive,    2		*/
    809     0x41000000,		/* positive,    3		*/
    810     0x41800000,		/* positive,    4		*/
    811     0x4B800000,		/* positive,   24		*/
    812     0x4E000000,		/* positive,   29		*/
    813     0x4E800000,		/* positive,   30		*/
    814     0x4F000000,		/* positive,   31		*/
    815     0x4F800000,		/* positive,   32		*/
    816     0x5E000000,		/* positive,   61		*/
    817     0x5E800000,		/* positive,   62		*/
    818     0x5F000000,		/* positive,   63		*/
    819     0x5F800000,		/* positive,   64		*/
    820     0x7E800000,		/* positive,  126		*/
    821     0x7F000000,		/* positive,  127		*/
    822     0x7F800000,		/* positive, infinity or NaN	*/
    823     0x80000000,		/* negative, subnormal		*/
    824     0x80800000,		/* negative, -126		*/
    825     0x81000000,		/* negative, -125		*/
    826     0xB3800000,		/* negative,  -24		*/
    827     0xBD800000,		/* negative,   -4		*/
    828     0xBE000000,		/* negative,   -3		*/
    829     0xBE800000,		/* negative,   -2		*/
    830     0xBF000000,		/* negative,   -1		*/
    831     0xBF800000,		/* negative,    0		*/
    832     0xC0000000,		/* negative,    1		*/
    833     0xC0800000,		/* negative,    2		*/
    834     0xC1000000,		/* negative,    3		*/
    835     0xC1800000,		/* negative,    4		*/
    836     0xCB800000,		/* negative,   24		*/
    837     0xCE000000,		/* negative,   29		*/
    838     0xCE800000,		/* negative,   30		*/
    839     0xCF000000,		/* negative,   31		*/
    840     0xCF800000,		/* negative,   32		*/
    841     0xDE000000,		/* negative,   61		*/
    842     0xDE800000,		/* negative,   62		*/
    843     0xDF000000,		/* negative,   63		*/
    844     0xDF800000,		/* negative,   64		*/
    845     0xFE800000,		/* negative,  126		*/
    846     0xFF000000,		/* negative,  127		*/
    847     0xFF800000		/* negative, infinity or NaN	*/
    848 };
    849 
    850 static const uint32 float32P1[ float32NumP1 ] = {
    851     0x00000000,
    852     0x00000001,
    853     0x007FFFFF,
    854     0x007FFFFE
    855 };
    856 
    857 static const uint32 float32P2[ float32NumP2 ] = {
    858     0x00000000,
    859     0x00000001,
    860     0x00000002,
    861     0x00000004,
    862     0x00000008,
    863     0x00000010,
    864     0x00000020,
    865     0x00000040,
    866     0x00000080,
    867     0x00000100,
    868     0x00000200,
    869     0x00000400,
    870     0x00000800,
    871     0x00001000,
    872     0x00002000,
    873     0x00004000,
    874     0x00008000,
    875     0x00010000,
    876     0x00020000,
    877     0x00040000,
    878     0x00080000,
    879     0x00100000,
    880     0x00200000,
    881     0x00400000,
    882     0x00600000,
    883     0x00700000,
    884     0x00780000,
    885     0x007C0000,
    886     0x007E0000,
    887     0x007F0000,
    888     0x007F8000,
    889     0x007FC000,
    890     0x007FE000,
    891     0x007FF000,
    892     0x007FF800,
    893     0x007FFC00,
    894     0x007FFE00,
    895     0x007FFF00,
    896     0x007FFF80,
    897     0x007FFFC0,
    898     0x007FFFE0,
    899     0x007FFFF0,
    900     0x007FFFF8,
    901     0x007FFFFC,
    902     0x007FFFFE,
    903     0x007FFFFF,
    904     0x007FFFFD,
    905     0x007FFFFB,
    906     0x007FFFF7,
    907     0x007FFFEF,
    908     0x007FFFDF,
    909     0x007FFFBF,
    910     0x007FFF7F,
    911     0x007FFEFF,
    912     0x007FFDFF,
    913     0x007FFBFF,
    914     0x007FF7FF,
    915     0x007FEFFF,
    916     0x007FDFFF,
    917     0x007FBFFF,
    918     0x007F7FFF,
    919     0x007EFFFF,
    920     0x007DFFFF,
    921     0x007BFFFF,
    922     0x0077FFFF,
    923     0x006FFFFF,
    924     0x005FFFFF,
    925     0x003FFFFF,
    926     0x001FFFFF,
    927     0x000FFFFF,
    928     0x0007FFFF,
    929     0x0003FFFF,
    930     0x0001FFFF,
    931     0x0000FFFF,
    932     0x00007FFF,
    933     0x00003FFF,
    934     0x00001FFF,
    935     0x00000FFF,
    936     0x000007FF,
    937     0x000003FF,
    938     0x000001FF,
    939     0x000000FF,
    940     0x0000007F,
    941     0x0000003F,
    942     0x0000001F,
    943     0x0000000F,
    944     0x00000007,
    945     0x00000003
    946 };
    947 
    948 static const uint32 float32NumQInP1 = float32NumQIn * float32NumP1;
    949 static const uint32 float32NumQOutP1 = float32NumQOut * float32NumP1;
    950 
    951 static float32 float32NextQInP1( sequenceT *sequencePtr )
    952 {
    953     uint8 expNum, sigNum;
    954     float32 z;
    955 
    956     sigNum = sequencePtr->term1Num;
    957     expNum = sequencePtr->expNum;
    958     z = float32QIn[ expNum ] | float32P1[ sigNum ];
    959     ++sigNum;
    960     if ( float32NumP1 <= sigNum ) {
    961         sigNum = 0;
    962         ++expNum;
    963         if ( float32NumQIn <= expNum ) {
    964             expNum = 0;
    965             sequencePtr->done = TRUE;
    966         }
    967         sequencePtr->expNum = expNum;
    968     }
    969     sequencePtr->term1Num = sigNum;
    970     return z;
    971 
    972 }
    973 
    974 static float32 float32NextQOutP1( sequenceT *sequencePtr )
    975 {
    976     uint8 expNum, sigNum;
    977     float32 z;
    978 
    979     sigNum = sequencePtr->term1Num;
    980     expNum = sequencePtr->expNum;
    981     z = float32QOut[ expNum ] | float32P1[ sigNum ];
    982     ++sigNum;
    983     if ( float32NumP1 <= sigNum ) {
    984         sigNum = 0;
    985         ++expNum;
    986         if ( float32NumQOut <= expNum ) {
    987             expNum = 0;
    988             sequencePtr->done = TRUE;
    989         }
    990         sequencePtr->expNum = expNum;
    991     }
    992     sequencePtr->term1Num = sigNum;
    993     return z;
    994 
    995 }
    996 
    997 static const uint32 float32NumQInP2 = float32NumQIn * float32NumP2;
    998 static const uint32 float32NumQOutP2 = float32NumQOut * float32NumP2;
    999 
   1000 static float32 float32NextQInP2( sequenceT *sequencePtr )
   1001 {
   1002     uint8 expNum, sigNum;
   1003     float32 z;
   1004 
   1005     sigNum = sequencePtr->term1Num;
   1006     expNum = sequencePtr->expNum;
   1007     z = float32QIn[ expNum ] | float32P2[ sigNum ];
   1008     ++sigNum;
   1009     if ( float32NumP2 <= sigNum ) {
   1010         sigNum = 0;
   1011         ++expNum;
   1012         if ( float32NumQIn <= expNum ) {
   1013             expNum = 0;
   1014             sequencePtr->done = TRUE;
   1015         }
   1016         sequencePtr->expNum = expNum;
   1017     }
   1018     sequencePtr->term1Num = sigNum;
   1019     return z;
   1020 
   1021 }
   1022 
   1023 static float32 float32NextQOutP2( sequenceT *sequencePtr )
   1024 {
   1025     uint8 expNum, sigNum;
   1026     float32 z;
   1027 
   1028     sigNum = sequencePtr->term1Num;
   1029     expNum = sequencePtr->expNum;
   1030     z = float32QOut[ expNum ] | float32P2[ sigNum ];
   1031     ++sigNum;
   1032     if ( float32NumP2 <= sigNum ) {
   1033         sigNum = 0;
   1034         ++expNum;
   1035         if ( float32NumQOut <= expNum ) {
   1036             expNum = 0;
   1037             sequencePtr->done = TRUE;
   1038         }
   1039         sequencePtr->expNum = expNum;
   1040     }
   1041     sequencePtr->term1Num = sigNum;
   1042     return z;
   1043 
   1044 }
   1045 
   1046 static float32 float32RandomQOutP3( void )
   1047 {
   1048 
   1049     return
   1050           float32QOut[ randomUint8() % float32NumQOut ]
   1051         | (   (   float32P2[ randomUint8() % float32NumP2 ]
   1052                 + float32P2[ randomUint8() % float32NumP2 ] )
   1053             & 0x007FFFFF );
   1054 
   1055 }
   1056 
   1057 static float32 float32RandomQOutPInf( void )
   1058 {
   1059 
   1060     return
   1061           float32QOut[ randomUint8() % float32NumQOut ]
   1062         | ( randomUint32() & 0x007FFFFF );
   1063 
   1064 }
   1065 
   1066 enum {
   1067     float32NumQInfWeightMasks = 7
   1068 };
   1069 
   1070 static const uint32 float32QInfWeightMasks[ float32NumQInfWeightMasks ] = {
   1071     0x7F800000,
   1072     0x7F800000,
   1073     0x3F800000,
   1074     0x1F800000,
   1075     0x0F800000,
   1076     0x07800000,
   1077     0x03800000
   1078 };
   1079 
   1080 static const uint32 float32QInfWeightOffsets[ float32NumQInfWeightMasks ] = {
   1081     0x00000000,
   1082     0x00000000,
   1083     0x20000000,
   1084     0x30000000,
   1085     0x38000000,
   1086     0x3C000000,
   1087     0x3E000000
   1088 };
   1089 
   1090 static float32 float32RandomQInfP3( void )
   1091 {
   1092     int8 weightMaskNum;
   1093 
   1094     weightMaskNum = randomUint8() % float32NumQInfWeightMasks;
   1095     return
   1096           ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
   1097         | (   (   ( ( (uint32) ( randomUint16() & 0x1FF ) )<<23 )
   1098                 & float32QInfWeightMasks[ weightMaskNum ] )
   1099             + float32QInfWeightOffsets[ weightMaskNum ]
   1100           )
   1101         | (   (   float32P2[ randomUint8() % float32NumP2 ]
   1102                 + float32P2[ randomUint8() % float32NumP2 ] )
   1103             & 0x007FFFFF );
   1104 
   1105 }
   1106 
   1107 static float32 float32RandomQInfPInf( void )
   1108 {
   1109     int8 weightMaskNum;
   1110 
   1111     weightMaskNum = randomUint8() % float32NumQInfWeightMasks;
   1112     return
   1113           ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
   1114         | (   (   ( ( (uint32) ( randomUint16() & 0x1FF ) )<<23 )
   1115                 & float32QInfWeightMasks[ weightMaskNum ] )
   1116             + float32QInfWeightOffsets[ weightMaskNum ]
   1117           )
   1118         | ( randomUint32() & 0x007FFFFF );
   1119 
   1120 }
   1121 
   1122 static float32 float32Random( void )
   1123 {
   1124 
   1125     switch ( randomUint8() & 7 ) {
   1126      case 0:
   1127      case 1:
   1128      case 2:
   1129         return float32RandomQOutP3();
   1130      case 3:
   1131         return float32RandomQOutPInf();
   1132      case 4:
   1133      case 5:
   1134      case 6:
   1135         return float32RandomQInfP3();
   1136      case 7:
   1137         return float32RandomQInfPInf();
   1138     }
   1139 
   1140 }
   1141 
   1142 #ifdef BITS64
   1143 #define SETFLOAT64( z, zHigh, zLow ) z = ( ( (float64) zHigh )<<32 ) | zLow
   1144 #else
   1145 #define SETFLOAT64( z, zHigh, zLow ) z.low = zLow; z.high = zHigh
   1146 #endif
   1147 
   1148 enum {
   1149     float64NumQIn  =  22,
   1150     float64NumQOut =  64,
   1151     float64NumP1   =   4,
   1152     float64NumP2   = 204
   1153 };
   1154 
   1155 static const uint32 float64QIn[ float64NumQIn ] = {
   1156     0x00000000,		/* positive, subnormal		*/
   1157     0x00100000,		/* positive, -1022		*/
   1158     0x3CA00000,		/* positive,   -53		*/
   1159     0x3FD00000,		/* positive,    -2		*/
   1160     0x3FE00000,		/* positive,    -1		*/
   1161     0x3FF00000,		/* positive,     0		*/
   1162     0x40000000,		/* positive,     1		*/
   1163     0x40100000,		/* positive,     2		*/
   1164     0x43400000,		/* positive,    53		*/
   1165     0x7FE00000,		/* positive,  1023		*/
   1166     0x7FF00000,		/* positive, infinity or NaN	*/
   1167     0x80000000,		/* negative, subnormal		*/
   1168     0x80100000,		/* negative, -1022		*/
   1169     0xBCA00000,		/* negative,   -53		*/
   1170     0xBFD00000,		/* negative,    -2		*/
   1171     0xBFE00000,		/* negative,    -1		*/
   1172     0xBFF00000,		/* negative,     0		*/
   1173     0xC0000000,		/* negative,     1		*/
   1174     0xC0100000,		/* negative,     2		*/
   1175     0xC3400000,		/* negative,    53		*/
   1176     0xFFE00000,		/* negative,  1023		*/
   1177     0xFFF00000		/* negative, infinity or NaN	*/
   1178 };
   1179 
   1180 static const uint32 float64QOut[ float64NumQOut ] = {
   1181     0x00000000,		/* positive, subnormal		*/
   1182     0x00100000,		/* positive, -1022		*/
   1183     0x00200000,		/* positive, -1021		*/
   1184     0x37E00000,		/* positive,  -129		*/
   1185     0x37F00000,		/* positive,  -128		*/
   1186     0x38000000,		/* positive,  -127		*/
   1187     0x38100000,		/* positive,  -126		*/
   1188     0x3CA00000,		/* positive,   -53		*/
   1189     0x3FB00000,		/* positive,    -4		*/
   1190     0x3FC00000,		/* positive,    -3		*/
   1191     0x3FD00000,		/* positive,    -2		*/
   1192     0x3FE00000,		/* positive,    -1		*/
   1193     0x3FF00000,		/* positive,     0		*/
   1194     0x40000000,		/* positive,     1		*/
   1195     0x40100000,		/* positive,     2		*/
   1196     0x40200000,		/* positive,     3		*/
   1197     0x40300000,		/* positive,     4		*/
   1198     0x41C00000,		/* positive,    29		*/
   1199     0x41D00000,		/* positive,    30		*/
   1200     0x41E00000,		/* positive,    31		*/
   1201     0x41F00000,		/* positive,    32		*/
   1202     0x43400000,		/* positive,    53		*/
   1203     0x43C00000,		/* positive,    61		*/
   1204     0x43D00000,		/* positive,    62		*/
   1205     0x43E00000,		/* positive,    63		*/
   1206     0x43F00000,		/* positive,    64		*/
   1207     0x47E00000,		/* positive,   127		*/
   1208     0x47F00000,		/* positive,   128		*/
   1209     0x48000000,		/* positive,   129		*/
   1210     0x7FD00000,		/* positive,  1022		*/
   1211     0x7FE00000,		/* positive,  1023		*/
   1212     0x7FF00000,		/* positive, infinity or NaN	*/
   1213     0x80000000,		/* negative, subnormal		*/
   1214     0x80100000,		/* negative, -1022		*/
   1215     0x80200000,		/* negative, -1021		*/
   1216     0xB7E00000,		/* negative,  -129		*/
   1217     0xB7F00000,		/* negative,  -128		*/
   1218     0xB8000000,		/* negative,  -127		*/
   1219     0xB8100000,		/* negative,  -126		*/
   1220     0xBCA00000,		/* negative,   -53		*/
   1221     0xBFB00000,		/* negative,    -4		*/
   1222     0xBFC00000,		/* negative,    -3		*/
   1223     0xBFD00000,		/* negative,    -2		*/
   1224     0xBFE00000,		/* negative,    -1		*/
   1225     0xBFF00000,		/* negative,     0		*/
   1226     0xC0000000,		/* negative,     1		*/
   1227     0xC0100000,		/* negative,     2		*/
   1228     0xC0200000,		/* negative,     3		*/
   1229     0xC0300000,		/* negative,     4		*/
   1230     0xC1C00000,		/* negative,    29		*/
   1231     0xC1D00000,		/* negative,    30		*/
   1232     0xC1E00000,		/* negative,    31		*/
   1233     0xC1F00000,		/* negative,    32		*/
   1234     0xC3400000,		/* negative,    53		*/
   1235     0xC3C00000,		/* negative,    61		*/
   1236     0xC3D00000,		/* negative,    62		*/
   1237     0xC3E00000,		/* negative,    63		*/
   1238     0xC3F00000,		/* negative,    64		*/
   1239     0xC7E00000,		/* negative,   127		*/
   1240     0xC7F00000,		/* negative,   128		*/
   1241     0xC8000000,		/* negative,   129		*/
   1242     0xFFD00000,		/* negative,  1022		*/
   1243     0xFFE00000,		/* negative,  1023		*/
   1244     0xFFF00000		/* negative, infinity or NaN	*/
   1245 };
   1246 
   1247 static const struct { bits32 high, low; } float64P1[ float64NumP1 ] = {
   1248     { 0x00000000, 0x00000000 },
   1249     { 0x00000000, 0x00000001 },
   1250     { 0x000FFFFF, 0xFFFFFFFF },
   1251     { 0x000FFFFF, 0xFFFFFFFE }
   1252 };
   1253 
   1254 static const struct { bits32 high, low; } float64P2[ float64NumP2 ] = {
   1255     { 0x00000000, 0x00000000 },
   1256     { 0x00000000, 0x00000001 },
   1257     { 0x00000000, 0x00000002 },
   1258     { 0x00000000, 0x00000004 },
   1259     { 0x00000000, 0x00000008 },
   1260     { 0x00000000, 0x00000010 },
   1261     { 0x00000000, 0x00000020 },
   1262     { 0x00000000, 0x00000040 },
   1263     { 0x00000000, 0x00000080 },
   1264     { 0x00000000, 0x00000100 },
   1265     { 0x00000000, 0x00000200 },
   1266     { 0x00000000, 0x00000400 },
   1267     { 0x00000000, 0x00000800 },
   1268     { 0x00000000, 0x00001000 },
   1269     { 0x00000000, 0x00002000 },
   1270     { 0x00000000, 0x00004000 },
   1271     { 0x00000000, 0x00008000 },
   1272     { 0x00000000, 0x00010000 },
   1273     { 0x00000000, 0x00020000 },
   1274     { 0x00000000, 0x00040000 },
   1275     { 0x00000000, 0x00080000 },
   1276     { 0x00000000, 0x00100000 },
   1277     { 0x00000000, 0x00200000 },
   1278     { 0x00000000, 0x00400000 },
   1279     { 0x00000000, 0x00800000 },
   1280     { 0x00000000, 0x01000000 },
   1281     { 0x00000000, 0x02000000 },
   1282     { 0x00000000, 0x04000000 },
   1283     { 0x00000000, 0x08000000 },
   1284     { 0x00000000, 0x10000000 },
   1285     { 0x00000000, 0x20000000 },
   1286     { 0x00000000, 0x40000000 },
   1287     { 0x00000000, 0x80000000 },
   1288     { 0x00000001, 0x00000000 },
   1289     { 0x00000002, 0x00000000 },
   1290     { 0x00000004, 0x00000000 },
   1291     { 0x00000008, 0x00000000 },
   1292     { 0x00000010, 0x00000000 },
   1293     { 0x00000020, 0x00000000 },
   1294     { 0x00000040, 0x00000000 },
   1295     { 0x00000080, 0x00000000 },
   1296     { 0x00000100, 0x00000000 },
   1297     { 0x00000200, 0x00000000 },
   1298     { 0x00000400, 0x00000000 },
   1299     { 0x00000800, 0x00000000 },
   1300     { 0x00001000, 0x00000000 },
   1301     { 0x00002000, 0x00000000 },
   1302     { 0x00004000, 0x00000000 },
   1303     { 0x00008000, 0x00000000 },
   1304     { 0x00010000, 0x00000000 },
   1305     { 0x00020000, 0x00000000 },
   1306     { 0x00040000, 0x00000000 },
   1307     { 0x00080000, 0x00000000 },
   1308     { 0x000C0000, 0x00000000 },
   1309     { 0x000E0000, 0x00000000 },
   1310     { 0x000F0000, 0x00000000 },
   1311     { 0x000F8000, 0x00000000 },
   1312     { 0x000FC000, 0x00000000 },
   1313     { 0x000FE000, 0x00000000 },
   1314     { 0x000FF000, 0x00000000 },
   1315     { 0x000FF800, 0x00000000 },
   1316     { 0x000FFC00, 0x00000000 },
   1317     { 0x000FFE00, 0x00000000 },
   1318     { 0x000FFF00, 0x00000000 },
   1319     { 0x000FFF80, 0x00000000 },
   1320     { 0x000FFFC0, 0x00000000 },
   1321     { 0x000FFFE0, 0x00000000 },
   1322     { 0x000FFFF0, 0x00000000 },
   1323     { 0x000FFFF8, 0x00000000 },
   1324     { 0x000FFFFC, 0x00000000 },
   1325     { 0x000FFFFE, 0x00000000 },
   1326     { 0x000FFFFF, 0x00000000 },
   1327     { 0x000FFFFF, 0x80000000 },
   1328     { 0x000FFFFF, 0xC0000000 },
   1329     { 0x000FFFFF, 0xE0000000 },
   1330     { 0x000FFFFF, 0xF0000000 },
   1331     { 0x000FFFFF, 0xF8000000 },
   1332     { 0x000FFFFF, 0xFC000000 },
   1333     { 0x000FFFFF, 0xFE000000 },
   1334     { 0x000FFFFF, 0xFF000000 },
   1335     { 0x000FFFFF, 0xFF800000 },
   1336     { 0x000FFFFF, 0xFFC00000 },
   1337     { 0x000FFFFF, 0xFFE00000 },
   1338     { 0x000FFFFF, 0xFFF00000 },
   1339     { 0x000FFFFF, 0xFFF80000 },
   1340     { 0x000FFFFF, 0xFFFC0000 },
   1341     { 0x000FFFFF, 0xFFFE0000 },
   1342     { 0x000FFFFF, 0xFFFF0000 },
   1343     { 0x000FFFFF, 0xFFFF8000 },
   1344     { 0x000FFFFF, 0xFFFFC000 },
   1345     { 0x000FFFFF, 0xFFFFE000 },
   1346     { 0x000FFFFF, 0xFFFFF000 },
   1347     { 0x000FFFFF, 0xFFFFF800 },
   1348     { 0x000FFFFF, 0xFFFFFC00 },
   1349     { 0x000FFFFF, 0xFFFFFE00 },
   1350     { 0x000FFFFF, 0xFFFFFF00 },
   1351     { 0x000FFFFF, 0xFFFFFF80 },
   1352     { 0x000FFFFF, 0xFFFFFFC0 },
   1353     { 0x000FFFFF, 0xFFFFFFE0 },
   1354     { 0x000FFFFF, 0xFFFFFFF0 },
   1355     { 0x000FFFFF, 0xFFFFFFF8 },
   1356     { 0x000FFFFF, 0xFFFFFFFC },
   1357     { 0x000FFFFF, 0xFFFFFFFE },
   1358     { 0x000FFFFF, 0xFFFFFFFF },
   1359     { 0x000FFFFF, 0xFFFFFFFD },
   1360     { 0x000FFFFF, 0xFFFFFFFB },
   1361     { 0x000FFFFF, 0xFFFFFFF7 },
   1362     { 0x000FFFFF, 0xFFFFFFEF },
   1363     { 0x000FFFFF, 0xFFFFFFDF },
   1364     { 0x000FFFFF, 0xFFFFFFBF },
   1365     { 0x000FFFFF, 0xFFFFFF7F },
   1366     { 0x000FFFFF, 0xFFFFFEFF },
   1367     { 0x000FFFFF, 0xFFFFFDFF },
   1368     { 0x000FFFFF, 0xFFFFFBFF },
   1369     { 0x000FFFFF, 0xFFFFF7FF },
   1370     { 0x000FFFFF, 0xFFFFEFFF },
   1371     { 0x000FFFFF, 0xFFFFDFFF },
   1372     { 0x000FFFFF, 0xFFFFBFFF },
   1373     { 0x000FFFFF, 0xFFFF7FFF },
   1374     { 0x000FFFFF, 0xFFFEFFFF },
   1375     { 0x000FFFFF, 0xFFFDFFFF },
   1376     { 0x000FFFFF, 0xFFFBFFFF },
   1377     { 0x000FFFFF, 0xFFF7FFFF },
   1378     { 0x000FFFFF, 0xFFEFFFFF },
   1379     { 0x000FFFFF, 0xFFDFFFFF },
   1380     { 0x000FFFFF, 0xFFBFFFFF },
   1381     { 0x000FFFFF, 0xFF7FFFFF },
   1382     { 0x000FFFFF, 0xFEFFFFFF },
   1383     { 0x000FFFFF, 0xFDFFFFFF },
   1384     { 0x000FFFFF, 0xFBFFFFFF },
   1385     { 0x000FFFFF, 0xF7FFFFFF },
   1386     { 0x000FFFFF, 0xEFFFFFFF },
   1387     { 0x000FFFFF, 0xDFFFFFFF },
   1388     { 0x000FFFFF, 0xBFFFFFFF },
   1389     { 0x000FFFFF, 0x7FFFFFFF },
   1390     { 0x000FFFFE, 0xFFFFFFFF },
   1391     { 0x000FFFFD, 0xFFFFFFFF },
   1392     { 0x000FFFFB, 0xFFFFFFFF },
   1393     { 0x000FFFF7, 0xFFFFFFFF },
   1394     { 0x000FFFEF, 0xFFFFFFFF },
   1395     { 0x000FFFDF, 0xFFFFFFFF },
   1396     { 0x000FFFBF, 0xFFFFFFFF },
   1397     { 0x000FFF7F, 0xFFFFFFFF },
   1398     { 0x000FFEFF, 0xFFFFFFFF },
   1399     { 0x000FFDFF, 0xFFFFFFFF },
   1400     { 0x000FFBFF, 0xFFFFFFFF },
   1401     { 0x000FF7FF, 0xFFFFFFFF },
   1402     { 0x000FEFFF, 0xFFFFFFFF },
   1403     { 0x000FDFFF, 0xFFFFFFFF },
   1404     { 0x000FBFFF, 0xFFFFFFFF },
   1405     { 0x000F7FFF, 0xFFFFFFFF },
   1406     { 0x000EFFFF, 0xFFFFFFFF },
   1407     { 0x000DFFFF, 0xFFFFFFFF },
   1408     { 0x000BFFFF, 0xFFFFFFFF },
   1409     { 0x0007FFFF, 0xFFFFFFFF },
   1410     { 0x0003FFFF, 0xFFFFFFFF },
   1411     { 0x0001FFFF, 0xFFFFFFFF },
   1412     { 0x0000FFFF, 0xFFFFFFFF },
   1413     { 0x00007FFF, 0xFFFFFFFF },
   1414     { 0x00003FFF, 0xFFFFFFFF },
   1415     { 0x00001FFF, 0xFFFFFFFF },
   1416     { 0x00000FFF, 0xFFFFFFFF },
   1417     { 0x000007FF, 0xFFFFFFFF },
   1418     { 0x000003FF, 0xFFFFFFFF },
   1419     { 0x000001FF, 0xFFFFFFFF },
   1420     { 0x000000FF, 0xFFFFFFFF },
   1421     { 0x0000007F, 0xFFFFFFFF },
   1422     { 0x0000003F, 0xFFFFFFFF },
   1423     { 0x0000001F, 0xFFFFFFFF },
   1424     { 0x0000000F, 0xFFFFFFFF },
   1425     { 0x00000007, 0xFFFFFFFF },
   1426     { 0x00000003, 0xFFFFFFFF },
   1427     { 0x00000001, 0xFFFFFFFF },
   1428     { 0x00000000, 0xFFFFFFFF },
   1429     { 0x00000000, 0x7FFFFFFF },
   1430     { 0x00000000, 0x3FFFFFFF },
   1431     { 0x00000000, 0x1FFFFFFF },
   1432     { 0x00000000, 0x0FFFFFFF },
   1433     { 0x00000000, 0x07FFFFFF },
   1434     { 0x00000000, 0x03FFFFFF },
   1435     { 0x00000000, 0x01FFFFFF },
   1436     { 0x00000000, 0x00FFFFFF },
   1437     { 0x00000000, 0x007FFFFF },
   1438     { 0x00000000, 0x003FFFFF },
   1439     { 0x00000000, 0x001FFFFF },
   1440     { 0x00000000, 0x000FFFFF },
   1441     { 0x00000000, 0x0007FFFF },
   1442     { 0x00000000, 0x0003FFFF },
   1443     { 0x00000000, 0x0001FFFF },
   1444     { 0x00000000, 0x0000FFFF },
   1445     { 0x00000000, 0x00007FFF },
   1446     { 0x00000000, 0x00003FFF },
   1447     { 0x00000000, 0x00001FFF },
   1448     { 0x00000000, 0x00000FFF },
   1449     { 0x00000000, 0x000007FF },
   1450     { 0x00000000, 0x000003FF },
   1451     { 0x00000000, 0x000001FF },
   1452     { 0x00000000, 0x000000FF },
   1453     { 0x00000000, 0x0000007F },
   1454     { 0x00000000, 0x0000003F },
   1455     { 0x00000000, 0x0000001F },
   1456     { 0x00000000, 0x0000000F },
   1457     { 0x00000000, 0x00000007 },
   1458     { 0x00000000, 0x00000003 }
   1459 };
   1460 
   1461 static const uint32 float64NumQInP1 = float64NumQIn * float64NumP1;
   1462 static const uint32 float64NumQOutP1 = float64NumQOut * float64NumP1;
   1463 
   1464 static float64 float64NextQInP1( sequenceT *sequencePtr )
   1465 {
   1466     uint8 expNum, sigNum;
   1467     float64 z;
   1468 
   1469     sigNum = sequencePtr->term1Num;
   1470     expNum = sequencePtr->expNum;
   1471     SETFLOAT64(
   1472         z,
   1473         float64QIn[ expNum ] | float64P1[ sigNum ].high,
   1474         float64P1[ sigNum ].low
   1475     );
   1476     ++sigNum;
   1477     if ( float64NumP1 <= sigNum ) {
   1478         sigNum = 0;
   1479         ++expNum;
   1480         if ( float64NumQIn <= expNum ) {
   1481             expNum = 0;
   1482             sequencePtr->done = TRUE;
   1483         }
   1484         sequencePtr->expNum = expNum;
   1485     }
   1486     sequencePtr->term1Num = sigNum;
   1487     return z;
   1488 
   1489 }
   1490 
   1491 static float64 float64NextQOutP1( sequenceT *sequencePtr )
   1492 {
   1493     uint8 expNum, sigNum;
   1494     float64 z;
   1495 
   1496     sigNum = sequencePtr->term1Num;
   1497     expNum = sequencePtr->expNum;
   1498     SETFLOAT64(
   1499         z,
   1500         float64QOut[ expNum ] | float64P1[ sigNum ].high,
   1501         float64P1[ sigNum ].low
   1502     );
   1503     ++sigNum;
   1504     if ( float64NumP1 <= sigNum ) {
   1505         sigNum = 0;
   1506         ++expNum;
   1507         if ( float64NumQOut <= expNum ) {
   1508             expNum = 0;
   1509             sequencePtr->done = TRUE;
   1510         }
   1511         sequencePtr->expNum = expNum;
   1512     }
   1513     sequencePtr->term1Num = sigNum;
   1514     return z;
   1515 
   1516 }
   1517 
   1518 static const uint32 float64NumQInP2 = float64NumQIn * float64NumP2;
   1519 static const uint32 float64NumQOutP2 = float64NumQOut * float64NumP2;
   1520 
   1521 static float64 float64NextQInP2( sequenceT *sequencePtr )
   1522 {
   1523     uint8 expNum, sigNum;
   1524     float64 z;
   1525 
   1526     sigNum = sequencePtr->term1Num;
   1527     expNum = sequencePtr->expNum;
   1528     SETFLOAT64(
   1529         z,
   1530         float64QIn[ expNum ] | float64P2[ sigNum ].high,
   1531         float64P2[ sigNum ].low
   1532     );
   1533     ++sigNum;
   1534     if ( float64NumP2 <= sigNum ) {
   1535         sigNum = 0;
   1536         ++expNum;
   1537         if ( float64NumQIn <= expNum ) {
   1538             expNum = 0;
   1539             sequencePtr->done = TRUE;
   1540         }
   1541         sequencePtr->expNum = expNum;
   1542     }
   1543     sequencePtr->term1Num = sigNum;
   1544     return z;
   1545 
   1546 }
   1547 
   1548 static float64 float64NextQOutP2( sequenceT *sequencePtr )
   1549 {
   1550     uint8 expNum, sigNum;
   1551     float64 z;
   1552 
   1553     sigNum = sequencePtr->term1Num;
   1554     expNum = sequencePtr->expNum;
   1555     SETFLOAT64(
   1556         z,
   1557         float64QOut[ expNum ] | float64P2[ sigNum ].high,
   1558         float64P2[ sigNum ].low
   1559     );
   1560     ++sigNum;
   1561     if ( float64NumP2 <= sigNum ) {
   1562         sigNum = 0;
   1563         ++expNum;
   1564         if ( float64NumQOut <= expNum ) {
   1565             expNum = 0;
   1566             sequencePtr->done = TRUE;
   1567         }
   1568         sequencePtr->expNum = expNum;
   1569     }
   1570     sequencePtr->term1Num = sigNum;
   1571     return z;
   1572 
   1573 }
   1574 
   1575 static float64 float64RandomQOutP3( void )
   1576 {
   1577     int8 sigNum1, sigNum2;
   1578     uint32 sig1Low, sig2Low, zLow;
   1579     float64 z;
   1580 
   1581     sigNum1 = randomUint8() % float64NumP2;
   1582     sigNum2 = randomUint8() % float64NumP2;
   1583     sig1Low = float64P2[ sigNum1 ].low;
   1584     sig2Low = float64P2[ sigNum2 ].low;
   1585     zLow = sig1Low + sig2Low;
   1586     SETFLOAT64(
   1587         z,
   1588           float64QOut[ randomUint8() % float64NumQOut ]
   1589         | (   (   float64P2[ sigNum1 ].high
   1590                 + float64P2[ sigNum2 ].high
   1591                 + ( zLow < sig1Low )
   1592               )
   1593             & 0x000FFFFF
   1594           ),
   1595         zLow
   1596     );
   1597     return z;
   1598 
   1599 }
   1600 
   1601 static float64 float64RandomQOutPInf( void )
   1602 {
   1603     float64 z;
   1604 
   1605     SETFLOAT64(
   1606         z,
   1607           float64QOut[ randomUint8() % float64NumQOut ]
   1608         | ( randomUint32() & 0x000FFFFF ),
   1609         randomUint32()
   1610     );
   1611     return z;
   1612 
   1613 }
   1614 
   1615 enum {
   1616     float64NumQInfWeightMasks = 10
   1617 };
   1618 
   1619 static const uint32 float64QInfWeightMasks[ float64NumQInfWeightMasks ] = {
   1620     0x7FF00000,
   1621     0x7FF00000,
   1622     0x3FF00000,
   1623     0x1FF00000,
   1624     0x0FF00000,
   1625     0x07F00000,
   1626     0x03F00000,
   1627     0x01F00000,
   1628     0x00F00000,
   1629     0x00700000
   1630 };
   1631 
   1632 static const uint32 float64QInfWeightOffsets[ float64NumQInfWeightMasks ] = {
   1633     0x00000000,
   1634     0x00000000,
   1635     0x20000000,
   1636     0x30000000,
   1637     0x38000000,
   1638     0x3C000000,
   1639     0x3E000000,
   1640     0x3F000000,
   1641     0x3F800000,
   1642     0x3FC00000
   1643 };
   1644 
   1645 static float64 float64RandomQInfP3( void )
   1646 {
   1647     int8 sigNum1, sigNum2;
   1648     uint32 sig1Low, sig2Low, zLow;
   1649     int8 weightMaskNum;
   1650     float64 z;
   1651 
   1652     sigNum1 = randomUint8() % float64NumP2;
   1653     sigNum2 = randomUint8() % float64NumP2;
   1654     sig1Low = float64P2[ sigNum1 ].low;
   1655     sig2Low = float64P2[ sigNum2 ].low;
   1656     zLow = sig1Low + sig2Low;
   1657     weightMaskNum = randomUint8() % float64NumQInfWeightMasks;
   1658     SETFLOAT64(
   1659         z,
   1660           ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
   1661         | (   (   ( ( (uint32) ( randomUint16() & 0xFFF ) )<<20 )
   1662                 & float64QInfWeightMasks[ weightMaskNum ] )
   1663             + float64QInfWeightOffsets[ weightMaskNum ]
   1664           )
   1665         | (   (   float64P2[ sigNum1 ].high
   1666                 + float64P2[ sigNum2 ].high
   1667                 + ( zLow < sig1Low )
   1668               )
   1669             & 0x000FFFFF
   1670           ),
   1671         zLow
   1672     );
   1673     return z;
   1674 
   1675 }
   1676 
   1677 static float64 float64RandomQInfPInf( void )
   1678 {
   1679     int8 weightMaskNum;
   1680     float64 z;
   1681 
   1682     weightMaskNum = randomUint8() % float64NumQInfWeightMasks;
   1683     SETFLOAT64(
   1684         z,
   1685           ( ( (uint32) ( randomUint8() & 1 ) )<<31 )
   1686         | (   (   ( ( (uint32) ( randomUint16() & 0xFFF ) )<<20 )
   1687                 & float64QInfWeightMasks[ weightMaskNum ] )
   1688             + float64QInfWeightOffsets[ weightMaskNum ]
   1689           )
   1690         | ( randomUint32() & 0x000FFFFF ),
   1691         randomUint32()
   1692     );
   1693     return z;
   1694 
   1695 }
   1696 
   1697 static float64 float64Random( void )
   1698 {
   1699 
   1700     switch ( randomUint8() & 7 ) {
   1701      case 0:
   1702      case 1:
   1703      case 2:
   1704         return float64RandomQOutP3();
   1705      case 3:
   1706         return float64RandomQOutPInf();
   1707      case 4:
   1708      case 5:
   1709      case 6:
   1710         return float64RandomQInfP3();
   1711      case 7:
   1712         return float64RandomQInfPInf();
   1713     }
   1714 
   1715 }
   1716 
   1717 #ifdef FLOATX80
   1718 
   1719 enum {
   1720     floatx80NumQIn  =  22,
   1721     floatx80NumQOut =  76,
   1722     floatx80NumP1   =   4,
   1723     floatx80NumP2   = 248
   1724 };
   1725 
   1726 static const uint16 floatx80QIn[ floatx80NumQIn ] = {
   1727     0x0000,		/* positive, subnormal		*/
   1728     0x0001,		/* positive, -16382		*/
   1729     0x3FBF,		/* positive,    -64		*/
   1730     0x3FFD,		/* positive,     -2		*/
   1731     0x3FFE,		/* positive,     -1		*/
   1732     0x3FFF,		/* positive,      0		*/
   1733     0x4000,		/* positive,      1		*/
   1734     0x4001,		/* positive,      2		*/
   1735     0x403F,		/* positive,     64		*/
   1736     0x7FFE,		/* positive,  16383		*/
   1737     0x7FFF,		/* positive, infinity or NaN	*/
   1738     0x8000,		/* negative, subnormal		*/
   1739     0x8001,		/* negative, -16382		*/
   1740     0xBFBF,		/* negative,    -64		*/
   1741     0xBFFD,		/* negative,     -2		*/
   1742     0xBFFE,		/* negative,     -1		*/
   1743     0xBFFF,		/* negative,      0		*/
   1744     0xC000,		/* negative,      1		*/
   1745     0xC001,		/* negative,      2		*/
   1746     0xC03F,		/* negative,     64		*/
   1747     0xFFFE,		/* negative,  16383		*/
   1748     0xFFFF		/* negative, infinity or NaN	*/
   1749 };
   1750 
   1751 static const uint16 floatx80QOut[ floatx80NumQOut ] = {
   1752     0x0000,		/* positive, subnormal		*/
   1753     0x0001,		/* positive, -16382		*/
   1754     0x0002,		/* positive, -16381		*/
   1755     0x3BFE,		/* positive,  -1025		*/
   1756     0x3BFF,		/* positive,  -1024		*/
   1757     0x3C00,		/* positive,  -1023		*/
   1758     0x3C01,		/* positive,  -1022		*/
   1759     0x3F7E,		/* positive,   -129		*/
   1760     0x3F7F,		/* positive,   -128		*/
   1761     0x3F80,		/* positive,   -127		*/
   1762     0x3F81,		/* positive,   -126		*/
   1763     0x3FBF,		/* positive,    -64		*/
   1764     0x3FFB,		/* positive,     -4		*/
   1765     0x3FFC,		/* positive,     -3		*/
   1766     0x3FFD,		/* positive,     -2		*/
   1767     0x3FFE,		/* positive,     -1		*/
   1768     0x3FFF,		/* positive,      0		*/
   1769     0x4000,		/* positive,      1		*/
   1770     0x4001,		/* positive,      2		*/
   1771     0x4002,		/* positive,      3		*/
   1772     0x4003,		/* positive,      4		*/
   1773     0x401C,		/* positive,     29		*/
   1774     0x401D,		/* positive,     30		*/
   1775     0x401E,		/* positive,     31		*/
   1776     0x401F,		/* positive,     32		*/
   1777     0x403C,		/* positive,     61		*/
   1778     0x403D,		/* positive,     62		*/
   1779     0x403E,		/* positive,     63		*/
   1780     0x403F,		/* positive,     64		*/
   1781     0x407E,		/* positive,    127		*/
   1782     0x407F,		/* positive,    128		*/
   1783     0x4080,		/* positive,    129		*/
   1784     0x43FE,		/* positive,   1023		*/
   1785     0x43FF,		/* positive,   1024		*/
   1786     0x4400,		/* positive,   1025		*/
   1787     0x7FFD,		/* positive,  16382		*/
   1788     0x7FFE,		/* positive,  16383		*/
   1789     0x7FFF,		/* positive, infinity or NaN	*/
   1790     0x8000,		/* negative, subnormal		*/
   1791     0x8001,		/* negative, -16382		*/
   1792     0x8002,		/* negative, -16381		*/
   1793     0xBBFE,		/* negative,  -1025		*/
   1794     0xBBFF,		/* negative,  -1024		*/
   1795     0xBC00,		/* negative,  -1023		*/
   1796     0xBC01,		/* negative,  -1022		*/
   1797     0xBF7E,		/* negative,   -129		*/
   1798     0xBF7F,		/* negative,   -128		*/
   1799     0xBF80,		/* negative,   -127		*/
   1800     0xBF81,		/* negative,   -126		*/
   1801     0xBFBF,		/* negative,    -64		*/
   1802     0xBFFB,		/* negative,     -4		*/
   1803     0xBFFC,		/* negative,     -3		*/
   1804     0xBFFD,		/* negative,     -2		*/
   1805     0xBFFE,		/* negative,     -1		*/
   1806     0xBFFF,		/* negative,      0		*/
   1807     0xC000,		/* negative,      1		*/
   1808     0xC001,		/* negative,      2		*/
   1809     0xC002,		/* negative,      3		*/
   1810     0xC003,		/* negative,      4		*/
   1811     0xC01C,		/* negative,     29		*/
   1812     0xC01D,		/* negative,     30		*/
   1813     0xC01E,		/* negative,     31		*/
   1814     0xC01F,		/* negative,     32		*/
   1815     0xC03C,		/* negative,     61		*/
   1816     0xC03D,		/* negative,     62		*/
   1817     0xC03E,		/* negative,     63		*/
   1818     0xC03F,		/* negative,     64		*/
   1819     0xC07E,		/* negative,    127		*/
   1820     0xC07F,		/* negative,    128		*/
   1821     0xC080,		/* negative,    129		*/
   1822     0xC3FE,		/* negative,   1023		*/
   1823     0xC3FF,		/* negative,   1024		*/
   1824     0xC400,		/* negative,   1025		*/
   1825     0xFFFD,		/* negative,  16382		*/
   1826     0xFFFE,		/* negative,  16383		*/
   1827     0xFFFF		/* negative, infinity or NaN	*/
   1828 };
   1829 
   1830 static const bits64 floatx80P1[ floatx80NumP1 ] = {
   1831     LIT64( 0x0000000000000000 ),
   1832     LIT64( 0x0000000000000001 ),
   1833     LIT64( 0x7FFFFFFFFFFFFFFF ),
   1834     LIT64( 0x7FFFFFFFFFFFFFFE )
   1835 };
   1836 
   1837 static const bits64 floatx80P2[ floatx80NumP2 ] = {
   1838     LIT64( 0x0000000000000000 ),
   1839     LIT64( 0x0000000000000001 ),
   1840     LIT64( 0x0000000000000002 ),
   1841     LIT64( 0x0000000000000004 ),
   1842     LIT64( 0x0000000000000008 ),
   1843     LIT64( 0x0000000000000010 ),
   1844     LIT64( 0x0000000000000020 ),
   1845     LIT64( 0x0000000000000040 ),
   1846     LIT64( 0x0000000000000080 ),
   1847     LIT64( 0x0000000000000100 ),
   1848     LIT64( 0x0000000000000200 ),
   1849     LIT64( 0x0000000000000400 ),
   1850     LIT64( 0x0000000000000800 ),
   1851     LIT64( 0x0000000000001000 ),
   1852     LIT64( 0x0000000000002000 ),
   1853     LIT64( 0x0000000000004000 ),
   1854     LIT64( 0x0000000000008000 ),
   1855     LIT64( 0x0000000000010000 ),
   1856     LIT64( 0x0000000000020000 ),
   1857     LIT64( 0x0000000000040000 ),
   1858     LIT64( 0x0000000000080000 ),
   1859     LIT64( 0x0000000000100000 ),
   1860     LIT64( 0x0000000000200000 ),
   1861     LIT64( 0x0000000000400000 ),
   1862     LIT64( 0x0000000000800000 ),
   1863     LIT64( 0x0000000001000000 ),
   1864     LIT64( 0x0000000002000000 ),
   1865     LIT64( 0x0000000004000000 ),
   1866     LIT64( 0x0000000008000000 ),
   1867     LIT64( 0x0000000010000000 ),
   1868     LIT64( 0x0000000020000000 ),
   1869     LIT64( 0x0000000040000000 ),
   1870     LIT64( 0x0000000080000000 ),
   1871     LIT64( 0x0000000100000000 ),
   1872     LIT64( 0x0000000200000000 ),
   1873     LIT64( 0x0000000400000000 ),
   1874     LIT64( 0x0000000800000000 ),
   1875     LIT64( 0x0000001000000000 ),
   1876     LIT64( 0x0000002000000000 ),
   1877     LIT64( 0x0000004000000000 ),
   1878     LIT64( 0x0000008000000000 ),
   1879     LIT64( 0x0000010000000000 ),
   1880     LIT64( 0x0000020000000000 ),
   1881     LIT64( 0x0000040000000000 ),
   1882     LIT64( 0x0000080000000000 ),
   1883     LIT64( 0x0000100000000000 ),
   1884     LIT64( 0x0000200000000000 ),
   1885     LIT64( 0x0000400000000000 ),
   1886     LIT64( 0x0000800000000000 ),
   1887     LIT64( 0x0001000000000000 ),
   1888     LIT64( 0x0002000000000000 ),
   1889     LIT64( 0x0004000000000000 ),
   1890     LIT64( 0x0008000000000000 ),
   1891     LIT64( 0x0010000000000000 ),
   1892     LIT64( 0x0020000000000000 ),
   1893     LIT64( 0x0040000000000000 ),
   1894     LIT64( 0x0080000000000000 ),
   1895     LIT64( 0x0100000000000000 ),
   1896     LIT64( 0x0200000000000000 ),
   1897     LIT64( 0x0400000000000000 ),
   1898     LIT64( 0x0800000000000000 ),
   1899     LIT64( 0x1000000000000000 ),
   1900     LIT64( 0x2000000000000000 ),
   1901     LIT64( 0x4000000000000000 ),
   1902     LIT64( 0x6000000000000000 ),
   1903     LIT64( 0x7000000000000000 ),
   1904     LIT64( 0x7800000000000000 ),
   1905     LIT64( 0x7C00000000000000 ),
   1906     LIT64( 0x7E00000000000000 ),
   1907     LIT64( 0x7F00000000000000 ),
   1908     LIT64( 0x7F80000000000000 ),
   1909     LIT64( 0x7FC0000000000000 ),
   1910     LIT64( 0x7FE0000000000000 ),
   1911     LIT64( 0x7FF0000000000000 ),
   1912     LIT64( 0x7FF8000000000000 ),
   1913     LIT64( 0x7FFC000000000000 ),
   1914     LIT64( 0x7FFE000000000000 ),
   1915     LIT64( 0x7FFF000000000000 ),
   1916     LIT64( 0x7FFF800000000000 ),
   1917     LIT64( 0x7FFFC00000000000 ),
   1918     LIT64( 0x7FFFE00000000000 ),
   1919     LIT64( 0x7FFFF00000000000 ),
   1920     LIT64( 0x7FFFF80000000000 ),
   1921     LIT64( 0x7FFFFC0000000000 ),
   1922     LIT64( 0x7FFFFE0000000000 ),
   1923     LIT64( 0x7FFFFF0000000000 ),
   1924     LIT64( 0x7FFFFF8000000000 ),
   1925     LIT64( 0x7FFFFFC000000000 ),
   1926     LIT64( 0x7FFFFFE000000000 ),
   1927     LIT64( 0x7FFFFFF000000000 ),
   1928     LIT64( 0x7FFFFFF800000000 ),
   1929     LIT64( 0x7FFFFFFC00000000 ),
   1930     LIT64( 0x7FFFFFFE00000000 ),
   1931     LIT64( 0x7FFFFFFF00000000 ),
   1932     LIT64( 0x7FFFFFFF80000000 ),
   1933     LIT64( 0x7FFFFFFFC0000000 ),
   1934     LIT64( 0x7FFFFFFFE0000000 ),
   1935     LIT64( 0x7FFFFFFFF0000000 ),
   1936     LIT64( 0x7FFFFFFFF8000000 ),
   1937     LIT64( 0x7FFFFFFFFC000000 ),
   1938     LIT64( 0x7FFFFFFFFE000000 ),
   1939     LIT64( 0x7FFFFFFFFF000000 ),
   1940     LIT64( 0x7FFFFFFFFF800000 ),
   1941     LIT64( 0x7FFFFFFFFFC00000 ),
   1942     LIT64( 0x7FFFFFFFFFE00000 ),
   1943     LIT64( 0x7FFFFFFFFFF00000 ),
   1944     LIT64( 0x7FFFFFFFFFF80000 ),
   1945     LIT64( 0x7FFFFFFFFFFC0000 ),
   1946     LIT64( 0x7FFFFFFFFFFE0000 ),
   1947     LIT64( 0x7FFFFFFFFFFF0000 ),
   1948     LIT64( 0x7FFFFFFFFFFF8000 ),
   1949     LIT64( 0x7FFFFFFFFFFFC000 ),
   1950     LIT64( 0x7FFFFFFFFFFFE000 ),
   1951     LIT64( 0x7FFFFFFFFFFFF000 ),
   1952     LIT64( 0x7FFFFFFFFFFFF800 ),
   1953     LIT64( 0x7FFFFFFFFFFFFC00 ),
   1954     LIT64( 0x7FFFFFFFFFFFFE00 ),
   1955     LIT64( 0x7FFFFFFFFFFFFF00 ),
   1956     LIT64( 0x7FFFFFFFFFFFFF80 ),
   1957     LIT64( 0x7FFFFFFFFFFFFFC0 ),
   1958     LIT64( 0x7FFFFFFFFFFFFFE0 ),
   1959     LIT64( 0x7FFFFFFFFFFFFFF0 ),
   1960     LIT64( 0x7FFFFFFFFFFFFFF8 ),
   1961     LIT64( 0x7FFFFFFFFFFFFFFC ),
   1962     LIT64( 0x7FFFFFFFFFFFFFFE ),
   1963     LIT64( 0x7FFFFFFFFFFFFFFF ),
   1964     LIT64( 0x7FFFFFFFFFFFFFFD ),
   1965     LIT64( 0x7FFFFFFFFFFFFFFB ),
   1966     LIT64( 0x7FFFFFFFFFFFFFF7 ),
   1967     LIT64( 0x7FFFFFFFFFFFFFEF ),
   1968     LIT64( 0x7FFFFFFFFFFFFFDF ),
   1969     LIT64( 0x7FFFFFFFFFFFFFBF ),
   1970     LIT64( 0x7FFFFFFFFFFFFF7F ),
   1971     LIT64( 0x7FFFFFFFFFFFFEFF ),
   1972     LIT64( 0x7FFFFFFFFFFFFDFF ),
   1973     LIT64( 0x7FFFFFFFFFFFFBFF ),
   1974     LIT64( 0x7FFFFFFFFFFFF7FF ),
   1975     LIT64( 0x7FFFFFFFFFFFEFFF ),
   1976     LIT64( 0x7FFFFFFFFFFFDFFF ),
   1977     LIT64( 0x7FFFFFFFFFFFBFFF ),
   1978     LIT64( 0x7FFFFFFFFFFF7FFF ),
   1979     LIT64( 0x7FFFFFFFFFFEFFFF ),
   1980     LIT64( 0x7FFFFFFFFFFDFFFF ),
   1981     LIT64( 0x7FFFFFFFFFFBFFFF ),
   1982     LIT64( 0x7FFFFFFFFFF7FFFF ),
   1983     LIT64( 0x7FFFFFFFFFEFFFFF ),
   1984     LIT64( 0x7FFFFFFFFFDFFFFF ),
   1985     LIT64( 0x7FFFFFFFFFBFFFFF ),
   1986     LIT64( 0x7FFFFFFFFF7FFFFF ),
   1987     LIT64( 0x7FFFFFFFFEFFFFFF ),
   1988     LIT64( 0x7FFFFFFFFDFFFFFF ),
   1989     LIT64( 0x7FFFFFFFFBFFFFFF ),
   1990     LIT64( 0x7FFFFFFFF7FFFFFF ),
   1991     LIT64( 0x7FFFFFFFEFFFFFFF ),
   1992     LIT64( 0x7FFFFFFFDFFFFFFF ),
   1993     LIT64( 0x7FFFFFFFBFFFFFFF ),
   1994     LIT64( 0x7FFFFFFF7FFFFFFF ),
   1995     LIT64( 0x7FFFFFFEFFFFFFFF ),
   1996     LIT64( 0x7FFFFFFDFFFFFFFF ),
   1997     LIT64( 0x7FFFFFFBFFFFFFFF ),
   1998     LIT64( 0x7FFFFFF7FFFFFFFF ),
   1999     LIT64( 0x7FFFFFEFFFFFFFFF ),
   2000     LIT64( 0x7FFFFFDFFFFFFFFF ),
   2001     LIT64( 0x7FFFFFBFFFFFFFFF ),
   2002     LIT64( 0x7FFFFF7FFFFFFFFF ),
   2003     LIT64( 0x7FFFFEFFFFFFFFFF ),
   2004     LIT64( 0x7FFFFDFFFFFFFFFF ),
   2005     LIT64( 0x7FFFFBFFFFFFFFFF ),
   2006     LIT64( 0x7FFFF7FFFFFFFFFF ),
   2007     LIT64( 0x7FFFEFFFFFFFFFFF ),
   2008     LIT64( 0x7FFFDFFFFFFFFFFF ),
   2009     LIT64( 0x7FFFBFFFFFFFFFFF ),
   2010     LIT64( 0x7FFF7FFFFFFFFFFF ),
   2011     LIT64( 0x7FFEFFFFFFFFFFFF ),
   2012     LIT64( 0x7FFDFFFFFFFFFFFF ),
   2013     LIT64( 0x7FFBFFFFFFFFFFFF ),
   2014     LIT64( 0x7FF7FFFFFFFFFFFF ),
   2015     LIT64( 0x7FEFFFFFFFFFFFFF ),
   2016     LIT64( 0x7FDFFFFFFFFFFFFF ),
   2017     LIT64( 0x7FBFFFFFFFFFFFFF ),
   2018     LIT64( 0x7F7FFFFFFFFFFFFF ),
   2019     LIT64( 0x7EFFFFFFFFFFFFFF ),
   2020     LIT64( 0x7DFFFFFFFFFFFFFF ),
   2021     LIT64( 0x7BFFFFFFFFFFFFFF ),
   2022     LIT64( 0x77FFFFFFFFFFFFFF ),
   2023     LIT64( 0x6FFFFFFFFFFFFFFF ),
   2024     LIT64( 0x5FFFFFFFFFFFFFFF ),
   2025     LIT64( 0x3FFFFFFFFFFFFFFF ),
   2026     LIT64( 0x1FFFFFFFFFFFFFFF ),
   2027     LIT64( 0x0FFFFFFFFFFFFFFF ),
   2028     LIT64( 0x07FFFFFFFFFFFFFF ),
   2029     LIT64( 0x03FFFFFFFFFFFFFF ),
   2030     LIT64( 0x01FFFFFFFFFFFFFF ),
   2031     LIT64( 0x00FFFFFFFFFFFFFF ),
   2032     LIT64( 0x007FFFFFFFFFFFFF ),
   2033     LIT64( 0x003FFFFFFFFFFFFF ),
   2034     LIT64( 0x001FFFFFFFFFFFFF ),
   2035     LIT64( 0x000FFFFFFFFFFFFF ),
   2036     LIT64( 0x0007FFFFFFFFFFFF ),
   2037     LIT64( 0x0003FFFFFFFFFFFF ),
   2038     LIT64( 0x0001FFFFFFFFFFFF ),
   2039     LIT64( 0x0000FFFFFFFFFFFF ),
   2040     LIT64( 0x00007FFFFFFFFFFF ),
   2041     LIT64( 0x00003FFFFFFFFFFF ),
   2042     LIT64( 0x00001FFFFFFFFFFF ),
   2043     LIT64( 0x00000FFFFFFFFFFF ),
   2044     LIT64( 0x000007FFFFFFFFFF ),
   2045     LIT64( 0x000003FFFFFFFFFF ),
   2046     LIT64( 0x000001FFFFFFFFFF ),
   2047     LIT64( 0x000000FFFFFFFFFF ),
   2048     LIT64( 0x0000007FFFFFFFFF ),
   2049     LIT64( 0x0000003FFFFFFFFF ),
   2050     LIT64( 0x0000001FFFFFFFFF ),
   2051     LIT64( 0x0000000FFFFFFFFF ),
   2052     LIT64( 0x00000007FFFFFFFF ),
   2053     LIT64( 0x00000003FFFFFFFF ),
   2054     LIT64( 0x00000001FFFFFFFF ),
   2055     LIT64( 0x00000000FFFFFFFF ),
   2056     LIT64( 0x000000007FFFFFFF ),
   2057     LIT64( 0x000000003FFFFFFF ),
   2058     LIT64( 0x000000001FFFFFFF ),
   2059     LIT64( 0x000000000FFFFFFF ),
   2060     LIT64( 0x0000000007FFFFFF ),
   2061     LIT64( 0x0000000003FFFFFF ),
   2062     LIT64( 0x0000000001FFFFFF ),
   2063     LIT64( 0x0000000000FFFFFF ),
   2064     LIT64( 0x00000000007FFFFF ),
   2065     LIT64( 0x00000000003FFFFF ),
   2066     LIT64( 0x00000000001FFFFF ),
   2067     LIT64( 0x00000000000FFFFF ),
   2068     LIT64( 0x000000000007FFFF ),
   2069     LIT64( 0x000000000003FFFF ),
   2070     LIT64( 0x000000000001FFFF ),
   2071     LIT64( 0x000000000000FFFF ),
   2072     LIT64( 0x0000000000007FFF ),
   2073     LIT64( 0x0000000000003FFF ),
   2074     LIT64( 0x0000000000001FFF ),
   2075     LIT64( 0x0000000000000FFF ),
   2076     LIT64( 0x00000000000007FF ),
   2077     LIT64( 0x00000000000003FF ),
   2078     LIT64( 0x00000000000001FF ),
   2079     LIT64( 0x00000000000000FF ),
   2080     LIT64( 0x000000000000007F ),
   2081     LIT64( 0x000000000000003F ),
   2082     LIT64( 0x000000000000001F ),
   2083     LIT64( 0x000000000000000F ),
   2084     LIT64( 0x0000000000000007 ),
   2085     LIT64( 0x0000000000000003 )
   2086 };
   2087 
   2088 static const uint32 floatx80NumQInP1 = floatx80NumQIn * floatx80NumP1;
   2089 static const uint32 floatx80NumQOutP1 = floatx80NumQOut * floatx80NumP1;
   2090 
   2091 static floatx80 floatx80NextQInP1( sequenceT *sequencePtr )
   2092 {
   2093     int16 expNum, sigNum;
   2094     floatx80 z;
   2095 
   2096     sigNum = sequencePtr->term1Num;
   2097     expNum = sequencePtr->expNum;
   2098     z.low = floatx80P1[ sigNum ];
   2099     z.high = floatx80QIn[ expNum ];
   2100     if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
   2101     ++sigNum;
   2102     if ( floatx80NumP1 <= sigNum ) {
   2103         sigNum = 0;
   2104         ++expNum;
   2105         if ( floatx80NumQIn <= expNum ) {
   2106             expNum = 0;
   2107             sequencePtr->done = TRUE;
   2108         }
   2109         sequencePtr->expNum = expNum;
   2110     }
   2111     sequencePtr->term1Num = sigNum;
   2112     return z;
   2113 
   2114 }
   2115 
   2116 static floatx80 floatx80NextQOutP1( sequenceT *sequencePtr )
   2117 {
   2118     int16 expNum, sigNum;
   2119     floatx80 z;
   2120 
   2121     sigNum = sequencePtr->term1Num;
   2122     expNum = sequencePtr->expNum;
   2123     z.low = floatx80P1[ sigNum ];
   2124     z.high = floatx80QOut[ expNum ];
   2125     if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
   2126     ++sigNum;
   2127     if ( floatx80NumP1 <= sigNum ) {
   2128         sigNum = 0;
   2129         ++expNum;
   2130         if ( floatx80NumQOut <= expNum ) {
   2131             expNum = 0;
   2132             sequencePtr->done = TRUE;
   2133         }
   2134         sequencePtr->expNum = expNum;
   2135     }
   2136     sequencePtr->term1Num = sigNum;
   2137     return z;
   2138 
   2139 }
   2140 
   2141 static const uint32 floatx80NumQInP2 = floatx80NumQIn * floatx80NumP2;
   2142 static const uint32 floatx80NumQOutP2 = floatx80NumQOut * floatx80NumP2;
   2143 
   2144 static floatx80 floatx80NextQInP2( sequenceT *sequencePtr )
   2145 {
   2146     int16 expNum, sigNum;
   2147     floatx80 z;
   2148 
   2149     sigNum = sequencePtr->term1Num;
   2150     expNum = sequencePtr->expNum;
   2151     z.low = floatx80P2[ sigNum ];
   2152     z.high = floatx80QIn[ expNum ];
   2153     if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
   2154     ++sigNum;
   2155     if ( floatx80NumP2 <= sigNum ) {
   2156         sigNum = 0;
   2157         ++expNum;
   2158         if ( floatx80NumQIn <= expNum ) {
   2159             expNum = 0;
   2160             sequencePtr->done = TRUE;
   2161         }
   2162         sequencePtr->expNum = expNum;
   2163     }
   2164     sequencePtr->term1Num = sigNum;
   2165     return z;
   2166 
   2167 }
   2168 
   2169 static floatx80 floatx80NextQOutP2( sequenceT *sequencePtr )
   2170 {
   2171     int16 expNum, sigNum;
   2172     floatx80 z;
   2173 
   2174     sigNum = sequencePtr->term1Num;
   2175     expNum = sequencePtr->expNum;
   2176     z.low = floatx80P2[ sigNum ];
   2177     z.high = floatx80QOut[ expNum ];
   2178     if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
   2179     ++sigNum;
   2180     if ( floatx80NumP2 <= sigNum ) {
   2181         sigNum = 0;
   2182         ++expNum;
   2183         if ( floatx80NumQOut <= expNum ) {
   2184             expNum = 0;
   2185             sequencePtr->done = TRUE;
   2186         }
   2187         sequencePtr->expNum = expNum;
   2188     }
   2189     sequencePtr->term1Num = sigNum;
   2190     return z;
   2191 
   2192 }
   2193 
   2194 static floatx80 floatx80RandomQOutP3( void )
   2195 {
   2196     floatx80 z;
   2197 
   2198     z.low =
   2199           (   floatx80P2[ randomUint8() % floatx80NumP2 ]
   2200             + floatx80P2[ randomUint8() % floatx80NumP2 ] )
   2201         & LIT64( 0x7FFFFFFFFFFFFFFF );
   2202     z.high = floatx80QOut[ randomUint8() % floatx80NumQOut ];
   2203     if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
   2204     return z;
   2205 
   2206 }
   2207 
   2208 static floatx80 floatx80RandomQOutPInf( void )
   2209 {
   2210     floatx80 z;
   2211 
   2212     z.low = randomUint64() & LIT64( 0x7FFFFFFFFFFFFFFF );
   2213     z.high = floatx80QOut[ randomUint8() % floatx80NumQOut ];
   2214     if ( z.high & 0x7FFF ) z.low |= LIT64( 0x8000000000000000 );
   2215     return z;
   2216 
   2217 }
   2218 
   2219 enum {
   2220     floatx80NumQInfWeightMasks = 14
   2221 };
   2222 
   2223 static const uint16 floatx80QInfWeightMasks[ floatx80NumQInfWeightMasks ] = {
   2224     0x7FFF,
   2225     0x7FFF,
   2226     0x3FFF,
   2227     0x1FFF,
   2228     0x07FF,
   2229     0x07FF,
   2230     0x03FF,
   2231     0x01FF,
   2232     0x00FF,
   2233     0x007F,
   2234     0x003F,
   2235     0x001F,
   2236     0x000F,
   2237     0x0007
   2238 };
   2239 
   2240 static const uint16 floatx80QInfWeightOffsets[ floatx80NumQInfWeightMasks ] = {
   2241     0x0000,
   2242     0x0000,
   2243     0x2000,
   2244     0x3000,
   2245     0x3800,
   2246     0x3C00,
   2247     0x3E00,
   2248     0x3F00,
   2249     0x3F80,
   2250     0x3FC0,
   2251     0x3FE0,
   2252     0x3FF0,
   2253     0x3FF8,
   2254     0x3FFC
   2255 };
   2256 
   2257 static floatx80 floatx80RandomQInfP3( void )
   2258 {
   2259     int8 weightMaskNum;
   2260     floatx80 z;
   2261 
   2262     z.low =
   2263           (   floatx80P2[ randomUint8() % floatx80NumP2 ]
   2264             + floatx80P2[ randomUint8() % floatx80NumP2 ] )
   2265         & LIT64( 0x7FFFFFFFFFFFFFFF );
   2266     weightMaskNum = randomUint8() % floatx80NumQInfWeightMasks;
   2267     z.high =
   2268           randomUint16() & floatx80QInfWeightMasks[ weightMaskNum ]
   2269         + floatx80QInfWeightOffsets[ weightMaskNum ];
   2270     if ( z.high ) z.low |= LIT64( 0x8000000000000000 );
   2271     z.high |= ( (uint16) ( randomUint8() & 1 ) )<<15;
   2272     return z;
   2273 
   2274 }
   2275 
   2276 static floatx80 floatx80RandomQInfPInf( void )
   2277 {
   2278     int8 weightMaskNum;
   2279     floatx80 z;
   2280 
   2281     z.low = randomUint64() & LIT64( 0x7FFFFFFFFFFFFFFF );
   2282     weightMaskNum = randomUint8() % floatx80NumQInfWeightMasks;
   2283     z.high =
   2284           randomUint16() & floatx80QInfWeightMasks[ weightMaskNum ]
   2285         + floatx80QInfWeightOffsets[ weightMaskNum ];
   2286     if ( z.high ) z.low |= LIT64( 0x8000000000000000 );
   2287     z.high |= ( (uint16) ( randomUint8() & 1 ) )<<15;
   2288     return z;
   2289 
   2290 }
   2291 
   2292 static floatx80 floatx80Random( void )
   2293 {
   2294 
   2295     switch ( randomUint8() & 7 ) {
   2296      case 0:
   2297      case 1:
   2298      case 2:
   2299         return floatx80RandomQOutP3();
   2300      case 3:
   2301         return floatx80RandomQOutPInf();
   2302      case 4:
   2303      case 5:
   2304      case 6:
   2305         return floatx80RandomQInfP3();
   2306      case 7:
   2307         return floatx80RandomQInfPInf();
   2308     }
   2309 
   2310 }
   2311 
   2312 #endif
   2313 
   2314 #ifdef FLOAT128
   2315 
   2316 enum {
   2317     float128NumQIn  =  22,
   2318     float128NumQOut =  78,
   2319     float128NumP1   =   4,
   2320     float128NumP2   = 443
   2321 };
   2322 
   2323 static const uint64 float128QIn[ float128NumQIn ] = {
   2324     LIT64( 0x0000000000000000 ),	/* positive, subnormal		*/
   2325     LIT64( 0x0001000000000000 ),	/* positive, -16382		*/
   2326     LIT64( 0x3F8E000000000000 ),	/* positive,   -113		*/
   2327     LIT64( 0x3FFD000000000000 ),	/* positive,     -2		*/
   2328     LIT64( 0x3FFE000000000000 ),	/* positive,     -1		*/
   2329     LIT64( 0x3FFF000000000000 ),	/* positive,      0		*/
   2330     LIT64( 0x4000000000000000 ),	/* positive,      1		*/
   2331     LIT64( 0x4001000000000000 ),	/* positive,      2		*/
   2332     LIT64( 0x4070000000000000 ),	/* positive,    113		*/
   2333     LIT64( 0x7FFE000000000000 ),	/* positive,  16383		*/
   2334     LIT64( 0x7FFF000000000000 ),	/* positive, infinity or NaN	*/
   2335     LIT64( 0x8000000000000000 ),	/* negative, subnormal		*/
   2336     LIT64( 0x8001000000000000 ),	/* negative, -16382		*/
   2337     LIT64( 0xBF8E000000000000 ),	/* negative,   -113		*/
   2338     LIT64( 0xBFFD000000000000 ),	/* negative,     -2		*/
   2339     LIT64( 0xBFFE000000000000 ),	/* negative,     -1		*/
   2340     LIT64( 0xBFFF000000000000 ),	/* negative,      0		*/
   2341     LIT64( 0xC000000000000000 ),	/* negative,      1		*/
   2342     LIT64( 0xC001000000000000 ),	/* negative,      2		*/
   2343     LIT64( 0xC070000000000000 ),	/* negative,    113		*/
   2344     LIT64( 0xFFFE000000000000 ),	/* negative,  16383		*/
   2345     LIT64( 0xFFFF000000000000 )		/* negative, infinity or NaN	*/
   2346 };
   2347 
   2348 static const uint64 float128QOut[ float128NumQOut ] = {
   2349     LIT64( 0x0000000000000000 ),	/* positive, subnormal		*/
   2350     LIT64( 0x0001000000000000 ),	/* positive, -16382		*/
   2351     LIT64( 0x0002000000000000 ),	/* positive, -16381		*/
   2352     LIT64( 0x3BFE000000000000 ),	/* positive,  -1025		*/
   2353     LIT64( 0x3BFF000000000000 ),	/* positive,  -1024		*/
   2354     LIT64( 0x3C00000000000000 ),	/* positive,  -1023		*/
   2355     LIT64( 0x3C01000000000000 ),	/* positive,  -1022		*/
   2356     LIT64( 0x3F7E000000000000 ),	/* positive,   -129		*/
   2357     LIT64( 0x3F7F000000000000 ),	/* positive,   -128		*/
   2358     LIT64( 0x3F80000000000000 ),	/* positive,   -127		*/
   2359     LIT64( 0x3F81000000000000 ),	/* positive,   -126		*/
   2360     LIT64( 0x3F8E000000000000 ),	/* positive,   -113		*/
   2361     LIT64( 0x3FFB000000000000 ),	/* positive,     -4		*/
   2362     LIT64( 0x3FFC000000000000 ),	/* positive,     -3		*/
   2363     LIT64( 0x3FFD000000000000 ),	/* positive,     -2		*/
   2364     LIT64( 0x3FFE000000000000 ),	/* positive,     -1		*/
   2365     LIT64( 0x3FFF000000000000 ),	/* positive,      0		*/
   2366     LIT64( 0x4000000000000000 ),	/* positive,      1		*/
   2367     LIT64( 0x4001000000000000 ),	/* positive,      2		*/
   2368     LIT64( 0x4002000000000000 ),	/* positive,      3		*/
   2369     LIT64( 0x4003000000000000 ),	/* positive,      4		*/
   2370     LIT64( 0x401C000000000000 ),	/* positive,     29		*/
   2371     LIT64( 0x401D000000000000 ),	/* positive,     30		*/
   2372     LIT64( 0x401E000000000000 ),	/* positive,     31		*/
   2373     LIT64( 0x401F000000000000 ),	/* positive,     32		*/
   2374     LIT64( 0x403C000000000000 ),	/* positive,     61		*/
   2375     LIT64( 0x403D000000000000 ),	/* positive,     62		*/
   2376     LIT64( 0x403E000000000000 ),	/* positive,     63		*/
   2377     LIT64( 0x403F000000000000 ),	/* positive,     64		*/
   2378     LIT64( 0x4070000000000000 ),	/* positive,    113		*/
   2379     LIT64( 0x407E000000000000 ),	/* positive,    127		*/
   2380     LIT64( 0x407F000000000000 ),	/* positive,    128		*/
   2381     LIT64( 0x4080000000000000 ),	/* positive,    129		*/
   2382     LIT64( 0x43FE000000000000 ),	/* positive,   1023		*/
   2383     LIT64( 0x43FF000000000000 ),	/* positive,   1024		*/
   2384     LIT64( 0x4400000000000000 ),	/* positive,   1025		*/
   2385     LIT64( 0x7FFD000000000000 ),	/* positive,  16382		*/
   2386     LIT64( 0x7FFE000000000000 ),	/* positive,  16383		*/
   2387     LIT64( 0x7FFF000000000000 ),	/* positive, infinity or NaN	*/
   2388     LIT64( 0x8000000000000000 ),	/* negative, subnormal		*/
   2389     LIT64( 0x8001000000000000 ),	/* negative, -16382		*/
   2390     LIT64( 0x8002000000000000 ),	/* negative, -16381		*/
   2391     LIT64( 0xBBFE000000000000 ),	/* negative,  -1025		*/
   2392     LIT64( 0xBBFF000000000000 ),	/* negative,  -1024		*/
   2393     LIT64( 0xBC00000000000000 ),	/* negative,  -1023		*/
   2394     LIT64( 0xBC01000000000000 ),	/* negative,  -1022		*/
   2395     LIT64( 0xBF7E000000000000 ),	/* negative,   -129		*/
   2396     LIT64( 0xBF7F000000000000 ),	/* negative,   -128		*/
   2397     LIT64( 0xBF80000000000000 ),	/* negative,   -127		*/
   2398     LIT64( 0xBF81000000000000 ),	/* negative,   -126		*/
   2399     LIT64( 0xBF8E000000000000 ),	/* negative,   -113		*/
   2400     LIT64( 0xBFFB000000000000 ),	/* negative,     -4		*/
   2401     LIT64( 0xBFFC000000000000 ),	/* negative,     -3		*/
   2402     LIT64( 0xBFFD000000000000 ),	/* negative,     -2		*/
   2403     LIT64( 0xBFFE000000000000 ),	/* negative,     -1		*/
   2404     LIT64( 0xBFFF000000000000 ),	/* negative,      0		*/
   2405     LIT64( 0xC000000000000000 ),	/* negative,      1		*/
   2406     LIT64( 0xC001000000000000 ),	/* negative,      2		*/
   2407     LIT64( 0xC002000000000000 ),	/* negative,      3		*/
   2408     LIT64( 0xC003000000000000 ),	/* negative,      4		*/
   2409     LIT64( 0xC01C000000000000 ),	/* negative,     29		*/
   2410     LIT64( 0xC01D000000000000 ),	/* negative,     30		*/
   2411     LIT64( 0xC01E000000000000 ),	/* negative,     31		*/
   2412     LIT64( 0xC01F000000000000 ),	/* negative,     32		*/
   2413     LIT64( 0xC03C000000000000 ),	/* negative,     61		*/
   2414     LIT64( 0xC03D000000000000 ),	/* negative,     62		*/
   2415     LIT64( 0xC03E000000000000 ),	/* negative,     63		*/
   2416     LIT64( 0xC03F000000000000 ),	/* negative,     64		*/
   2417     LIT64( 0xC070000000000000 ),	/* negative,    113		*/
   2418     LIT64( 0xC07E000000000000 ),	/* negative,    127		*/
   2419     LIT64( 0xC07F000000000000 ),	/* negative,    128		*/
   2420     LIT64( 0xC080000000000000 ),	/* negative,    129		*/
   2421     LIT64( 0xC3FE000000000000 ),	/* negative,   1023		*/
   2422     LIT64( 0xC3FF000000000000 ),	/* negative,   1024		*/
   2423     LIT64( 0xC400000000000000 ),	/* negative,   1025		*/
   2424     LIT64( 0xFFFD000000000000 ),	/* negative,  16382		*/
   2425     LIT64( 0xFFFE000000000000 ),	/* negative,  16383		*/
   2426     LIT64( 0xFFFF000000000000 )		/* negative, infinity or NaN	*/
   2427 };
   2428 
   2429 static const struct { bits64 high, low; } float128P1[ float128NumP1 ] = {
   2430     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000000 ) },
   2431     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000001 ) },
   2432     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2433     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFE ) }
   2434 };
   2435 
   2436 static const struct { bits64 high, low; } float128P2[ float128NumP2 ] = {
   2437     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000000 ) },
   2438     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000001 ) },
   2439     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000002 ) },
   2440     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000004 ) },
   2441     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000008 ) },
   2442     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000010 ) },
   2443     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000020 ) },
   2444     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000040 ) },
   2445     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000080 ) },
   2446     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000100 ) },
   2447     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000200 ) },
   2448     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000400 ) },
   2449     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000800 ) },
   2450     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000001000 ) },
   2451     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000002000 ) },
   2452     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000004000 ) },
   2453     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000008000 ) },
   2454     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000010000 ) },
   2455     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000020000 ) },
   2456     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000040000 ) },
   2457     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000080000 ) },
   2458     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000100000 ) },
   2459     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000200000 ) },
   2460     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000400000 ) },
   2461     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000800000 ) },
   2462     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000001000000 ) },
   2463     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000002000000 ) },
   2464     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000004000000 ) },
   2465     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000008000000 ) },
   2466     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000010000000 ) },
   2467     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000020000000 ) },
   2468     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000040000000 ) },
   2469     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000080000000 ) },
   2470     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000100000000 ) },
   2471     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000200000000 ) },
   2472     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000400000000 ) },
   2473     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000800000000 ) },
   2474     { LIT64( 0x0000000000000000 ), LIT64( 0x0000001000000000 ) },
   2475     { LIT64( 0x0000000000000000 ), LIT64( 0x0000002000000000 ) },
   2476     { LIT64( 0x0000000000000000 ), LIT64( 0x0000004000000000 ) },
   2477     { LIT64( 0x0000000000000000 ), LIT64( 0x0000008000000000 ) },
   2478     { LIT64( 0x0000000000000000 ), LIT64( 0x0000010000000000 ) },
   2479     { LIT64( 0x0000000000000000 ), LIT64( 0x0000020000000000 ) },
   2480     { LIT64( 0x0000000000000000 ), LIT64( 0x0000040000000000 ) },
   2481     { LIT64( 0x0000000000000000 ), LIT64( 0x0000080000000000 ) },
   2482     { LIT64( 0x0000000000000000 ), LIT64( 0x0000100000000000 ) },
   2483     { LIT64( 0x0000000000000000 ), LIT64( 0x0000200000000000 ) },
   2484     { LIT64( 0x0000000000000000 ), LIT64( 0x0000400000000000 ) },
   2485     { LIT64( 0x0000000000000000 ), LIT64( 0x0000800000000000 ) },
   2486     { LIT64( 0x0000000000000000 ), LIT64( 0x0001000000000000 ) },
   2487     { LIT64( 0x0000000000000000 ), LIT64( 0x0002000000000000 ) },
   2488     { LIT64( 0x0000000000000000 ), LIT64( 0x0004000000000000 ) },
   2489     { LIT64( 0x0000000000000000 ), LIT64( 0x0008000000000000 ) },
   2490     { LIT64( 0x0000000000000000 ), LIT64( 0x0010000000000000 ) },
   2491     { LIT64( 0x0000000000000000 ), LIT64( 0x0020000000000000 ) },
   2492     { LIT64( 0x0000000000000000 ), LIT64( 0x0040000000000000 ) },
   2493     { LIT64( 0x0000000000000000 ), LIT64( 0x0080000000000000 ) },
   2494     { LIT64( 0x0000000000000000 ), LIT64( 0x0100000000000000 ) },
   2495     { LIT64( 0x0000000000000000 ), LIT64( 0x0200000000000000 ) },
   2496     { LIT64( 0x0000000000000000 ), LIT64( 0x0400000000000000 ) },
   2497     { LIT64( 0x0000000000000000 ), LIT64( 0x0800000000000000 ) },
   2498     { LIT64( 0x0000000000000000 ), LIT64( 0x1000000000000000 ) },
   2499     { LIT64( 0x0000000000000000 ), LIT64( 0x2000000000000000 ) },
   2500     { LIT64( 0x0000000000000000 ), LIT64( 0x4000000000000000 ) },
   2501     { LIT64( 0x0000000000000000 ), LIT64( 0x8000000000000000 ) },
   2502     { LIT64( 0x0000000000000001 ), LIT64( 0x0000000000000000 ) },
   2503     { LIT64( 0x0000000000000002 ), LIT64( 0x0000000000000000 ) },
   2504     { LIT64( 0x0000000000000004 ), LIT64( 0x0000000000000000 ) },
   2505     { LIT64( 0x0000000000000008 ), LIT64( 0x0000000000000000 ) },
   2506     { LIT64( 0x0000000000000010 ), LIT64( 0x0000000000000000 ) },
   2507     { LIT64( 0x0000000000000020 ), LIT64( 0x0000000000000000 ) },
   2508     { LIT64( 0x0000000000000040 ), LIT64( 0x0000000000000000 ) },
   2509     { LIT64( 0x0000000000000080 ), LIT64( 0x0000000000000000 ) },
   2510     { LIT64( 0x0000000000000100 ), LIT64( 0x0000000000000000 ) },
   2511     { LIT64( 0x0000000000000200 ), LIT64( 0x0000000000000000 ) },
   2512     { LIT64( 0x0000000000000400 ), LIT64( 0x0000000000000000 ) },
   2513     { LIT64( 0x0000000000000800 ), LIT64( 0x0000000000000000 ) },
   2514     { LIT64( 0x0000000000001000 ), LIT64( 0x0000000000000000 ) },
   2515     { LIT64( 0x0000000000002000 ), LIT64( 0x0000000000000000 ) },
   2516     { LIT64( 0x0000000000004000 ), LIT64( 0x0000000000000000 ) },
   2517     { LIT64( 0x0000000000008000 ), LIT64( 0x0000000000000000 ) },
   2518     { LIT64( 0x0000000000010000 ), LIT64( 0x0000000000000000 ) },
   2519     { LIT64( 0x0000000000020000 ), LIT64( 0x0000000000000000 ) },
   2520     { LIT64( 0x0000000000040000 ), LIT64( 0x0000000000000000 ) },
   2521     { LIT64( 0x0000000000080000 ), LIT64( 0x0000000000000000 ) },
   2522     { LIT64( 0x0000000000100000 ), LIT64( 0x0000000000000000 ) },
   2523     { LIT64( 0x0000000000200000 ), LIT64( 0x0000000000000000 ) },
   2524     { LIT64( 0x0000000000400000 ), LIT64( 0x0000000000000000 ) },
   2525     { LIT64( 0x0000000000800000 ), LIT64( 0x0000000000000000 ) },
   2526     { LIT64( 0x0000000001000000 ), LIT64( 0x0000000000000000 ) },
   2527     { LIT64( 0x0000000002000000 ), LIT64( 0x0000000000000000 ) },
   2528     { LIT64( 0x0000000004000000 ), LIT64( 0x0000000000000000 ) },
   2529     { LIT64( 0x0000000008000000 ), LIT64( 0x0000000000000000 ) },
   2530     { LIT64( 0x0000000010000000 ), LIT64( 0x0000000000000000 ) },
   2531     { LIT64( 0x0000000020000000 ), LIT64( 0x0000000000000000 ) },
   2532     { LIT64( 0x0000000040000000 ), LIT64( 0x0000000000000000 ) },
   2533     { LIT64( 0x0000000080000000 ), LIT64( 0x0000000000000000 ) },
   2534     { LIT64( 0x0000000100000000 ), LIT64( 0x0000000000000000 ) },
   2535     { LIT64( 0x0000000200000000 ), LIT64( 0x0000000000000000 ) },
   2536     { LIT64( 0x0000000400000000 ), LIT64( 0x0000000000000000 ) },
   2537     { LIT64( 0x0000000800000000 ), LIT64( 0x0000000000000000 ) },
   2538     { LIT64( 0x0000001000000000 ), LIT64( 0x0000000000000000 ) },
   2539     { LIT64( 0x0000002000000000 ), LIT64( 0x0000000000000000 ) },
   2540     { LIT64( 0x0000004000000000 ), LIT64( 0x0000000000000000 ) },
   2541     { LIT64( 0x0000008000000000 ), LIT64( 0x0000000000000000 ) },
   2542     { LIT64( 0x0000010000000000 ), LIT64( 0x0000000000000000 ) },
   2543     { LIT64( 0x0000020000000000 ), LIT64( 0x0000000000000000 ) },
   2544     { LIT64( 0x0000040000000000 ), LIT64( 0x0000000000000000 ) },
   2545     { LIT64( 0x0000080000000000 ), LIT64( 0x0000000000000000 ) },
   2546     { LIT64( 0x0000100000000000 ), LIT64( 0x0000000000000000 ) },
   2547     { LIT64( 0x0000200000000000 ), LIT64( 0x0000000000000000 ) },
   2548     { LIT64( 0x0000400000000000 ), LIT64( 0x0000000000000000 ) },
   2549     { LIT64( 0x0000800000000000 ), LIT64( 0x0000000000000000 ) },
   2550     { LIT64( 0x0000C00000000000 ), LIT64( 0x0000000000000000 ) },
   2551     { LIT64( 0x0000E00000000000 ), LIT64( 0x0000000000000000 ) },
   2552     { LIT64( 0x0000F00000000000 ), LIT64( 0x0000000000000000 ) },
   2553     { LIT64( 0x0000F80000000000 ), LIT64( 0x0000000000000000 ) },
   2554     { LIT64( 0x0000FC0000000000 ), LIT64( 0x0000000000000000 ) },
   2555     { LIT64( 0x0000FE0000000000 ), LIT64( 0x0000000000000000 ) },
   2556     { LIT64( 0x0000FF0000000000 ), LIT64( 0x0000000000000000 ) },
   2557     { LIT64( 0x0000FF8000000000 ), LIT64( 0x0000000000000000 ) },
   2558     { LIT64( 0x0000FFC000000000 ), LIT64( 0x0000000000000000 ) },
   2559     { LIT64( 0x0000FFE000000000 ), LIT64( 0x0000000000000000 ) },
   2560     { LIT64( 0x0000FFF000000000 ), LIT64( 0x0000000000000000 ) },
   2561     { LIT64( 0x0000FFF800000000 ), LIT64( 0x0000000000000000 ) },
   2562     { LIT64( 0x0000FFFC00000000 ), LIT64( 0x0000000000000000 ) },
   2563     { LIT64( 0x0000FFFE00000000 ), LIT64( 0x0000000000000000 ) },
   2564     { LIT64( 0x0000FFFF00000000 ), LIT64( 0x0000000000000000 ) },
   2565     { LIT64( 0x0000FFFF80000000 ), LIT64( 0x0000000000000000 ) },
   2566     { LIT64( 0x0000FFFFC0000000 ), LIT64( 0x0000000000000000 ) },
   2567     { LIT64( 0x0000FFFFE0000000 ), LIT64( 0x0000000000000000 ) },
   2568     { LIT64( 0x0000FFFFF0000000 ), LIT64( 0x0000000000000000 ) },
   2569     { LIT64( 0x0000FFFFF8000000 ), LIT64( 0x0000000000000000 ) },
   2570     { LIT64( 0x0000FFFFFC000000 ), LIT64( 0x0000000000000000 ) },
   2571     { LIT64( 0x0000FFFFFE000000 ), LIT64( 0x0000000000000000 ) },
   2572     { LIT64( 0x0000FFFFFF000000 ), LIT64( 0x0000000000000000 ) },
   2573     { LIT64( 0x0000FFFFFF800000 ), LIT64( 0x0000000000000000 ) },
   2574     { LIT64( 0x0000FFFFFFC00000 ), LIT64( 0x0000000000000000 ) },
   2575     { LIT64( 0x0000FFFFFFE00000 ), LIT64( 0x0000000000000000 ) },
   2576     { LIT64( 0x0000FFFFFFF00000 ), LIT64( 0x0000000000000000 ) },
   2577     { LIT64( 0x0000FFFFFFF80000 ), LIT64( 0x0000000000000000 ) },
   2578     { LIT64( 0x0000FFFFFFFC0000 ), LIT64( 0x0000000000000000 ) },
   2579     { LIT64( 0x0000FFFFFFFE0000 ), LIT64( 0x0000000000000000 ) },
   2580     { LIT64( 0x0000FFFFFFFF0000 ), LIT64( 0x0000000000000000 ) },
   2581     { LIT64( 0x0000FFFFFFFF8000 ), LIT64( 0x0000000000000000 ) },
   2582     { LIT64( 0x0000FFFFFFFFC000 ), LIT64( 0x0000000000000000 ) },
   2583     { LIT64( 0x0000FFFFFFFFE000 ), LIT64( 0x0000000000000000 ) },
   2584     { LIT64( 0x0000FFFFFFFFF000 ), LIT64( 0x0000000000000000 ) },
   2585     { LIT64( 0x0000FFFFFFFFF800 ), LIT64( 0x0000000000000000 ) },
   2586     { LIT64( 0x0000FFFFFFFFFC00 ), LIT64( 0x0000000000000000 ) },
   2587     { LIT64( 0x0000FFFFFFFFFE00 ), LIT64( 0x0000000000000000 ) },
   2588     { LIT64( 0x0000FFFFFFFFFF00 ), LIT64( 0x0000000000000000 ) },
   2589     { LIT64( 0x0000FFFFFFFFFF80 ), LIT64( 0x0000000000000000 ) },
   2590     { LIT64( 0x0000FFFFFFFFFFC0 ), LIT64( 0x0000000000000000 ) },
   2591     { LIT64( 0x0000FFFFFFFFFFE0 ), LIT64( 0x0000000000000000 ) },
   2592     { LIT64( 0x0000FFFFFFFFFFF0 ), LIT64( 0x0000000000000000 ) },
   2593     { LIT64( 0x0000FFFFFFFFFFF8 ), LIT64( 0x0000000000000000 ) },
   2594     { LIT64( 0x0000FFFFFFFFFFFC ), LIT64( 0x0000000000000000 ) },
   2595     { LIT64( 0x0000FFFFFFFFFFFE ), LIT64( 0x0000000000000000 ) },
   2596     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0x0000000000000000 ) },
   2597     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0x8000000000000000 ) },
   2598     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xC000000000000000 ) },
   2599     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xE000000000000000 ) },
   2600     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xF000000000000000 ) },
   2601     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xF800000000000000 ) },
   2602     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFC00000000000000 ) },
   2603     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFE00000000000000 ) },
   2604     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFF00000000000000 ) },
   2605     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFF80000000000000 ) },
   2606     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFC0000000000000 ) },
   2607     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFE0000000000000 ) },
   2608     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFF0000000000000 ) },
   2609     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFF8000000000000 ) },
   2610     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFC000000000000 ) },
   2611     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFE000000000000 ) },
   2612     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFF000000000000 ) },
   2613     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFF800000000000 ) },
   2614     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFC00000000000 ) },
   2615     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFE00000000000 ) },
   2616     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFF00000000000 ) },
   2617     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFF80000000000 ) },
   2618     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFC0000000000 ) },
   2619     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFE0000000000 ) },
   2620     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFF0000000000 ) },
   2621     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFF8000000000 ) },
   2622     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFC000000000 ) },
   2623     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFE000000000 ) },
   2624     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFF000000000 ) },
   2625     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFF800000000 ) },
   2626     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFC00000000 ) },
   2627     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFE00000000 ) },
   2628     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFF00000000 ) },
   2629     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFF80000000 ) },
   2630     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFC0000000 ) },
   2631     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFE0000000 ) },
   2632     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFF0000000 ) },
   2633     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFF8000000 ) },
   2634     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFC000000 ) },
   2635     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFE000000 ) },
   2636     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFF000000 ) },
   2637     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFF800000 ) },
   2638     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFC00000 ) },
   2639     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFE00000 ) },
   2640     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFF00000 ) },
   2641     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFF80000 ) },
   2642     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFC0000 ) },
   2643     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFE0000 ) },
   2644     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFF0000 ) },
   2645     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFF8000 ) },
   2646     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFC000 ) },
   2647     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFE000 ) },
   2648     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFF000 ) },
   2649     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFF800 ) },
   2650     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFC00 ) },
   2651     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFE00 ) },
   2652     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFF00 ) },
   2653     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFF80 ) },
   2654     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFC0 ) },
   2655     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFE0 ) },
   2656     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFF0 ) },
   2657     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFF8 ) },
   2658     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFC ) },
   2659     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFE ) },
   2660     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2661     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFD ) },
   2662     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFB ) },
   2663     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFF7 ) },
   2664     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFEF ) },
   2665     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFDF ) },
   2666     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFBF ) },
   2667     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFF7F ) },
   2668     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFEFF ) },
   2669     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFDFF ) },
   2670     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFBFF ) },
   2671     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFF7FF ) },
   2672     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFEFFF ) },
   2673     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFDFFF ) },
   2674     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFBFFF ) },
   2675     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFF7FFF ) },
   2676     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFEFFFF ) },
   2677     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFDFFFF ) },
   2678     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFBFFFF ) },
   2679     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFF7FFFF ) },
   2680     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFEFFFFF ) },
   2681     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFDFFFFF ) },
   2682     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFBFFFFF ) },
   2683     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFF7FFFFF ) },
   2684     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFEFFFFFF ) },
   2685     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFDFFFFFF ) },
   2686     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFBFFFFFF ) },
   2687     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFF7FFFFFF ) },
   2688     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFEFFFFFFF ) },
   2689     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFDFFFFFFF ) },
   2690     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFFBFFFFFFF ) },
   2691     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFF7FFFFFFF ) },
   2692     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFEFFFFFFFF ) },
   2693     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFDFFFFFFFF ) },
   2694     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFFBFFFFFFFF ) },
   2695     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFF7FFFFFFFF ) },
   2696     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFEFFFFFFFFF ) },
   2697     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFDFFFFFFFFF ) },
   2698     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFFBFFFFFFFFF ) },
   2699     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFF7FFFFFFFFF ) },
   2700     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFEFFFFFFFFFF ) },
   2701     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFDFFFFFFFFFF ) },
   2702     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFFBFFFFFFFFFF ) },
   2703     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFF7FFFFFFFFFF ) },
   2704     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFEFFFFFFFFFFF ) },
   2705     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFDFFFFFFFFFFF ) },
   2706     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFFBFFFFFFFFFFF ) },
   2707     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFF7FFFFFFFFFFF ) },
   2708     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFEFFFFFFFFFFFF ) },
   2709     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFDFFFFFFFFFFFF ) },
   2710     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFFBFFFFFFFFFFFF ) },
   2711     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFF7FFFFFFFFFFFF ) },
   2712     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFEFFFFFFFFFFFFF ) },
   2713     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFDFFFFFFFFFFFFF ) },
   2714     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFFBFFFFFFFFFFFFF ) },
   2715     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFF7FFFFFFFFFFFFF ) },
   2716     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFEFFFFFFFFFFFFFF ) },
   2717     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFDFFFFFFFFFFFFFF ) },
   2718     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xFBFFFFFFFFFFFFFF ) },
   2719     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xF7FFFFFFFFFFFFFF ) },
   2720     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xEFFFFFFFFFFFFFFF ) },
   2721     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xDFFFFFFFFFFFFFFF ) },
   2722     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0xBFFFFFFFFFFFFFFF ) },
   2723     { LIT64( 0x0000FFFFFFFFFFFF ), LIT64( 0x7FFFFFFFFFFFFFFF ) },
   2724     { LIT64( 0x0000FFFFFFFFFFFD ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2725     { LIT64( 0x0000FFFFFFFFFFFB ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2726     { LIT64( 0x0000FFFFFFFFFFF7 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2727     { LIT64( 0x0000FFFFFFFFFFEF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2728     { LIT64( 0x0000FFFFFFFFFFDF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2729     { LIT64( 0x0000FFFFFFFFFFBF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2730     { LIT64( 0x0000FFFFFFFFFF7F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2731     { LIT64( 0x0000FFFFFFFFFEFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2732     { LIT64( 0x0000FFFFFFFFFDFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2733     { LIT64( 0x0000FFFFFFFFFBFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2734     { LIT64( 0x0000FFFFFFFFF7FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2735     { LIT64( 0x0000FFFFFFFFEFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2736     { LIT64( 0x0000FFFFFFFFDFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2737     { LIT64( 0x0000FFFFFFFFBFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2738     { LIT64( 0x0000FFFFFFFF7FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2739     { LIT64( 0x0000FFFFFFFEFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2740     { LIT64( 0x0000FFFFFFFDFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2741     { LIT64( 0x0000FFFFFFFBFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2742     { LIT64( 0x0000FFFFFFF7FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2743     { LIT64( 0x0000FFFFFFEFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2744     { LIT64( 0x0000FFFFFFDFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2745     { LIT64( 0x0000FFFFFFBFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2746     { LIT64( 0x0000FFFFFF7FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2747     { LIT64( 0x0000FFFFFEFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2748     { LIT64( 0x0000FFFFFDFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2749     { LIT64( 0x0000FFFFFBFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2750     { LIT64( 0x0000FFFFF7FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2751     { LIT64( 0x0000FFFFEFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2752     { LIT64( 0x0000FFFFDFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2753     { LIT64( 0x0000FFFFBFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2754     { LIT64( 0x0000FFFF7FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2755     { LIT64( 0x0000FFFEFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2756     { LIT64( 0x0000FFFDFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2757     { LIT64( 0x0000FFFBFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2758     { LIT64( 0x0000FFF7FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2759     { LIT64( 0x0000FFEFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2760     { LIT64( 0x0000FFDFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2761     { LIT64( 0x0000FFBFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2762     { LIT64( 0x0000FF7FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2763     { LIT64( 0x0000FEFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2764     { LIT64( 0x0000FDFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2765     { LIT64( 0x0000FBFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2766     { LIT64( 0x0000F7FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2767     { LIT64( 0x0000EFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2768     { LIT64( 0x0000DFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2769     { LIT64( 0x0000BFFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2770     { LIT64( 0x00007FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2771     { LIT64( 0x00003FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2772     { LIT64( 0x00001FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2773     { LIT64( 0x00000FFFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2774     { LIT64( 0x000007FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2775     { LIT64( 0x000003FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2776     { LIT64( 0x000001FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2777     { LIT64( 0x000000FFFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2778     { LIT64( 0x0000007FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2779     { LIT64( 0x0000003FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2780     { LIT64( 0x0000001FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2781     { LIT64( 0x0000000FFFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2782     { LIT64( 0x00000007FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2783     { LIT64( 0x00000003FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2784     { LIT64( 0x00000001FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2785     { LIT64( 0x00000000FFFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2786     { LIT64( 0x000000007FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2787     { LIT64( 0x000000003FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2788     { LIT64( 0x000000001FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2789     { LIT64( 0x000000000FFFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2790     { LIT64( 0x0000000007FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2791     { LIT64( 0x0000000003FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2792     { LIT64( 0x0000000001FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2793     { LIT64( 0x0000000000FFFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2794     { LIT64( 0x00000000007FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2795     { LIT64( 0x00000000003FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2796     { LIT64( 0x00000000001FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2797     { LIT64( 0x00000000000FFFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2798     { LIT64( 0x000000000007FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2799     { LIT64( 0x000000000003FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2800     { LIT64( 0x000000000001FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2801     { LIT64( 0x000000000000FFFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2802     { LIT64( 0x0000000000007FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2803     { LIT64( 0x0000000000003FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2804     { LIT64( 0x0000000000001FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2805     { LIT64( 0x0000000000000FFF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2806     { LIT64( 0x00000000000007FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2807     { LIT64( 0x00000000000003FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2808     { LIT64( 0x00000000000001FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2809     { LIT64( 0x00000000000000FF ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2810     { LIT64( 0x000000000000007F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2811     { LIT64( 0x000000000000003F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2812     { LIT64( 0x000000000000001F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2813     { LIT64( 0x000000000000000F ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2814     { LIT64( 0x0000000000000007 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2815     { LIT64( 0x0000000000000003 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2816     { LIT64( 0x0000000000000001 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2817     { LIT64( 0x0000000000000000 ), LIT64( 0xFFFFFFFFFFFFFFFF ) },
   2818     { LIT64( 0x0000000000000000 ), LIT64( 0x7FFFFFFFFFFFFFFF ) },
   2819     { LIT64( 0x0000000000000000 ), LIT64( 0x3FFFFFFFFFFFFFFF ) },
   2820     { LIT64( 0x0000000000000000 ), LIT64( 0x1FFFFFFFFFFFFFFF ) },
   2821     { LIT64( 0x0000000000000000 ), LIT64( 0x0FFFFFFFFFFFFFFF ) },
   2822     { LIT64( 0x0000000000000000 ), LIT64( 0x07FFFFFFFFFFFFFF ) },
   2823     { LIT64( 0x0000000000000000 ), LIT64( 0x03FFFFFFFFFFFFFF ) },
   2824     { LIT64( 0x0000000000000000 ), LIT64( 0x01FFFFFFFFFFFFFF ) },
   2825     { LIT64( 0x0000000000000000 ), LIT64( 0x00FFFFFFFFFFFFFF ) },
   2826     { LIT64( 0x0000000000000000 ), LIT64( 0x007FFFFFFFFFFFFF ) },
   2827     { LIT64( 0x0000000000000000 ), LIT64( 0x003FFFFFFFFFFFFF ) },
   2828     { LIT64( 0x0000000000000000 ), LIT64( 0x001FFFFFFFFFFFFF ) },
   2829     { LIT64( 0x0000000000000000 ), LIT64( 0x000FFFFFFFFFFFFF ) },
   2830     { LIT64( 0x0000000000000000 ), LIT64( 0x0007FFFFFFFFFFFF ) },
   2831     { LIT64( 0x0000000000000000 ), LIT64( 0x0003FFFFFFFFFFFF ) },
   2832     { LIT64( 0x0000000000000000 ), LIT64( 0x0001FFFFFFFFFFFF ) },
   2833     { LIT64( 0x0000000000000000 ), LIT64( 0x0000FFFFFFFFFFFF ) },
   2834     { LIT64( 0x0000000000000000 ), LIT64( 0x00007FFFFFFFFFFF ) },
   2835     { LIT64( 0x0000000000000000 ), LIT64( 0x00003FFFFFFFFFFF ) },
   2836     { LIT64( 0x0000000000000000 ), LIT64( 0x00001FFFFFFFFFFF ) },
   2837     { LIT64( 0x0000000000000000 ), LIT64( 0x00000FFFFFFFFFFF ) },
   2838     { LIT64( 0x0000000000000000 ), LIT64( 0x000007FFFFFFFFFF ) },
   2839     { LIT64( 0x0000000000000000 ), LIT64( 0x000003FFFFFFFFFF ) },
   2840     { LIT64( 0x0000000000000000 ), LIT64( 0x000001FFFFFFFFFF ) },
   2841     { LIT64( 0x0000000000000000 ), LIT64( 0x000000FFFFFFFFFF ) },
   2842     { LIT64( 0x0000000000000000 ), LIT64( 0x0000007FFFFFFFFF ) },
   2843     { LIT64( 0x0000000000000000 ), LIT64( 0x0000003FFFFFFFFF ) },
   2844     { LIT64( 0x0000000000000000 ), LIT64( 0x0000001FFFFFFFFF ) },
   2845     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000FFFFFFFFF ) },
   2846     { LIT64( 0x0000000000000000 ), LIT64( 0x00000007FFFFFFFF ) },
   2847     { LIT64( 0x0000000000000000 ), LIT64( 0x00000003FFFFFFFF ) },
   2848     { LIT64( 0x0000000000000000 ), LIT64( 0x00000001FFFFFFFF ) },
   2849     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000FFFFFFFF ) },
   2850     { LIT64( 0x0000000000000000 ), LIT64( 0x000000007FFFFFFF ) },
   2851     { LIT64( 0x0000000000000000 ), LIT64( 0x000000003FFFFFFF ) },
   2852     { LIT64( 0x0000000000000000 ), LIT64( 0x000000001FFFFFFF ) },
   2853     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000FFFFFFF ) },
   2854     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000007FFFFFF ) },
   2855     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000003FFFFFF ) },
   2856     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000001FFFFFF ) },
   2857     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000FFFFFF ) },
   2858     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000007FFFFF ) },
   2859     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000003FFFFF ) },
   2860     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000001FFFFF ) },
   2861     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000FFFFF ) },
   2862     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000007FFFF ) },
   2863     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000003FFFF ) },
   2864     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000001FFFF ) },
   2865     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000FFFF ) },
   2866     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000007FFF ) },
   2867     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000003FFF ) },
   2868     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000001FFF ) },
   2869     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000FFF ) },
   2870     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000007FF ) },
   2871     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000003FF ) },
   2872     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000001FF ) },
   2873     { LIT64( 0x0000000000000000 ), LIT64( 0x00000000000000FF ) },
   2874     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000007F ) },
   2875     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000003F ) },
   2876     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000001F ) },
   2877     { LIT64( 0x0000000000000000 ), LIT64( 0x000000000000000F ) },
   2878     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000007 ) },
   2879     { LIT64( 0x0000000000000000 ), LIT64( 0x0000000000000003 ) }
   2880 };
   2881 
   2882 static const uint32 float128NumQInP1 = float128NumQIn * float128NumP1;
   2883 static const uint32 float128NumQOutP1 = float128NumQOut * float128NumP1;
   2884 
   2885 static float128 float128NextQInP1( sequenceT *sequencePtr )
   2886 {
   2887     int16 expNum, sigNum;
   2888     float128 z;
   2889 
   2890     sigNum = sequencePtr->term1Num;
   2891     expNum = sequencePtr->expNum;
   2892     z.low = float128P1[ sigNum ].low;
   2893     z.high = float128QIn[ expNum ] | float128P1[ sigNum ].high;
   2894     ++sigNum;
   2895     if ( float128NumP1 <= sigNum ) {
   2896         sigNum = 0;
   2897         ++expNum;
   2898         if ( float128NumQIn <= expNum ) {
   2899             expNum = 0;
   2900             sequencePtr->done = TRUE;
   2901         }
   2902         sequencePtr->expNum = expNum;
   2903     }
   2904     sequencePtr->term1Num = sigNum;
   2905     return z;
   2906 
   2907 }
   2908 
   2909 static float128 float128NextQOutP1( sequenceT *sequencePtr )
   2910 {
   2911     int16 expNum, sigNum;
   2912     float128 z;
   2913 
   2914     sigNum = sequencePtr->term1Num;
   2915     expNum = sequencePtr->expNum;
   2916     z.low = float128P1[ sigNum ].low;
   2917     z.high = float128QOut[ expNum ] | float128P1[ sigNum ].high;
   2918     ++sigNum;
   2919     if ( float128NumP1 <= sigNum ) {
   2920         sigNum = 0;
   2921         ++expNum;
   2922         if ( float128NumQOut <= expNum ) {
   2923             expNum = 0;
   2924             sequencePtr->done = TRUE;
   2925         }
   2926         sequencePtr->expNum = expNum;
   2927     }
   2928     sequencePtr->term1Num = sigNum;
   2929     return z;
   2930 
   2931 }
   2932 
   2933 static const uint32 float128NumQInP2 = float128NumQIn * float128NumP2;
   2934 static const uint32 float128NumQOutP2 = float128NumQOut * float128NumP2;
   2935 
   2936 static float128 float128NextQInP2( sequenceT *sequencePtr )
   2937 {
   2938     int16 expNum, sigNum;
   2939     float128 z;
   2940 
   2941     sigNum = sequencePtr->term1Num;
   2942     expNum = sequencePtr->expNum;
   2943     z.low = float128P2[ sigNum ].low;
   2944     z.high = float128QIn[ expNum ] | float128P2[ sigNum ].high;
   2945     ++sigNum;
   2946     if ( float128NumP2 <= sigNum ) {
   2947         sigNum = 0;
   2948         ++expNum;
   2949         if ( float128NumQIn <= expNum ) {
   2950             expNum = 0;
   2951             sequencePtr->done = TRUE;
   2952         }
   2953         sequencePtr->expNum = expNum;
   2954     }
   2955     sequencePtr->term1Num = sigNum;
   2956     return z;
   2957 
   2958 }
   2959 
   2960 static float128 float128NextQOutP2( sequenceT *sequencePtr )
   2961 {
   2962     int16 expNum, sigNum;
   2963     float128 z;
   2964 
   2965     sigNum = sequencePtr->term1Num;
   2966     expNum = sequencePtr->expNum;
   2967     z.low = float128P2[ sigNum ].low;
   2968     z.high = float128QOut[ expNum ] | float128P2[ sigNum ].high;
   2969     ++sigNum;
   2970     if ( float128NumP2 <= sigNum ) {
   2971         sigNum = 0;
   2972         ++expNum;
   2973         if ( float128NumQOut <= expNum ) {
   2974             expNum = 0;
   2975             sequencePtr->done = TRUE;
   2976         }
   2977         sequencePtr->expNum = expNum;
   2978     }
   2979     sequencePtr->term1Num = sigNum;
   2980     return z;
   2981 
   2982 }
   2983 
   2984 static float128 float128RandomQOutP3( void )
   2985 {
   2986     int16 sigNum1, sigNum2;
   2987     uint64 sig1Low, sig2Low;
   2988     float128 z;
   2989 
   2990     sigNum1 = randomUint8() % float128NumP2;
   2991     sigNum2 = randomUint8() % float128NumP2;
   2992     sig1Low = float128P2[ sigNum1 ].low;
   2993     sig2Low = float128P2[ sigNum2 ].low;
   2994     z.low = sig1Low + sig2Low;
   2995     z.high =
   2996           float128QOut[ randomUint8() % float128NumQOut ]
   2997         | (   (   float128P2[ sigNum1 ].high
   2998                 + float128P2[ sigNum2 ].high
   2999                 + ( z.low < sig1Low )
   3000               )
   3001             & LIT64( 0x0000FFFFFFFFFFFF )
   3002           );
   3003     return z;
   3004 
   3005 }
   3006 
   3007 static float128 float128RandomQOutPInf( void )
   3008 {
   3009     float128 z;
   3010 
   3011     z.low = randomUint64();
   3012     z.high =
   3013           float128QOut[ randomUint8() % float128NumQOut ]
   3014         | ( randomUint64() & LIT64( 0x0000FFFFFFFFFFFF ) );
   3015     return z;
   3016 
   3017 }
   3018 
   3019 enum {
   3020     float128NumQInfWeightMasks = 14
   3021 };
   3022 
   3023 static const uint64 float128QInfWeightMasks[ float128NumQInfWeightMasks ] = {
   3024     LIT64( 0x7FFF000000000000 ),
   3025     LIT64( 0x7FFF000000000000 ),
   3026     LIT64( 0x3FFF000000000000 ),
   3027     LIT64( 0x1FFF000000000000 ),
   3028     LIT64( 0x07FF000000000000 ),
   3029     LIT64( 0x07FF000000000000 ),
   3030     LIT64( 0x03FF000000000000 ),
   3031     LIT64( 0x01FF000000000000 ),
   3032     LIT64( 0x00FF000000000000 ),
   3033     LIT64( 0x007F000000000000 ),
   3034     LIT64( 0x003F000000000000 ),
   3035     LIT64( 0x001F000000000000 ),
   3036     LIT64( 0x000F000000000000 ),
   3037     LIT64( 0x0007000000000000 )
   3038 };
   3039 
   3040 static const uint64 float128QInfWeightOffsets[ float128NumQInfWeightMasks ] = {
   3041     LIT64( 0x0000000000000000 ),
   3042     LIT64( 0x0000000000000000 ),
   3043     LIT64( 0x2000000000000000 ),
   3044     LIT64( 0x3000000000000000 ),
   3045     LIT64( 0x3800000000000000 ),
   3046     LIT64( 0x3C00000000000000 ),
   3047     LIT64( 0x3E00000000000000 ),
   3048     LIT64( 0x3F00000000000000 ),
   3049     LIT64( 0x3F80000000000000 ),
   3050     LIT64( 0x3FC0000000000000 ),
   3051     LIT64( 0x3FE0000000000000 ),
   3052     LIT64( 0x3FF0000000000000 ),
   3053     LIT64( 0x3FF8000000000000 ),
   3054     LIT64( 0x3FFC000000000000 )
   3055 };
   3056 
   3057 static float128 float128RandomQInfP3( void )
   3058 {
   3059     int16 sigNum1, sigNum2;
   3060     uint64 sig1Low, sig2Low;
   3061     int8 weightMaskNum;
   3062     float128 z;
   3063 
   3064     sigNum1 = randomUint8() % float128NumP2;
   3065     sigNum2 = randomUint8() % float128NumP2;
   3066     sig1Low = float128P2[ sigNum1 ].low;
   3067     sig2Low = float128P2[ sigNum2 ].low;
   3068     z.low = sig1Low + sig2Low;
   3069     weightMaskNum = randomUint8() % float128NumQInfWeightMasks;
   3070     z.high =
   3071           ( ( (uint64) ( randomUint8() & 1 ) )<<63 )
   3072         | (   (   ( ( (uint64) randomUint16() )<<48 )
   3073                 & float128QInfWeightMasks[ weightMaskNum ] )
   3074             + float128QInfWeightOffsets[ weightMaskNum ]
   3075           )
   3076         | (   (   float128P2[ sigNum1 ].high
   3077                 + float128P2[ sigNum2 ].high
   3078                 + ( z.low < sig1Low )
   3079               )
   3080             & LIT64( 0x0000FFFFFFFFFFFF )
   3081           );
   3082     return z;
   3083 
   3084 }
   3085 
   3086 static float128 float128RandomQInfPInf( void )
   3087 {
   3088     int8 weightMaskNum;
   3089     float128 z;
   3090 
   3091     weightMaskNum = randomUint8() % float128NumQInfWeightMasks;
   3092     z.low = randomUint64();
   3093     z.high =
   3094           ( ( (uint64) ( randomUint8() & 1 ) )<<63 )
   3095         | (   (   ( ( (uint64) randomUint16() )<<48 )
   3096                 & float128QInfWeightMasks[ weightMaskNum ] )
   3097             + float128QInfWeightOffsets[ weightMaskNum ]
   3098           )
   3099         | ( randomUint64() & LIT64( 0x0000FFFFFFFFFFFF ) );
   3100     return z;
   3101 
   3102 }
   3103 
   3104 static float128 float128Random( void )
   3105 {
   3106 
   3107     switch ( randomUint8() & 7 ) {
   3108      case 0:
   3109      case 1:
   3110      case 2:
   3111         return float128RandomQOutP3();
   3112      case 3:
   3113         return float128RandomQOutPInf();
   3114      case 4:
   3115      case 5:
   3116      case 6:
   3117         return float128RandomQInfP3();
   3118      case 7:
   3119         return float128RandomQInfPInf();
   3120     }
   3121 
   3122 }
   3123 
   3124 #endif
   3125 
   3126 static int8 level = 0;
   3127 
   3128 void testCases_setLevel( int8 levelIn )
   3129 {
   3130 
   3131     if ( ( levelIn < 1 ) || ( 2 < levelIn ) ) {
   3132         fail( "Invalid testing level: %d", levelIn );
   3133     }
   3134     level = levelIn;
   3135 
   3136 }
   3137 
   3138 static int8 sequenceType;
   3139 static sequenceT sequenceA, sequenceB;
   3140 static int8 subcase;
   3141 
   3142 uint32 testCases_total;
   3143 flag testCases_done;
   3144 
   3145 static float32 current_a_float32;
   3146 static float32 current_b_float32;
   3147 static float64 current_a_float64;
   3148 static float64 current_b_float64;
   3149 #ifdef FLOATX80
   3150 static floatx80 current_a_floatx80;
   3151 static floatx80 current_b_floatx80;
   3152 #endif
   3153 #ifdef FLOAT128
   3154 static float128 current_a_float128;
   3155 static float128 current_b_float128;
   3156 #endif
   3157 
   3158 void testCases_initSequence( int8 sequenceTypeIn )
   3159 {
   3160 
   3161     sequenceType = sequenceTypeIn;
   3162     sequenceA.term2Num = 0;
   3163     sequenceA.term1Num = 0;
   3164     sequenceA.expNum = 0;
   3165     sequenceA.done = FALSE;
   3166     sequenceB.term2Num = 0;
   3167     sequenceB.term1Num = 0;
   3168     sequenceB.expNum = 0;
   3169     sequenceB.done = FALSE;
   3170     subcase = 0;
   3171     switch ( level ) {
   3172      case 1:
   3173         switch ( sequenceTypeIn ) {
   3174          case testCases_sequence_a_int32:
   3175             testCases_total = 3 * int32NumP1;
   3176             break;
   3177 #ifdef BITS64
   3178          case testCases_sequence_a_int64:
   3179             testCases_total = 3 * int64NumP1;
   3180             break;
   3181 #endif
   3182          case testCases_sequence_a_float32:
   3183             testCases_total = 3 * float32NumQOutP1;
   3184             break;
   3185          case testCases_sequence_ab_float32:
   3186             testCases_total = 6 * float32NumQInP1 * float32NumQInP1;
   3187             current_a_float32 = float32NextQInP1( &sequenceA );
   3188             break;
   3189          case testCases_sequence_a_float64:
   3190             testCases_total = 3 * float64NumQOutP1;
   3191             break;
   3192          case testCases_sequence_ab_float64:
   3193             testCases_total = 6 * float64NumQInP1 * float64NumQInP1;
   3194             current_a_float64 = float64NextQInP1( &sequenceA );
   3195             break;
   3196 #ifdef FLOATX80
   3197          case testCases_sequence_a_floatx80:
   3198             testCases_total = 3 * floatx80NumQOutP1;
   3199             break;
   3200          case testCases_sequence_ab_floatx80:
   3201             testCases_total = 6 * floatx80NumQInP1 * floatx80NumQInP1;
   3202             current_a_floatx80 = floatx80NextQInP1( &sequenceA );
   3203             break;
   3204 #endif
   3205 #ifdef FLOAT128
   3206          case testCases_sequence_a_float128:
   3207             testCases_total = 3 * float128NumQOutP1;
   3208             break;
   3209          case testCases_sequence_ab_float128:
   3210             testCases_total = 6 * float128NumQInP1 * float128NumQInP1;
   3211             current_a_float128 = float128NextQInP1( &sequenceA );
   3212             break;
   3213 #endif
   3214         }
   3215         break;
   3216      case 2:
   3217         switch ( sequenceTypeIn ) {
   3218          case testCases_sequence_a_int32:
   3219             testCases_total = 2 * int32NumP2;
   3220             break;
   3221 #ifdef BITS64
   3222          case testCases_sequence_a_int64:
   3223             testCases_total = 2 * int64NumP2;
   3224             break;
   3225 #endif
   3226          case testCases_sequence_a_float32:
   3227             testCases_total = 2 * float32NumQOutP2;
   3228             break;
   3229          case testCases_sequence_ab_float32:
   3230             testCases_total = 2 * float32NumQInP2 * float32NumQInP2;
   3231             current_a_float32 = float32NextQInP2( &sequenceA );
   3232             break;
   3233          case testCases_sequence_a_float64:
   3234             testCases_total = 2 * float64NumQOutP2;
   3235             break;
   3236          case testCases_sequence_ab_float64:
   3237             testCases_total = 2 * float64NumQInP2 * float64NumQInP2;
   3238             current_a_float64 = float64NextQInP2( &sequenceA );
   3239             break;
   3240 #ifdef FLOATX80
   3241          case testCases_sequence_a_floatx80:
   3242             testCases_total = 2 * floatx80NumQOutP2;
   3243             break;
   3244          case testCases_sequence_ab_floatx80:
   3245             testCases_total = 2 * floatx80NumQInP2 * floatx80NumQInP2;
   3246             current_a_floatx80 = floatx80NextQInP2( &sequenceA );
   3247             break;
   3248 #endif
   3249 #ifdef FLOAT128
   3250          case testCases_sequence_a_float128:
   3251             testCases_total = 2 * float128NumQOutP2;
   3252             break;
   3253          case testCases_sequence_ab_float128:
   3254             testCases_total = 2 * float128NumQInP2 * float128NumQInP2;
   3255             current_a_float128 = float128NextQInP2( &sequenceA );
   3256             break;
   3257 #endif
   3258         }
   3259         break;
   3260     }
   3261     testCases_done = FALSE;
   3262 
   3263 }
   3264 
   3265 int32 testCases_a_int32;
   3266 #ifdef BITS64
   3267 int64 testCases_a_int64;
   3268 #endif
   3269 float32 testCases_a_float32;
   3270 float32 testCases_b_float32;
   3271 float64 testCases_a_float64;
   3272 float64 testCases_b_float64;
   3273 #ifdef FLOATX80
   3274 floatx80 testCases_a_floatx80;
   3275 floatx80 testCases_b_floatx80;
   3276 #endif
   3277 #ifdef FLOAT128
   3278 float128 testCases_a_float128;
   3279 float128 testCases_b_float128;
   3280 #endif
   3281 
   3282 void testCases_next( void )
   3283 {
   3284 
   3285     switch ( level ) {
   3286      case 1:
   3287         switch ( sequenceType ) {
   3288          case testCases_sequence_a_int32:
   3289             switch ( subcase ) {
   3290              case 0:
   3291                 testCases_a_int32 = int32RandomP3();
   3292                 break;
   3293              case 1:
   3294                 testCases_a_int32 = int32RandomPInf();
   3295                 break;
   3296              case 2:
   3297                 testCases_a_int32 = int32NextP1( &sequenceA );
   3298                 testCases_done = sequenceA.done;
   3299                 subcase = -1;
   3300                 break;
   3301             }
   3302             ++subcase;
   3303             break;
   3304 #ifdef BITS64
   3305          case testCases_sequence_a_int64:
   3306             switch ( subcase ) {
   3307              case 0:
   3308                 testCases_a_int64 = int64RandomP3();
   3309                 break;
   3310              case 1:
   3311                 testCases_a_int64 = int64RandomPInf();
   3312                 break;
   3313              case 2:
   3314                 testCases_a_int64 = int64NextP1( &sequenceA );
   3315                 testCases_done = sequenceA.done;
   3316                 subcase = -1;
   3317                 break;
   3318             }
   3319             ++subcase;
   3320             break;
   3321 #endif
   3322          case testCases_sequence_a_float32:
   3323             switch ( subcase ) {
   3324              case 0:
   3325              case 1:
   3326                 testCases_a_float32 = float32Random();
   3327                 break;
   3328              case 2:
   3329                 testCases_a_float32 = float32NextQOutP1( &sequenceA );
   3330                 testCases_done = sequenceA.done;
   3331                 subcase = -1;
   3332                 break;
   3333             }
   3334             ++subcase;
   3335             break;
   3336          case testCases_sequence_ab_float32:
   3337             switch ( subcase ) {
   3338              case 0:
   3339                 if ( sequenceB.done ) {
   3340                     sequenceB.done = FALSE;
   3341                     current_a_float32 = float32NextQInP1( &sequenceA );
   3342                 }
   3343                 current_b_float32 = float32NextQInP1( &sequenceB );
   3344              case 2:
   3345              case 4:
   3346                 testCases_a_float32 = float32Random();
   3347                 testCases_b_float32 = float32Random();
   3348                 break;
   3349              case 1:
   3350                 testCases_a_float32 = current_a_float32;
   3351                 testCases_b_float32 = float32Random();
   3352                 break;
   3353              case 3:
   3354                 testCases_a_float32 = float32Random();
   3355                 testCases_b_float32 = current_b_float32;
   3356                 break;
   3357              case 5:
   3358                 testCases_a_float32 = current_a_float32;
   3359                 testCases_b_float32 = current_b_float32;
   3360                 testCases_done = sequenceA.done & sequenceB.done;
   3361                 subcase = -1;
   3362                 break;
   3363             }
   3364             ++subcase;
   3365             break;
   3366          case testCases_sequence_a_float64:
   3367             switch ( subcase ) {
   3368              case 0:
   3369              case 1:
   3370                 testCases_a_float64 = float64Random();
   3371                 break;
   3372              case 2:
   3373                 testCases_a_float64 = float64NextQOutP1( &sequenceA );
   3374                 testCases_done = sequenceA.done;
   3375                 subcase = -1;
   3376                 break;
   3377             }
   3378             ++subcase;
   3379             break;
   3380          case testCases_sequence_ab_float64:
   3381             switch ( subcase ) {
   3382              case 0:
   3383                 if ( sequenceB.done ) {
   3384                     sequenceB.done = FALSE;
   3385                     current_a_float64 = float64NextQInP1( &sequenceA );
   3386                 }
   3387                 current_b_float64 = float64NextQInP1( &sequenceB );
   3388              case 2:
   3389              case 4:
   3390                 testCases_a_float64 = float64Random();
   3391                 testCases_b_float64 = float64Random();
   3392                 break;
   3393              case 1:
   3394                 testCases_a_float64 = current_a_float64;
   3395                 testCases_b_float64 = float64Random();
   3396                 break;
   3397              case 3:
   3398                 testCases_a_float64 = float64Random();
   3399                 testCases_b_float64 = current_b_float64;
   3400                 break;
   3401              case 5:
   3402                 testCases_a_float64 = current_a_float64;
   3403                 testCases_b_float64 = current_b_float64;
   3404                 testCases_done = sequenceA.done & sequenceB.done;
   3405                 subcase = -1;
   3406                 break;
   3407             }
   3408             ++subcase;
   3409             break;
   3410 #ifdef FLOATX80
   3411          case testCases_sequence_a_floatx80:
   3412             switch ( subcase ) {
   3413              case 0:
   3414              case 1:
   3415                 testCases_a_floatx80 = floatx80Random();
   3416                 break;
   3417              case 2:
   3418                 testCases_a_floatx80 = floatx80NextQOutP1( &sequenceA );
   3419                 testCases_done = sequenceA.done;
   3420                 subcase = -1;
   3421                 break;
   3422             }
   3423             ++subcase;
   3424             break;
   3425          case testCases_sequence_ab_floatx80:
   3426             switch ( subcase ) {
   3427              case 0:
   3428                 if ( sequenceB.done ) {
   3429                     sequenceB.done = FALSE;
   3430                     current_a_floatx80 = floatx80NextQInP1( &sequenceA );
   3431                 }
   3432                 current_b_floatx80 = floatx80NextQInP1( &sequenceB );
   3433              case 2:
   3434              case 4:
   3435                 testCases_a_floatx80 = floatx80Random();
   3436                 testCases_b_floatx80 = floatx80Random();
   3437                 break;
   3438              case 1:
   3439                 testCases_a_floatx80 = current_a_floatx80;
   3440                 testCases_b_floatx80 = floatx80Random();
   3441                 break;
   3442              case 3:
   3443                 testCases_a_floatx80 = floatx80Random();
   3444                 testCases_b_floatx80 = current_b_floatx80;
   3445                 break;
   3446              case 5:
   3447                 testCases_a_floatx80 = current_a_floatx80;
   3448                 testCases_b_floatx80 = current_b_floatx80;
   3449                 testCases_done = sequenceA.done & sequenceB.done;
   3450                 subcase = -1;
   3451                 break;
   3452             }
   3453             ++subcase;
   3454             break;
   3455 #endif
   3456 #ifdef FLOAT128
   3457          case testCases_sequence_a_float128:
   3458             switch ( subcase ) {
   3459              case 0:
   3460              case 1:
   3461                 testCases_a_float128 = float128Random();
   3462                 break;
   3463              case 2:
   3464                 testCases_a_float128 = float128NextQOutP1( &sequenceA );
   3465                 testCases_done = sequenceA.done;
   3466                 subcase = -1;
   3467                 break;
   3468             }
   3469             ++subcase;
   3470             break;
   3471          case testCases_sequence_ab_float128:
   3472             switch ( subcase ) {
   3473              case 0:
   3474                 if ( sequenceB.done ) {
   3475                     sequenceB.done = FALSE;
   3476                     current_a_float128 = float128NextQInP1( &sequenceA );
   3477                 }
   3478                 current_b_float128 = float128NextQInP1( &sequenceB );
   3479              case 2:
   3480              case 4:
   3481                 testCases_a_float128 = float128Random();
   3482                 testCases_b_float128 = float128Random();
   3483                 break;
   3484              case 1:
   3485                 testCases_a_float128 = current_a_float128;
   3486                 testCases_b_float128 = float128Random();
   3487                 break;
   3488              case 3:
   3489                 testCases_a_float128 = float128Random();
   3490                 testCases_b_float128 = current_b_float128;
   3491                 break;
   3492              case 5:
   3493                 testCases_a_float128 = current_a_float128;
   3494                 testCases_b_float128 = current_b_float128;
   3495                 testCases_done = sequenceA.done & sequenceB.done;
   3496                 subcase = -1;
   3497                 break;
   3498             }
   3499             ++subcase;
   3500             break;
   3501 #endif
   3502         }
   3503         break;
   3504      case 2:
   3505         switch ( sequenceType ) {
   3506          case testCases_sequence_a_int32:
   3507             switch ( subcase ) {
   3508              case 0:
   3509                 testCases_a_int32 = int32RandomP3();
   3510                 break;
   3511              case 2:
   3512                 testCases_a_int32 = int32RandomPInf();
   3513                 break;
   3514              case 3:
   3515                 subcase = -1;
   3516              case 1:
   3517                 testCases_a_int32 = int32NextP2( &sequenceA );
   3518                 testCases_done = sequenceA.done;
   3519                 break;
   3520             }
   3521             ++subcase;
   3522             break;
   3523 #ifdef BITS64
   3524          case testCases_sequence_a_int64:
   3525             switch ( subcase ) {
   3526              case 0:
   3527                 testCases_a_int64 = int64RandomP3();
   3528                 break;
   3529              case 2:
   3530                 testCases_a_int64 = int64RandomPInf();
   3531                 break;
   3532              case 3:
   3533                 subcase = -1;
   3534              case 1:
   3535                 testCases_a_int64 = int64NextP2( &sequenceA );
   3536                 testCases_done = sequenceA.done;
   3537                 break;
   3538             }
   3539             ++subcase;
   3540             break;
   3541 #endif
   3542          case testCases_sequence_a_float32:
   3543             switch ( subcase ) {
   3544              case 0:
   3545                 testCases_a_float32 = float32Random();
   3546                 break;
   3547              case 1:
   3548                 testCases_a_float32 = float32NextQOutP2( &sequenceA );
   3549                 testCases_done = sequenceA.done;
   3550                 subcase = -1;
   3551                 break;
   3552             }
   3553             ++subcase;
   3554             break;
   3555          case testCases_sequence_ab_float32:
   3556             switch ( subcase ) {
   3557              case 0:
   3558                 testCases_a_float32 = float32Random();
   3559                 testCases_b_float32 = float32Random();
   3560                 break;
   3561              case 1:
   3562                 if ( sequenceB.done ) {
   3563                     sequenceB.done = FALSE;
   3564                     current_a_float32 = float32NextQInP2( &sequenceA );
   3565                 }
   3566                 testCases_a_float32 = current_a_float32;
   3567                 testCases_b_float32 = float32NextQInP2( &sequenceB );
   3568                 testCases_done = sequenceA.done & sequenceB.done;
   3569                 subcase = -1;
   3570                 break;
   3571             }
   3572             ++subcase;
   3573             break;
   3574          case testCases_sequence_a_float64:
   3575             switch ( subcase ) {
   3576              case 0:
   3577                 testCases_a_float64 = float64Random();
   3578                 break;
   3579              case 1:
   3580                 testCases_a_float64 = float64NextQOutP2( &sequenceA );
   3581                 testCases_done = sequenceA.done;
   3582                 subcase = -1;
   3583                 break;
   3584             }
   3585             ++subcase;
   3586             break;
   3587          case testCases_sequence_ab_float64:
   3588             switch ( subcase ) {
   3589              case 0:
   3590                 testCases_a_float64 = float64Random();
   3591                 testCases_b_float64 = float64Random();
   3592                 break;
   3593              case 1:
   3594                 if ( sequenceB.done ) {
   3595                     sequenceB.done = FALSE;
   3596                     current_a_float64 = float64NextQInP2( &sequenceA );
   3597                 }
   3598                 testCases_a_float64 = current_a_float64;
   3599                 testCases_b_float64 = float64NextQInP2( &sequenceB );
   3600                 testCases_done = sequenceA.done & sequenceB.done;
   3601                 subcase = -1;
   3602                 break;
   3603             }
   3604             ++subcase;
   3605             break;
   3606 #ifdef FLOATX80
   3607          case testCases_sequence_a_floatx80:
   3608             switch ( subcase ) {
   3609              case 0:
   3610                 testCases_a_floatx80 = floatx80Random();
   3611                 break;
   3612              case 1:
   3613                 testCases_a_floatx80 = floatx80NextQOutP2( &sequenceA );
   3614                 testCases_done = sequenceA.done;
   3615                 subcase = -1;
   3616                 break;
   3617             }
   3618             ++subcase;
   3619             break;
   3620          case testCases_sequence_ab_floatx80:
   3621             switch ( subcase ) {
   3622              case 0:
   3623                 testCases_a_floatx80 = floatx80Random();
   3624                 testCases_b_floatx80 = floatx80Random();
   3625                 break;
   3626              case 1:
   3627                 if ( sequenceB.done ) {
   3628                     sequenceB.done = FALSE;
   3629                     current_a_floatx80 = floatx80NextQInP2( &sequenceA );
   3630                 }
   3631                 testCases_a_floatx80 = current_a_floatx80;
   3632                 testCases_b_floatx80 = floatx80NextQInP2( &sequenceB );
   3633                 testCases_done = sequenceA.done & sequenceB.done;
   3634                 subcase = -1;
   3635                 break;
   3636             }
   3637             ++subcase;
   3638             break;
   3639 #endif
   3640 #ifdef FLOAT128
   3641          case testCases_sequence_a_float128:
   3642             switch ( subcase ) {
   3643              case 0:
   3644                 testCases_a_float128 = float128Random();
   3645                 break;
   3646              case 1:
   3647                 testCases_a_float128 = float128NextQOutP2( &sequenceA );
   3648                 testCases_done = sequenceA.done;
   3649                 subcase = -1;
   3650                 break;
   3651             }
   3652             ++subcase;
   3653             break;
   3654          case testCases_sequence_ab_float128:
   3655             switch ( subcase ) {
   3656              case 0:
   3657                 testCases_a_float128 = float128Random();
   3658                 testCases_b_float128 = float128Random();
   3659                 break;
   3660              case 1:
   3661                 if ( sequenceB.done ) {
   3662                     sequenceB.done = FALSE;
   3663                     current_a_float128 = float128NextQInP2( &sequenceA );
   3664                 }
   3665                 testCases_a_float128 = current_a_float128;
   3666                 testCases_b_float128 = float128NextQInP2( &sequenceB );
   3667                 testCases_done = sequenceA.done & sequenceB.done;
   3668                 subcase = -1;
   3669                 break;
   3670             }
   3671             ++subcase;
   3672             break;
   3673 #endif
   3674         }
   3675         break;
   3676     }
   3677 
   3678 }
   3679 
   3680