1206917Smarius 2206917Smarius/* 3206917Smarius=============================================================================== 4206917Smarius 5206917SmariusThis C header file is part of TestFloat, Release 2a, a package of programs 6206917Smariusfor testing the correctness of floating-point arithmetic complying to the 7206917SmariusIEC/IEEE Standard for Floating-Point. 8206917Smarius 9206917SmariusWritten by John R. Hauser. More information is available through the Web 10206917Smariuspage `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'. 11206917Smarius 12206917SmariusTHIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort 13206917Smariushas been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT 14206917SmariusTIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO 15206917SmariusPERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY 16206917SmariusAND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE. 17206917Smarius 18206917SmariusDerivative works are acceptable, even for commercial purposes, so long as 19206917Smarius(1) they include prominent notice that the work is derivative, and (2) they 20206917Smariusinclude prominent notice akin to these four paragraphs for those parts of 21206917Smariusthis code that are retained. 22206917Smarius 23206917Smarius=============================================================================== 24206917Smarius*/ 25206917Smarius 26206917Smarius#include <stdio.h> 27206917Smarius 28206917Smariusextern volatile flag stop; 29206917Smarius 30206917Smariusextern char *trueName, *testName; 31206917Smariusextern flag forever, errorStop; 32206917Smariusextern uint32 maxErrorCount; 33206917Smariusextern flag checkNaNs; 34206917Smariusextern int8 *trueFlagsPtr; 35206917Smariusextern int8 ( *testFlagsFunctionPtr )( void ); 36206917Smariusextern char *functionName; 37206917Smariusextern char *roundingPrecisionName, *roundingModeName, *tininessModeName; 38206917Smariusextern flag anyErrors; 39206917Smarius 40206917Smariusvoid writeFunctionName( FILE * ); 41206917Smariusvoid exitWithStatus( void ); 42206917Smarius 43206917Smariusvoid test_a_int32_z_float32( float32 ( int32 ), float32 ( int32 ) ); 44206917Smariusvoid test_a_int32_z_float64( float64 ( int32 ), float64 ( int32 ) ); 45206917Smarius#ifdef FLOATX80 46206917Smariusvoid test_a_int32_z_floatx80( floatx80 ( int32 ), floatx80 ( int32 ) ); 47206917Smarius#endif 48206917Smarius#ifdef FLOAT128 49206917Smariusvoid test_a_int32_z_float128( float128 ( int32 ), float128 ( int32 ) ); 50206917Smarius#endif 51206917Smarius#ifdef BITS64 52206917Smariusvoid test_a_int64_z_float32( float32 ( int64 ), float32 ( int64 ) ); 53206917Smariusvoid test_a_int64_z_float64( float64 ( int64 ), float64 ( int64 ) ); 54206917Smarius#ifdef FLOATX80 55206917Smariusvoid test_a_int64_z_floatx80( floatx80 ( int64 ), floatx80 ( int64 ) ); 56206917Smarius#endif 57206917Smarius#ifdef FLOAT128 58206917Smariusvoid test_a_int64_z_float128( float128 ( int64 ), float128 ( int64 ) ); 59206917Smarius#endif 60206917Smarius#endif 61206917Smarius 62206917Smariusvoid test_a_float32_z_int32( int32 ( float32 ), int32 ( float32 ) ); 63206917Smarius#ifdef BITS64 64206917Smariusvoid test_a_float32_z_int64( int64 ( float32 ), int64 ( float32 ) ); 65206917Smarius#endif 66206917Smariusvoid test_a_float32_z_float64( float64 ( float32 ), float64 ( float32 ) ); 67206917Smarius#ifdef FLOATX80 68206917Smariusvoid test_a_float32_z_floatx80( floatx80 ( float32 ), floatx80 ( float32 ) ); 69206917Smarius#endif 70206917Smarius#ifdef FLOAT128 71206917Smariusvoid test_a_float32_z_float128( float128 ( float32 ), float128 ( float32 ) ); 72206917Smarius#endif 73206917Smariusvoid test_az_float32( float32 ( float32 ), float32 ( float32 ) ); 74206917Smariusvoid 75206917Smarius test_ab_float32_z_flag( 76206917Smarius flag ( float32, float32 ), flag ( float32, float32 ) ); 77206917Smariusvoid 78206917Smarius test_abz_float32( 79206917Smarius float32 ( float32, float32 ), float32 ( float32, float32 ) ); 80206917Smarius 81206917Smariusvoid test_a_float64_z_int32( int32 ( float64 ), int32 ( float64 ) ); 82206917Smarius#ifdef BITS64 83206917Smariusvoid test_a_float64_z_int64( int64 ( float64 ), int64 ( float64 ) ); 84206917Smarius#endif 85206917Smariusvoid test_a_float64_z_float32( float32 ( float64 ), float32 ( float64 ) ); 86206917Smarius#ifdef FLOATX80 87206917Smariusvoid test_a_float64_z_floatx80( floatx80 ( float64 ), floatx80 ( float64 ) ); 88206917Smarius#endif 89206917Smarius#ifdef FLOAT128 90206917Smariusvoid test_a_float64_z_float128( float128 ( float64 ), float128 ( float64 ) ); 91206917Smarius#endif 92206917Smariusvoid test_az_float64( float64 ( float64 ), float64 ( float64 ) ); 93206917Smariusvoid 94206917Smarius test_ab_float64_z_flag( 95206917Smarius flag ( float64, float64 ), flag ( float64, float64 ) ); 96206917Smariusvoid 97206917Smarius test_abz_float64( 98206917Smarius float64 ( float64, float64 ), float64 ( float64, float64 ) ); 99206917Smarius 100206917Smarius#ifdef FLOATX80 101206917Smarius 102206917Smariusvoid test_a_floatx80_z_int32( int32 ( floatx80 ), int32 ( floatx80 ) ); 103206917Smarius#ifdef BITS64 104206917Smariusvoid test_a_floatx80_z_int64( int64 ( floatx80 ), int64 ( floatx80 ) ); 105206917Smarius#endif 106206917Smariusvoid test_a_floatx80_z_float32( float32 ( floatx80 ), float32 ( floatx80 ) ); 107206917Smariusvoid test_a_floatx80_z_float64( float64 ( floatx80 ), float64 ( floatx80 ) ); 108206917Smarius#ifdef FLOAT128 109206917Smariusvoid 110206917Smarius test_a_floatx80_z_float128( float128 ( floatx80 ), float128 ( floatx80 ) ); 111206917Smarius#endif 112206917Smariusvoid test_az_floatx80( floatx80 ( floatx80 ), floatx80 ( floatx80 ) ); 113206917Smariusvoid 114206917Smarius test_ab_floatx80_z_flag( 115206917Smarius flag ( floatx80, floatx80 ), flag ( floatx80, floatx80 ) ); 116206917Smariusvoid 117206917Smarius test_abz_floatx80( 118206917Smarius floatx80 ( floatx80, floatx80 ), floatx80 ( floatx80, floatx80 ) ); 119206917Smarius 120206917Smarius#endif 121206917Smarius 122206917Smarius#ifdef FLOAT128 123206917Smarius 124206917Smariusvoid test_a_float128_z_int32( int32 ( float128 ), int32 ( float128 ) ); 125206917Smarius#ifdef BITS64 126206917Smariusvoid test_a_float128_z_int64( int64 ( float128 ), int64 ( float128 ) ); 127206917Smarius#endif 128206917Smariusvoid test_a_float128_z_float32( float32 ( float128 ), float32 ( float128 ) ); 129206917Smariusvoid test_a_float128_z_float64( float64 ( float128 ), float64 ( float128 ) ); 130206917Smarius#ifdef FLOATX80 131206917Smariusvoid 132206917Smarius test_a_float128_z_floatx80( floatx80 ( float128 ), floatx80 ( float128 ) ); 133206917Smarius#endif 134206917Smariusvoid test_az_float128( float128 ( float128 ), float128 ( float128 ) ); 135206917Smariusvoid 136206917Smarius test_ab_float128_z_flag( 137206917Smarius flag ( float128, float128 ), flag ( float128, float128 ) ); 138206917Smariusvoid 139206917Smarius test_abz_float128( 140206917Smarius float128 ( float128, float128 ), float128 ( float128, float128 ) ); 141206917Smarius 142206917Smarius#endif 143206917Smarius 144