mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			921 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			921 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /*============================================================================
 | |
| 
 | |
| This C source file is part of TestFloat, Release 3e, a package of programs for
 | |
| testing the correctness of floating-point arithmetic complying with the IEEE
 | |
| Standard for Floating-Point, by John R. Hauser.
 | |
| 
 | |
| Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
 | |
| All rights reserved.
 | |
| 
 | |
| Redistribution and use in source and binary forms, with or without
 | |
| modification, are permitted provided that the following conditions are met:
 | |
| 
 | |
|  1. Redistributions of source code must retain the above copyright notice,
 | |
|     this list of conditions, and the following disclaimer.
 | |
| 
 | |
|  2. Redistributions in binary form must reproduce the above copyright notice,
 | |
|     this list of conditions, and the following disclaimer in the documentation
 | |
|     and/or other materials provided with the distribution.
 | |
| 
 | |
|  3. Neither the name of the University nor the names of its contributors may
 | |
|     be used to endorse or promote products derived from this software without
 | |
|     specific prior written permission.
 | |
| 
 | |
| THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
 | |
| EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 | |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
 | |
| DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
 | |
| DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | |
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| 
 | |
| =============================================================================*/
 | |
| 
 | |
| #include <stdbool.h>
 | |
| #include <stdint.h>
 | |
| #include "platform.h"
 | |
| #include "random.h"
 | |
| #include "softfloat.h"
 | |
| #include "genCases.h"
 | |
| 
 | |
| #ifdef EXTFLOAT80
 | |
| 
 | |
| struct sequence {
 | |
|     int expNum, term1Num, term2Num;
 | |
|     bool done;
 | |
| };
 | |
| 
 | |
| enum {
 | |
|     extF80NumQIn  =  22,
 | |
|     extF80NumQOut =  76,
 | |
|     extF80NumP1   =   4,
 | |
|     extF80NumP2   = 248
 | |
| };
 | |
| static const uint16_t extF80QIn[extF80NumQIn] = {
 | |
|     0x0000,    /* positive, subnormal       */
 | |
|     0x0001,    /* positive, -16382          */
 | |
|     0x3FBF,    /* positive,    -64          */
 | |
|     0x3FFD,    /* positive,     -2          */
 | |
|     0x3FFE,    /* positive,     -1          */
 | |
|     0x3FFF,    /* positive,      0          */
 | |
|     0x4000,    /* positive,      1          */
 | |
|     0x4001,    /* positive,      2          */
 | |
|     0x403F,    /* positive,     64          */
 | |
|     0x7FFE,    /* positive,  16383          */
 | |
|     0x7FFF,    /* positive, infinity or NaN */
 | |
|     0x8000,    /* negative, subnormal       */
 | |
|     0x8001,    /* negative, -16382          */
 | |
|     0xBFBF,    /* negative,    -64          */
 | |
|     0xBFFD,    /* negative,     -2          */
 | |
|     0xBFFE,    /* negative,     -1          */
 | |
|     0xBFFF,    /* negative,      0          */
 | |
|     0xC000,    /* negative,      1          */
 | |
|     0xC001,    /* negative,      2          */
 | |
|     0xC03F,    /* negative,     64          */
 | |
|     0xFFFE,    /* negative,  16383          */
 | |
|     0xFFFF     /* negative, infinity or NaN */
 | |
| };
 | |
| static const uint16_t extF80QOut[extF80NumQOut] = {
 | |
|     0x0000,    /* positive, subnormal       */
 | |
|     0x0001,    /* positive, -16382          */
 | |
|     0x0002,    /* positive, -16381          */
 | |
|     0x3BFE,    /* positive,  -1025          */
 | |
|     0x3BFF,    /* positive,  -1024          */
 | |
|     0x3C00,    /* positive,  -1023          */
 | |
|     0x3C01,    /* positive,  -1022          */
 | |
|     0x3F7E,    /* positive,   -129          */
 | |
|     0x3F7F,    /* positive,   -128          */
 | |
|     0x3F80,    /* positive,   -127          */
 | |
|     0x3F81,    /* positive,   -126          */
 | |
|     0x3FBF,    /* positive,    -64          */
 | |
|     0x3FFB,    /* positive,     -4          */
 | |
|     0x3FFC,    /* positive,     -3          */
 | |
|     0x3FFD,    /* positive,     -2          */
 | |
|     0x3FFE,    /* positive,     -1          */
 | |
|     0x3FFF,    /* positive,      0          */
 | |
|     0x4000,    /* positive,      1          */
 | |
|     0x4001,    /* positive,      2          */
 | |
|     0x4002,    /* positive,      3          */
 | |
|     0x4003,    /* positive,      4          */
 | |
|     0x401C,    /* positive,     29          */
 | |
|     0x401D,    /* positive,     30          */
 | |
|     0x401E,    /* positive,     31          */
 | |
|     0x401F,    /* positive,     32          */
 | |
|     0x403C,    /* positive,     61          */
 | |
|     0x403D,    /* positive,     62          */
 | |
|     0x403E,    /* positive,     63          */
 | |
|     0x403F,    /* positive,     64          */
 | |
|     0x407E,    /* positive,    127          */
 | |
|     0x407F,    /* positive,    128          */
 | |
|     0x4080,    /* positive,    129          */
 | |
|     0x43FE,    /* positive,   1023          */
 | |
|     0x43FF,    /* positive,   1024          */
 | |
|     0x4400,    /* positive,   1025          */
 | |
|     0x7FFD,    /* positive,  16382          */
 | |
|     0x7FFE,    /* positive,  16383          */
 | |
|     0x7FFF,    /* positive, infinity or NaN */
 | |
|     0x8000,    /* negative, subnormal       */
 | |
|     0x8001,    /* negative, -16382          */
 | |
|     0x8002,    /* negative, -16381          */
 | |
|     0xBBFE,    /* negative,  -1025          */
 | |
|     0xBBFF,    /* negative,  -1024          */
 | |
|     0xBC00,    /* negative,  -1023          */
 | |
|     0xBC01,    /* negative,  -1022          */
 | |
|     0xBF7E,    /* negative,   -129          */
 | |
|     0xBF7F,    /* negative,   -128          */
 | |
|     0xBF80,    /* negative,   -127          */
 | |
|     0xBF81,    /* negative,   -126          */
 | |
|     0xBFBF,    /* negative,    -64          */
 | |
|     0xBFFB,    /* negative,     -4          */
 | |
|     0xBFFC,    /* negative,     -3          */
 | |
|     0xBFFD,    /* negative,     -2          */
 | |
|     0xBFFE,    /* negative,     -1          */
 | |
|     0xBFFF,    /* negative,      0          */
 | |
|     0xC000,    /* negative,      1          */
 | |
|     0xC001,    /* negative,      2          */
 | |
|     0xC002,    /* negative,      3          */
 | |
|     0xC003,    /* negative,      4          */
 | |
|     0xC01C,    /* negative,     29          */
 | |
|     0xC01D,    /* negative,     30          */
 | |
|     0xC01E,    /* negative,     31          */
 | |
|     0xC01F,    /* negative,     32          */
 | |
|     0xC03C,    /* negative,     61          */
 | |
|     0xC03D,    /* negative,     62          */
 | |
|     0xC03E,    /* negative,     63          */
 | |
|     0xC03F,    /* negative,     64          */
 | |
|     0xC07E,    /* negative,    127          */
 | |
|     0xC07F,    /* negative,    128          */
 | |
|     0xC080,    /* negative,    129          */
 | |
|     0xC3FE,    /* negative,   1023          */
 | |
|     0xC3FF,    /* negative,   1024          */
 | |
|     0xC400,    /* negative,   1025          */
 | |
|     0xFFFD,    /* negative,  16382          */
 | |
|     0xFFFE,    /* negative,  16383          */
 | |
|     0xFFFF     /* negative, infinity or NaN */
 | |
| };
 | |
| static const uint64_t extF80P1[extF80NumP1] = {
 | |
|     UINT64_C( 0x0000000000000000 ),
 | |
|     UINT64_C( 0x0000000000000001 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFE )
 | |
| };
 | |
| static const uint64_t extF80P2[extF80NumP2] = {
 | |
|     UINT64_C( 0x0000000000000000 ),
 | |
|     UINT64_C( 0x0000000000000001 ),
 | |
|     UINT64_C( 0x0000000000000002 ),
 | |
|     UINT64_C( 0x0000000000000004 ),
 | |
|     UINT64_C( 0x0000000000000008 ),
 | |
|     UINT64_C( 0x0000000000000010 ),
 | |
|     UINT64_C( 0x0000000000000020 ),
 | |
|     UINT64_C( 0x0000000000000040 ),
 | |
|     UINT64_C( 0x0000000000000080 ),
 | |
|     UINT64_C( 0x0000000000000100 ),
 | |
|     UINT64_C( 0x0000000000000200 ),
 | |
|     UINT64_C( 0x0000000000000400 ),
 | |
|     UINT64_C( 0x0000000000000800 ),
 | |
|     UINT64_C( 0x0000000000001000 ),
 | |
|     UINT64_C( 0x0000000000002000 ),
 | |
|     UINT64_C( 0x0000000000004000 ),
 | |
|     UINT64_C( 0x0000000000008000 ),
 | |
|     UINT64_C( 0x0000000000010000 ),
 | |
|     UINT64_C( 0x0000000000020000 ),
 | |
|     UINT64_C( 0x0000000000040000 ),
 | |
|     UINT64_C( 0x0000000000080000 ),
 | |
|     UINT64_C( 0x0000000000100000 ),
 | |
|     UINT64_C( 0x0000000000200000 ),
 | |
|     UINT64_C( 0x0000000000400000 ),
 | |
|     UINT64_C( 0x0000000000800000 ),
 | |
|     UINT64_C( 0x0000000001000000 ),
 | |
|     UINT64_C( 0x0000000002000000 ),
 | |
|     UINT64_C( 0x0000000004000000 ),
 | |
|     UINT64_C( 0x0000000008000000 ),
 | |
|     UINT64_C( 0x0000000010000000 ),
 | |
|     UINT64_C( 0x0000000020000000 ),
 | |
|     UINT64_C( 0x0000000040000000 ),
 | |
|     UINT64_C( 0x0000000080000000 ),
 | |
|     UINT64_C( 0x0000000100000000 ),
 | |
|     UINT64_C( 0x0000000200000000 ),
 | |
|     UINT64_C( 0x0000000400000000 ),
 | |
|     UINT64_C( 0x0000000800000000 ),
 | |
|     UINT64_C( 0x0000001000000000 ),
 | |
|     UINT64_C( 0x0000002000000000 ),
 | |
|     UINT64_C( 0x0000004000000000 ),
 | |
|     UINT64_C( 0x0000008000000000 ),
 | |
|     UINT64_C( 0x0000010000000000 ),
 | |
|     UINT64_C( 0x0000020000000000 ),
 | |
|     UINT64_C( 0x0000040000000000 ),
 | |
|     UINT64_C( 0x0000080000000000 ),
 | |
|     UINT64_C( 0x0000100000000000 ),
 | |
|     UINT64_C( 0x0000200000000000 ),
 | |
|     UINT64_C( 0x0000400000000000 ),
 | |
|     UINT64_C( 0x0000800000000000 ),
 | |
|     UINT64_C( 0x0001000000000000 ),
 | |
|     UINT64_C( 0x0002000000000000 ),
 | |
|     UINT64_C( 0x0004000000000000 ),
 | |
|     UINT64_C( 0x0008000000000000 ),
 | |
|     UINT64_C( 0x0010000000000000 ),
 | |
|     UINT64_C( 0x0020000000000000 ),
 | |
|     UINT64_C( 0x0040000000000000 ),
 | |
|     UINT64_C( 0x0080000000000000 ),
 | |
|     UINT64_C( 0x0100000000000000 ),
 | |
|     UINT64_C( 0x0200000000000000 ),
 | |
|     UINT64_C( 0x0400000000000000 ),
 | |
|     UINT64_C( 0x0800000000000000 ),
 | |
|     UINT64_C( 0x1000000000000000 ),
 | |
|     UINT64_C( 0x2000000000000000 ),
 | |
|     UINT64_C( 0x4000000000000000 ),
 | |
|     UINT64_C( 0x6000000000000000 ),
 | |
|     UINT64_C( 0x7000000000000000 ),
 | |
|     UINT64_C( 0x7800000000000000 ),
 | |
|     UINT64_C( 0x7C00000000000000 ),
 | |
|     UINT64_C( 0x7E00000000000000 ),
 | |
|     UINT64_C( 0x7F00000000000000 ),
 | |
|     UINT64_C( 0x7F80000000000000 ),
 | |
|     UINT64_C( 0x7FC0000000000000 ),
 | |
|     UINT64_C( 0x7FE0000000000000 ),
 | |
|     UINT64_C( 0x7FF0000000000000 ),
 | |
|     UINT64_C( 0x7FF8000000000000 ),
 | |
|     UINT64_C( 0x7FFC000000000000 ),
 | |
|     UINT64_C( 0x7FFE000000000000 ),
 | |
|     UINT64_C( 0x7FFF000000000000 ),
 | |
|     UINT64_C( 0x7FFF800000000000 ),
 | |
|     UINT64_C( 0x7FFFC00000000000 ),
 | |
|     UINT64_C( 0x7FFFE00000000000 ),
 | |
|     UINT64_C( 0x7FFFF00000000000 ),
 | |
|     UINT64_C( 0x7FFFF80000000000 ),
 | |
|     UINT64_C( 0x7FFFFC0000000000 ),
 | |
|     UINT64_C( 0x7FFFFE0000000000 ),
 | |
|     UINT64_C( 0x7FFFFF0000000000 ),
 | |
|     UINT64_C( 0x7FFFFF8000000000 ),
 | |
|     UINT64_C( 0x7FFFFFC000000000 ),
 | |
|     UINT64_C( 0x7FFFFFE000000000 ),
 | |
|     UINT64_C( 0x7FFFFFF000000000 ),
 | |
|     UINT64_C( 0x7FFFFFF800000000 ),
 | |
|     UINT64_C( 0x7FFFFFFC00000000 ),
 | |
|     UINT64_C( 0x7FFFFFFE00000000 ),
 | |
|     UINT64_C( 0x7FFFFFFF00000000 ),
 | |
|     UINT64_C( 0x7FFFFFFF80000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFC0000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFE0000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFF0000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFF8000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFC000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFE000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFF000000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFF800000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFC00000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFE00000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFF00000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFF80000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFC0000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFE0000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFF0000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFF8000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFC000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFE000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFF000 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFF800 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFC00 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFE00 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFF00 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFF80 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFC0 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFE0 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFF0 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFF8 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFC ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFE ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFD ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFFB ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFF7 ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFEF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFDF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFFBF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFF7F ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFEFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFDFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFFBFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFF7FF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFEFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFDFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFFBFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFF7FFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFEFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFDFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFFBFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFF7FFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFEFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFDFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFFBFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFF7FFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFEFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFDFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFFBFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFF7FFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFEFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFDFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFFBFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFF7FFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFEFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFDFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFFBFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFF7FFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFEFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFDFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFFBFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFF7FFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFEFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFDFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFFBFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFF7FFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFEFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFDFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFFBFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFF7FFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFEFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFDFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FFBFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FF7FFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FEFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FDFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7FBFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7F7FFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7EFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7DFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x7BFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x77FFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x6FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x5FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x3FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x1FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x0FFFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x07FFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x03FFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x01FFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x00FFFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x007FFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x003FFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x001FFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x000FFFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x0007FFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x0003FFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x0001FFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x0000FFFFFFFFFFFF ),
 | |
|     UINT64_C( 0x00007FFFFFFFFFFF ),
 | |
|     UINT64_C( 0x00003FFFFFFFFFFF ),
 | |
|     UINT64_C( 0x00001FFFFFFFFFFF ),
 | |
|     UINT64_C( 0x00000FFFFFFFFFFF ),
 | |
|     UINT64_C( 0x000007FFFFFFFFFF ),
 | |
|     UINT64_C( 0x000003FFFFFFFFFF ),
 | |
|     UINT64_C( 0x000001FFFFFFFFFF ),
 | |
|     UINT64_C( 0x000000FFFFFFFFFF ),
 | |
|     UINT64_C( 0x0000007FFFFFFFFF ),
 | |
|     UINT64_C( 0x0000003FFFFFFFFF ),
 | |
|     UINT64_C( 0x0000001FFFFFFFFF ),
 | |
|     UINT64_C( 0x0000000FFFFFFFFF ),
 | |
|     UINT64_C( 0x00000007FFFFFFFF ),
 | |
|     UINT64_C( 0x00000003FFFFFFFF ),
 | |
|     UINT64_C( 0x00000001FFFFFFFF ),
 | |
|     UINT64_C( 0x00000000FFFFFFFF ),
 | |
|     UINT64_C( 0x000000007FFFFFFF ),
 | |
|     UINT64_C( 0x000000003FFFFFFF ),
 | |
|     UINT64_C( 0x000000001FFFFFFF ),
 | |
|     UINT64_C( 0x000000000FFFFFFF ),
 | |
|     UINT64_C( 0x0000000007FFFFFF ),
 | |
|     UINT64_C( 0x0000000003FFFFFF ),
 | |
|     UINT64_C( 0x0000000001FFFFFF ),
 | |
|     UINT64_C( 0x0000000000FFFFFF ),
 | |
|     UINT64_C( 0x00000000007FFFFF ),
 | |
|     UINT64_C( 0x00000000003FFFFF ),
 | |
|     UINT64_C( 0x00000000001FFFFF ),
 | |
|     UINT64_C( 0x00000000000FFFFF ),
 | |
|     UINT64_C( 0x000000000007FFFF ),
 | |
|     UINT64_C( 0x000000000003FFFF ),
 | |
|     UINT64_C( 0x000000000001FFFF ),
 | |
|     UINT64_C( 0x000000000000FFFF ),
 | |
|     UINT64_C( 0x0000000000007FFF ),
 | |
|     UINT64_C( 0x0000000000003FFF ),
 | |
|     UINT64_C( 0x0000000000001FFF ),
 | |
|     UINT64_C( 0x0000000000000FFF ),
 | |
|     UINT64_C( 0x00000000000007FF ),
 | |
|     UINT64_C( 0x00000000000003FF ),
 | |
|     UINT64_C( 0x00000000000001FF ),
 | |
|     UINT64_C( 0x00000000000000FF ),
 | |
|     UINT64_C( 0x000000000000007F ),
 | |
|     UINT64_C( 0x000000000000003F ),
 | |
|     UINT64_C( 0x000000000000001F ),
 | |
|     UINT64_C( 0x000000000000000F ),
 | |
|     UINT64_C( 0x0000000000000007 ),
 | |
|     UINT64_C( 0x0000000000000003 )
 | |
| };
 | |
| 
 | |
| static const uint_fast32_t extF80NumQInP1 = extF80NumQIn * extF80NumP1;
 | |
| static const uint_fast32_t extF80NumQOutP1 = extF80NumQOut * extF80NumP1;
 | |
| 
 | |
| static void extF80NextQInP1( struct sequence *sequencePtr, extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     int expNum, sigNum;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     expNum = sequencePtr->expNum;
 | |
|     sigNum = sequencePtr->term1Num;
 | |
|     uiZ64 = extF80QIn[expNum];
 | |
|     uiZ0  = extF80P1[sigNum];
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
|     ++sigNum;
 | |
|     if ( extF80NumP1 <= sigNum ) {
 | |
|         sigNum = 0;
 | |
|         ++expNum;
 | |
|         if ( extF80NumQIn <= expNum ) {
 | |
|             expNum = 0;
 | |
|             sequencePtr->done = true;
 | |
|         }
 | |
|         sequencePtr->expNum = expNum;
 | |
|     }
 | |
|     sequencePtr->term1Num = sigNum;
 | |
| 
 | |
| }
 | |
| 
 | |
| static
 | |
|  void extF80NextQOutP1( struct sequence *sequencePtr, extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     int expNum, sigNum;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     expNum = sequencePtr->expNum;
 | |
|     sigNum = sequencePtr->term1Num;
 | |
|     uiZ64 = extF80QOut[expNum];
 | |
|     uiZ0  = extF80P1[sigNum];
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
|     ++sigNum;
 | |
|     if ( extF80NumP1 <= sigNum ) {
 | |
|         sigNum = 0;
 | |
|         ++expNum;
 | |
|         if ( extF80NumQOut <= expNum ) {
 | |
|             expNum = 0;
 | |
|             sequencePtr->done = true;
 | |
|         }
 | |
|         sequencePtr->expNum = expNum;
 | |
|     }
 | |
|     sequencePtr->term1Num = sigNum;
 | |
| 
 | |
| }
 | |
| 
 | |
| static const uint_fast32_t extF80NumQInP2 = extF80NumQIn * extF80NumP2;
 | |
| static const uint_fast32_t extF80NumQOutP2 = extF80NumQOut * extF80NumP2;
 | |
| 
 | |
| static void extF80NextQInP2( struct sequence *sequencePtr, extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     int expNum, sigNum;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     expNum = sequencePtr->expNum;
 | |
|     sigNum = sequencePtr->term1Num;
 | |
|     uiZ64 = extF80QIn[expNum];
 | |
|     uiZ0  = extF80P2[sigNum];
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
|     ++sigNum;
 | |
|     if ( extF80NumP2 <= sigNum ) {
 | |
|         sigNum = 0;
 | |
|         ++expNum;
 | |
|         if ( extF80NumQIn <= expNum ) {
 | |
|             expNum = 0;
 | |
|             sequencePtr->done = true;
 | |
|         }
 | |
|         sequencePtr->expNum = expNum;
 | |
|     }
 | |
|     sequencePtr->term1Num = sigNum;
 | |
| 
 | |
| }
 | |
| 
 | |
| static
 | |
|  void extF80NextQOutP2( struct sequence *sequencePtr, extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     int expNum, sigNum;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     expNum = sequencePtr->expNum;
 | |
|     sigNum = sequencePtr->term1Num;
 | |
|     uiZ64 = extF80QOut[expNum];
 | |
|     uiZ0  = extF80P2[sigNum];
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
|     ++sigNum;
 | |
|     if ( extF80NumP2 <= sigNum ) {
 | |
|         sigNum = 0;
 | |
|         ++expNum;
 | |
|         if ( extF80NumQOut <= expNum ) {
 | |
|             expNum = 0;
 | |
|             sequencePtr->done = true;
 | |
|         }
 | |
|         sequencePtr->expNum = expNum;
 | |
|     }
 | |
|     sequencePtr->term1Num = sigNum;
 | |
| 
 | |
| }
 | |
| 
 | |
| static void extF80RandomQOutP3( extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     uiZ64 = extF80QOut[randomN_ui8( extF80NumQOut )];
 | |
|     uiZ0 =
 | |
|         (extF80P2[randomN_ui8( extF80NumP2 )]
 | |
|              + extF80P2[randomN_ui8( extF80NumP2 )])
 | |
|             & UINT64_C( 0x7FFFFFFFFFFFFFFF );
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
| 
 | |
| }
 | |
| 
 | |
| static void extF80RandomQOutPInf( extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     uiZ64 = extF80QOut[randomN_ui8( extF80NumQOut )];
 | |
|     uiZ0 = random_ui64() & UINT64_C( 0x7FFFFFFFFFFFFFFF );
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
| 
 | |
| }
 | |
| 
 | |
| enum { extF80NumQInfWeightMasks = 14 };
 | |
| static const uint16_t extF80QInfWeightMasks[extF80NumQInfWeightMasks] = {
 | |
|     0xFFFF,
 | |
|     0xFFFF,
 | |
|     0xBFFF,
 | |
|     0x9FFF,
 | |
|     0x87FF,
 | |
|     0x87FF,
 | |
|     0x83FF,
 | |
|     0x81FF,
 | |
|     0x80FF,
 | |
|     0x807F,
 | |
|     0x803F,
 | |
|     0x801F,
 | |
|     0x800F,
 | |
|     0x8007
 | |
| };
 | |
| static const uint16_t extF80QInfWeightOffsets[extF80NumQInfWeightMasks] = {
 | |
|     0x0000,
 | |
|     0x0000,
 | |
|     0x2000,
 | |
|     0x3000,
 | |
|     0x3800,
 | |
|     0x3C00,
 | |
|     0x3E00,
 | |
|     0x3F00,
 | |
|     0x3F80,
 | |
|     0x3FC0,
 | |
|     0x3FE0,
 | |
|     0x3FF0,
 | |
|     0x3FF8,
 | |
|     0x3FFC
 | |
| };
 | |
| 
 | |
| static void extF80RandomQInfP3( extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     int weightMaskNum;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     weightMaskNum = randomN_ui8( extF80NumQInfWeightMasks );
 | |
|     uiZ64 =
 | |
|         (random_ui16() & extF80QInfWeightMasks[weightMaskNum])
 | |
|             + extF80QInfWeightOffsets[weightMaskNum];
 | |
|     uiZ0 =
 | |
|         (extF80P2[randomN_ui8( extF80NumP2 )]
 | |
|              + extF80P2[randomN_ui8( extF80NumP2 )])
 | |
|             & UINT64_C( 0x7FFFFFFFFFFFFFFF );
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
| 
 | |
| }
 | |
| 
 | |
| static void extF80RandomQInfPInf( extFloat80_t *zPtr )
 | |
| {
 | |
|     struct extFloat80M *zSPtr;
 | |
|     int weightMaskNum;
 | |
|     uint_fast16_t uiZ64;
 | |
|     uint_fast64_t uiZ0;
 | |
| 
 | |
|     zSPtr = (struct extFloat80M *) zPtr;
 | |
|     weightMaskNum = randomN_ui8( extF80NumQInfWeightMasks );
 | |
|     uiZ64 =
 | |
|         (random_ui16() & extF80QInfWeightMasks[weightMaskNum])
 | |
|             + extF80QInfWeightOffsets[weightMaskNum];
 | |
|     uiZ0 = random_ui64() & UINT64_C( 0x7FFFFFFFFFFFFFFF );
 | |
|     if ( uiZ64 & 0x7FFF ) uiZ0 |= UINT64_C( 0x8000000000000000 );
 | |
|     zSPtr->signExp = uiZ64;
 | |
|     zSPtr->signif  = uiZ0;
 | |
| 
 | |
| }
 | |
| 
 | |
| static void extF80Random( extFloat80_t *zPtr )
 | |
| {
 | |
| 
 | |
|     switch ( random_ui8() & 7 ) {
 | |
|      case 0:
 | |
|      case 1:
 | |
|      case 2:
 | |
|         extF80RandomQOutP3( zPtr );
 | |
|         break;
 | |
|      case 3:
 | |
|         extF80RandomQOutPInf( zPtr );
 | |
|         break;
 | |
|      case 4:
 | |
|      case 5:
 | |
|      case 6:
 | |
|         extF80RandomQInfP3( zPtr );
 | |
|         break;
 | |
|      case 7:
 | |
|         extF80RandomQInfPInf( zPtr );
 | |
|         break;
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| static struct sequence sequenceA, sequenceB, sequenceC;
 | |
| static extFloat80_t currentA, currentB, currentC;
 | |
| static int subcase;
 | |
| 
 | |
| extFloat80_t genCases_extF80_a, genCases_extF80_b, genCases_extF80_c;
 | |
| 
 | |
| void genCases_extF80_a_init( void )
 | |
| {
 | |
| 
 | |
|     sequenceA.expNum = 0;
 | |
|     sequenceA.term1Num = 0;
 | |
|     sequenceA.term2Num = 0;
 | |
|     sequenceA.done = false;
 | |
|     subcase = 0;
 | |
|     genCases_total =
 | |
|         (genCases_level == 1) ? 3 * extF80NumQOutP1 : 2 * extF80NumQOutP2;
 | |
|     genCases_done = false;
 | |
| 
 | |
| }
 | |
| 
 | |
| void genCases_extF80_a_next( void )
 | |
| {
 | |
| 
 | |
|     if ( genCases_level == 1 ) {
 | |
|         switch ( subcase ) {
 | |
|          case 0:
 | |
|          case 1:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             break;
 | |
|          case 2:
 | |
|             extF80NextQOutP1( &sequenceA, &genCases_extF80_a );
 | |
|             genCases_done = sequenceA.done;
 | |
|             subcase = -1;
 | |
|             break;
 | |
|         }
 | |
|      } else {
 | |
|         switch ( subcase ) {
 | |
|          case 0:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             break;
 | |
|          case 1:
 | |
|             extF80NextQOutP2( &sequenceA, &genCases_extF80_a );
 | |
|             genCases_done = sequenceA.done;
 | |
|             subcase = -1;
 | |
|             break;
 | |
|         }
 | |
|     }
 | |
|     ++subcase;
 | |
| 
 | |
| }
 | |
| 
 | |
| void genCases_extF80_ab_init( void )
 | |
| {
 | |
| 
 | |
|     sequenceA.expNum = 0;
 | |
|     sequenceA.term1Num = 0;
 | |
|     sequenceA.term2Num = 0;
 | |
|     sequenceA.done = false;
 | |
|     sequenceB.expNum = 0;
 | |
|     sequenceB.term1Num = 0;
 | |
|     sequenceB.term2Num = 0;
 | |
|     sequenceB.done = false;
 | |
|     subcase = 0;
 | |
|     if ( genCases_level == 1 ) {
 | |
|         genCases_total = 6 * extF80NumQInP1 * extF80NumQInP1;
 | |
|         extF80NextQInP1( &sequenceA, ¤tA );
 | |
|     } else {
 | |
|         genCases_total = 2 * extF80NumQInP2 * extF80NumQInP2;
 | |
|         extF80NextQInP2( &sequenceA, ¤tA );
 | |
|     }
 | |
|     genCases_done = false;
 | |
| 
 | |
| }
 | |
| 
 | |
| void genCases_extF80_ab_next( void )
 | |
| {
 | |
| 
 | |
|     if ( genCases_level == 1 ) {
 | |
|         switch ( subcase ) {
 | |
|          case 0:
 | |
|             if ( sequenceB.done ) {
 | |
|                 sequenceB.done = false;
 | |
|                 extF80NextQInP1( &sequenceA, ¤tA );
 | |
|             }
 | |
|             extF80NextQInP1( &sequenceB, ¤tB );
 | |
|          case 2:
 | |
|          case 4:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             break;
 | |
|          case 1:
 | |
|             genCases_extF80_a = currentA;
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             break;
 | |
|          case 3:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             genCases_extF80_b = currentB;
 | |
|             break;
 | |
|          case 5:
 | |
|             genCases_extF80_a = currentA;
 | |
|             genCases_extF80_b = currentB;
 | |
|             genCases_done = sequenceA.done & sequenceB.done;
 | |
|             subcase = -1;
 | |
|             break;
 | |
|         }
 | |
|     } else {
 | |
|         switch ( subcase ) {
 | |
|          case 0:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             break;
 | |
|          case 1:
 | |
|             if ( sequenceB.done ) {
 | |
|                 sequenceB.done = false;
 | |
|                 extF80NextQInP2( &sequenceA, ¤tA );
 | |
|             }
 | |
|             genCases_extF80_a = currentA;
 | |
|             extF80NextQInP2( &sequenceB, &genCases_extF80_b );
 | |
|             genCases_done = sequenceA.done & sequenceB.done;
 | |
|             subcase = -1;
 | |
|             break;
 | |
|         }
 | |
|     }
 | |
|     ++subcase;
 | |
| 
 | |
| }
 | |
| 
 | |
| void genCases_extF80_abc_init( void )
 | |
| {
 | |
| 
 | |
|     sequenceA.expNum = 0;
 | |
|     sequenceA.term1Num = 0;
 | |
|     sequenceA.term2Num = 0;
 | |
|     sequenceA.done = false;
 | |
|     sequenceB.expNum = 0;
 | |
|     sequenceB.term1Num = 0;
 | |
|     sequenceB.term2Num = 0;
 | |
|     sequenceB.done = false;
 | |
|     sequenceC.expNum = 0;
 | |
|     sequenceC.term1Num = 0;
 | |
|     sequenceC.term2Num = 0;
 | |
|     sequenceC.done = false;
 | |
|     subcase = 0;
 | |
|     if ( genCases_level == 1 ) {
 | |
|         genCases_total = 9 * extF80NumQInP1 * extF80NumQInP1 * extF80NumQInP1;
 | |
|         extF80NextQInP1( &sequenceA, ¤tA );
 | |
|         extF80NextQInP1( &sequenceB, ¤tB );
 | |
|     } else {
 | |
|         genCases_total = 2 * extF80NumQInP2 * extF80NumQInP2 * extF80NumQInP2;
 | |
|         extF80NextQInP2( &sequenceA, ¤tA );
 | |
|         extF80NextQInP2( &sequenceB, ¤tB );
 | |
|     }
 | |
|     genCases_done = false;
 | |
| 
 | |
| }
 | |
| 
 | |
| void genCases_extF80_abc_next( void )
 | |
| {
 | |
| 
 | |
|     if ( genCases_level == 1 ) {
 | |
|         switch ( subcase ) {
 | |
|          case 0:
 | |
|             if ( sequenceC.done ) {
 | |
|                 sequenceC.done = false;
 | |
|                 if ( sequenceB.done ) {
 | |
|                     sequenceB.done = false;
 | |
|                     extF80NextQInP1( &sequenceA, ¤tA );
 | |
|                 }
 | |
|                 extF80NextQInP1( &sequenceB, ¤tB );
 | |
|             }
 | |
|             extF80NextQInP1( &sequenceC, ¤tC );
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             genCases_extF80_c = currentC;
 | |
|             break;
 | |
|          case 1:
 | |
|             genCases_extF80_a = currentA;
 | |
|             genCases_extF80_b = currentB;
 | |
|             extF80Random( &genCases_extF80_c );
 | |
|             break;
 | |
|          case 2:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             extF80Random( &genCases_extF80_c );
 | |
|             break;
 | |
|          case 3:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             genCases_extF80_b = currentB;
 | |
|             genCases_extF80_c = currentC;
 | |
|             break;
 | |
|          case 4:
 | |
|             genCases_extF80_a = currentA;
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             extF80Random( &genCases_extF80_c );
 | |
|             break;
 | |
|          case 5:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             genCases_extF80_b = currentB;
 | |
|             extF80Random( &genCases_extF80_c );
 | |
|             break;
 | |
|          case 6:
 | |
|             genCases_extF80_a = currentA;
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             genCases_extF80_c = currentC;
 | |
|             break;
 | |
|          case 7:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             extF80Random( &genCases_extF80_c );
 | |
|             break;
 | |
|          case 8:
 | |
|             genCases_extF80_a = currentA;
 | |
|             genCases_extF80_b = currentB;
 | |
|             genCases_extF80_c = currentC;
 | |
|             genCases_done = sequenceA.done & sequenceB.done & sequenceC.done;
 | |
|             subcase = -1;
 | |
|             break;
 | |
|         }
 | |
|     } else {
 | |
|         switch ( subcase ) {
 | |
|          case 0:
 | |
|             extF80Random( &genCases_extF80_a );
 | |
|             extF80Random( &genCases_extF80_b );
 | |
|             extF80Random( &genCases_extF80_c );
 | |
|             break;
 | |
|          case 1:
 | |
|             if ( sequenceC.done ) {
 | |
|                 sequenceC.done = false;
 | |
|                 if ( sequenceB.done ) {
 | |
|                     sequenceB.done = false;
 | |
|                     extF80NextQInP2( &sequenceA, ¤tA );
 | |
|                 }
 | |
|                 extF80NextQInP2( &sequenceB, ¤tB );
 | |
|             }
 | |
|             genCases_extF80_a = currentA;
 | |
|             genCases_extF80_b = currentB;
 | |
|             extF80NextQInP2( &sequenceC, &genCases_extF80_c );
 | |
|             genCases_done = sequenceA.done & sequenceB.done & sequenceC.done;
 | |
|             subcase = -1;
 | |
|             break;
 | |
|         }
 | |
|     }
 | |
|     ++subcase;
 | |
| 
 | |
| }
 | |
| 
 | |
| #endif
 | |
| 
 |