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