void test_a_f128_z_f16( float16_t trueFunction( const float128_t * ), float16_t subjFunction( const float128_t * ) ) { int count; float16_t trueZ; uint_fast8_t trueFlags; float16_t subjZ; uint_fast8_t subjFlags; genCases_f128_a_init(); genCases_writeTestsTotal( testLoops_forever ); verCases_errorCount = 0; verCases_tenThousandsCount = 0; count = 10000; while ( ! genCases_done || testLoops_forever ) { genCases_f128_a_next(); *testLoops_trueFlagsPtr = 0; trueZ = trueFunction( &genCases_f128_a ); trueFlags = *testLoops_trueFlagsPtr; testLoops_subjFlagsFunction(); subjZ = subjFunction( &genCases_f128_a ); subjFlags = testLoops_subjFlagsFunction(); --count; if ( ! count ) { verCases_perTenThousand(); count = 10000; } if ( ! f16_same( trueZ, subjZ ) || (trueFlags != subjFlags) ) { if ( ! verCases_checkNaNs && f128M_isSignalingNaN( &genCases_f128_a ) ) { trueFlags |= softfloat_flag_invalid; } if ( verCases_checkNaNs || ! f16_isNaN( trueZ ) || ! f16_isNaN( subjZ ) || f16_isSignalingNaN( subjZ ) || (trueFlags != subjFlags) ) { ++verCases_errorCount; verCases_writeErrorFound( 10000 - count ); writeCase_a_f128M( &genCases_f128_a, " " ); writeCase_z_f16( trueZ, trueFlags, subjZ, subjFlags ); if ( verCases_errorCount == verCases_maxErrorCount ) break; } } } verCases_writeTestsPerformed( 10000 - count ); }
void test_a_f16_z_ui64_x( uint_fast64_t trueFunction( float16_t, bool ), uint_fast64_t subjFunction( float16_t, bool ), bool exact ) { int count; uint_fast64_t trueZ; uint_fast8_t trueFlags; uint_fast64_t subjZ; uint_fast8_t subjFlags; genCases_f16_a_init(); genCases_writeTestsTotal( testLoops_forever ); verCases_errorCount = 0; verCases_tenThousandsCount = 0; count = 10000; while ( ! genCases_done || testLoops_forever ) { genCases_f16_a_next(); *testLoops_trueFlagsPtr = 0; trueZ = trueFunction( genCases_f16_a, exact ); trueFlags = *testLoops_trueFlagsPtr; testLoops_subjFlagsFunction(); subjZ = subjFunction( genCases_f16_a, exact ); subjFlags = testLoops_subjFlagsFunction(); --count; if ( ! count ) { verCases_perTenThousand(); count = 10000; } if ( (trueZ != subjZ) || (trueFlags != subjFlags) ) { if ( ! verCases_checkNaNs && f16_isSignalingNaN( genCases_f16_a ) ) { trueFlags |= softfloat_flag_invalid; } if ( (trueZ != 0xFFFFFFFF) || (subjZ != 0xFFFFFFFF) || (trueFlags != softfloat_flag_invalid) || (subjFlags != softfloat_flag_invalid) ) { ++verCases_errorCount; verCases_writeErrorFound( 10000 - count ); writeCase_a_f16( genCases_f16_a, " " ); writeCase_z_ui64( trueZ, trueFlags, subjZ, subjFlags ); if ( verCases_errorCount == verCases_maxErrorCount ) break; } } } verCases_writeTestsPerformed( 10000 - count ); }