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