Home | History | Annotate | Line # | Download | only in include
testLoops.h revision 1.1.1.1
      1  1.1  ross 
      2  1.1  ross /*
      3  1.1  ross ===============================================================================
      4  1.1  ross 
      5  1.1  ross This C header file is part of TestFloat, Release 2a, a package of programs
      6  1.1  ross for testing the correctness of floating-point arithmetic complying to the
      7  1.1  ross IEC/IEEE Standard for Floating-Point.
      8  1.1  ross 
      9  1.1  ross Written by John R. Hauser.  More information is available through the Web
     10  1.1  ross page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
     11  1.1  ross 
     12  1.1  ross THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable effort
     13  1.1  ross has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
     14  1.1  ross TIMES RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS RESTRICTED TO
     15  1.1  ross PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
     16  1.1  ross AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
     17  1.1  ross 
     18  1.1  ross Derivative works are acceptable, even for commercial purposes, so long as
     19  1.1  ross (1) they include prominent notice that the work is derivative, and (2) they
     20  1.1  ross include prominent notice akin to these four paragraphs for those parts of
     21  1.1  ross this code that are retained.
     22  1.1  ross 
     23  1.1  ross ===============================================================================
     24  1.1  ross */
     25  1.1  ross 
     26  1.1  ross #include <stdio.h>
     27  1.1  ross 
     28  1.1  ross extern volatile flag stop;
     29  1.1  ross 
     30  1.1  ross extern char *trueName, *testName;
     31  1.1  ross extern flag forever, errorStop;
     32  1.1  ross extern uint32 maxErrorCount;
     33  1.1  ross extern flag checkNaNs;
     34  1.1  ross extern int8 *trueFlagsPtr;
     35  1.1  ross extern int8 ( *testFlagsFunctionPtr )( void );
     36  1.1  ross extern char *functionName;
     37  1.1  ross extern char *roundingPrecisionName, *roundingModeName, *tininessModeName;
     38  1.1  ross extern flag anyErrors;
     39  1.1  ross 
     40  1.1  ross void writeFunctionName( FILE * );
     41  1.1  ross void exitWithStatus( void );
     42  1.1  ross 
     43  1.1  ross void test_a_int32_z_float32( float32 ( int32 ), float32 ( int32 ) );
     44  1.1  ross void test_a_int32_z_float64( float64 ( int32 ), float64 ( int32 ) );
     45  1.1  ross #ifdef FLOATX80
     46  1.1  ross void test_a_int32_z_floatx80( floatx80 ( int32 ), floatx80 ( int32 ) );
     47  1.1  ross #endif
     48  1.1  ross #ifdef FLOAT128
     49  1.1  ross void test_a_int32_z_float128( float128 ( int32 ), float128 ( int32 ) );
     50  1.1  ross #endif
     51  1.1  ross #ifdef BITS64
     52  1.1  ross void test_a_int64_z_float32( float32 ( int64 ), float32 ( int64 ) );
     53  1.1  ross void test_a_int64_z_float64( float64 ( int64 ), float64 ( int64 ) );
     54  1.1  ross #ifdef FLOATX80
     55  1.1  ross void test_a_int64_z_floatx80( floatx80 ( int64 ), floatx80 ( int64 ) );
     56  1.1  ross #endif
     57  1.1  ross #ifdef FLOAT128
     58  1.1  ross void test_a_int64_z_float128( float128 ( int64 ), float128 ( int64 ) );
     59  1.1  ross #endif
     60  1.1  ross #endif
     61  1.1  ross 
     62  1.1  ross void test_a_float32_z_int32( int32 ( float32 ), int32 ( float32 ) );
     63  1.1  ross #ifdef BITS64
     64  1.1  ross void test_a_float32_z_int64( int64 ( float32 ), int64 ( float32 ) );
     65  1.1  ross #endif
     66  1.1  ross void test_a_float32_z_float64( float64 ( float32 ), float64 ( float32 ) );
     67  1.1  ross #ifdef FLOATX80
     68  1.1  ross void test_a_float32_z_floatx80( floatx80 ( float32 ), floatx80 ( float32 ) );
     69  1.1  ross #endif
     70  1.1  ross #ifdef FLOAT128
     71  1.1  ross void test_a_float32_z_float128( float128 ( float32 ), float128 ( float32 ) );
     72  1.1  ross #endif
     73  1.1  ross void test_az_float32( float32 ( float32 ), float32 ( float32 ) );
     74  1.1  ross void
     75  1.1  ross  test_ab_float32_z_flag(
     76  1.1  ross      flag ( float32, float32 ), flag ( float32, float32 ) );
     77  1.1  ross void
     78  1.1  ross  test_abz_float32(
     79  1.1  ross      float32 ( float32, float32 ), float32 ( float32, float32 ) );
     80  1.1  ross 
     81  1.1  ross void test_a_float64_z_int32( int32 ( float64 ), int32 ( float64 ) );
     82  1.1  ross #ifdef BITS64
     83  1.1  ross void test_a_float64_z_int64( int64 ( float64 ), int64 ( float64 ) );
     84  1.1  ross #endif
     85  1.1  ross void test_a_float64_z_float32( float32 ( float64 ), float32 ( float64 ) );
     86  1.1  ross #ifdef FLOATX80
     87  1.1  ross void test_a_float64_z_floatx80( floatx80 ( float64 ), floatx80 ( float64 ) );
     88  1.1  ross #endif
     89  1.1  ross #ifdef FLOAT128
     90  1.1  ross void test_a_float64_z_float128( float128 ( float64 ), float128 ( float64 ) );
     91  1.1  ross #endif
     92  1.1  ross void test_az_float64( float64 ( float64 ), float64 ( float64 ) );
     93  1.1  ross void
     94  1.1  ross  test_ab_float64_z_flag(
     95  1.1  ross      flag ( float64, float64 ), flag ( float64, float64 ) );
     96  1.1  ross void
     97  1.1  ross  test_abz_float64(
     98  1.1  ross      float64 ( float64, float64 ), float64 ( float64, float64 ) );
     99  1.1  ross 
    100  1.1  ross #ifdef FLOATX80
    101  1.1  ross 
    102  1.1  ross void test_a_floatx80_z_int32( int32 ( floatx80 ), int32 ( floatx80 ) );
    103  1.1  ross #ifdef BITS64
    104  1.1  ross void test_a_floatx80_z_int64( int64 ( floatx80 ), int64 ( floatx80 ) );
    105  1.1  ross #endif
    106  1.1  ross void test_a_floatx80_z_float32( float32 ( floatx80 ), float32 ( floatx80 ) );
    107  1.1  ross void test_a_floatx80_z_float64( float64 ( floatx80 ), float64 ( floatx80 ) );
    108  1.1  ross #ifdef FLOAT128
    109  1.1  ross void
    110  1.1  ross  test_a_floatx80_z_float128( float128 ( floatx80 ), float128 ( floatx80 ) );
    111  1.1  ross #endif
    112  1.1  ross void test_az_floatx80( floatx80 ( floatx80 ), floatx80 ( floatx80 ) );
    113  1.1  ross void
    114  1.1  ross  test_ab_floatx80_z_flag(
    115  1.1  ross      flag ( floatx80, floatx80 ), flag ( floatx80, floatx80 ) );
    116  1.1  ross void
    117  1.1  ross  test_abz_floatx80(
    118  1.1  ross      floatx80 ( floatx80, floatx80 ), floatx80 ( floatx80, floatx80 ) );
    119  1.1  ross 
    120  1.1  ross #endif
    121  1.1  ross 
    122  1.1  ross #ifdef FLOAT128
    123  1.1  ross 
    124  1.1  ross void test_a_float128_z_int32( int32 ( float128 ), int32 ( float128 ) );
    125  1.1  ross #ifdef BITS64
    126  1.1  ross void test_a_float128_z_int64( int64 ( float128 ), int64 ( float128 ) );
    127  1.1  ross #endif
    128  1.1  ross void test_a_float128_z_float32( float32 ( float128 ), float32 ( float128 ) );
    129  1.1  ross void test_a_float128_z_float64( float64 ( float128 ), float64 ( float128 ) );
    130  1.1  ross #ifdef FLOATX80
    131  1.1  ross void
    132  1.1  ross  test_a_float128_z_floatx80( floatx80 ( float128 ), floatx80 ( float128 ) );
    133  1.1  ross #endif
    134  1.1  ross void test_az_float128( float128 ( float128 ), float128 ( float128 ) );
    135  1.1  ross void
    136  1.1  ross  test_ab_float128_z_flag(
    137  1.1  ross      flag ( float128, float128 ), flag ( float128, float128 ) );
    138  1.1  ross void
    139  1.1  ross  test_abz_float128(
    140  1.1  ross      float128 ( float128, float128 ), float128 ( float128, float128 ) );
    141  1.1  ross 
    142  1.1  ross #endif
    143  1.1  ross 
    144