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