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