File indexing completed on 2025-05-11 08:24:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 #ifndef __FPTEST_h
0046 #define __FPTEST_h
0047
0048 #include <stdio.h>
0049
0050 #ifndef CPU_HARDWARE_FP
0051 #error "This CPU does not have CPU_HARDWARE_FP defined"
0052 #endif
0053
0054 #if ( CPU_HARDWARE_FP == FALSE )
0055
0056 #define FP_DECLARE
0057 #define FP_LOAD( _factor )
0058 #define FP_CHECK( _factor ) 0
0059
0060 #else
0061
0062 #define FP_DECLARE \
0063 double fp01 = 1.0; \
0064 double fp02 = 2.0; \
0065 double fp03 = 3.0; \
0066 double fp04 = 4.0; \
0067 double fp05 = 5.0; \
0068 double fp06 = 6.0; \
0069 double fp07 = 7.0; \
0070 double fp08 = 8.0; \
0071 double fp09 = 9.0; \
0072 double fp10 = 10.0; \
0073 double fp11 = 11.0; \
0074 double fp12 = 12.0; \
0075 double fp13 = 13.0; \
0076 double fp14 = 14.0; \
0077 double fp15 = 15.0; \
0078 double fp16 = 16.0; \
0079 double fp17 = 17.0; \
0080 double fp18 = 18.0; \
0081 double fp19 = 19.0; \
0082 double fp20 = 20.0; \
0083 double fp21 = 21.0; \
0084 double fp22 = 22.0; \
0085 double fp23 = 23.0; \
0086 double fp24 = 24.0; \
0087 double fp25 = 25.0; \
0088 double fp26 = 26.0; \
0089 double fp27 = 27.0; \
0090 double fp28 = 28.0; \
0091 double fp29 = 29.0; \
0092 double fp30 = 30.0; \
0093 double fp31 = 31.0; \
0094 double fp32 = 32.0
0095
0096 #define FP_LOAD( _factor ) \
0097 do { \
0098 fp01 += _factor; \
0099 fp02 += _factor; \
0100 fp03 += _factor; \
0101 fp04 += _factor; \
0102 fp05 += _factor; \
0103 fp06 += _factor; \
0104 fp07 += _factor; \
0105 fp08 += _factor; \
0106 fp09 += _factor; \
0107 fp10 += _factor; \
0108 fp11 += _factor; \
0109 fp12 += _factor; \
0110 fp13 += _factor; \
0111 fp14 += _factor; \
0112 fp15 += _factor; \
0113 fp16 += _factor; \
0114 fp17 += _factor; \
0115 fp18 += _factor; \
0116 fp19 += _factor; \
0117 fp20 += _factor; \
0118 fp21 += _factor; \
0119 fp22 += _factor; \
0120 fp23 += _factor; \
0121 fp24 += _factor; \
0122 fp25 += _factor; \
0123 fp26 += _factor; \
0124 fp27 += _factor; \
0125 fp28 += _factor; \
0126 fp29 += _factor; \
0127 fp30 += _factor; \
0128 fp31 += _factor; \
0129 fp32 += _factor; \
0130 } while (0)
0131
0132 #define EPSILON (0.0005)
0133 #define FPABS(d) (((d) < 0.0) ? -(d) : (d))
0134 #define FPNEQ(a,b) (FPABS((a)-(b)) > EPSILON)
0135
0136 #define FP_CHECK_ONE( _v, _base, _factor ) \
0137 if ( FPNEQ( (_v), ((_base) + (_factor)) ) ) { \
0138 printf("%" PRIu32 ": " #_v " wrong -- (%g not %g)\n", \
0139 task_index, (_v), (_base + _factor)); \
0140 }
0141
0142
0143 #define FP_CHECK( _factor ) \
0144 do { \
0145 FP_CHECK_ONE( fp01, 1.0, (_factor) ); \
0146 FP_CHECK_ONE( fp02, 2.0, (_factor) ); \
0147 FP_CHECK_ONE( fp03, 3.0, (_factor) ); \
0148 FP_CHECK_ONE( fp04, 4.0, (_factor) ); \
0149 FP_CHECK_ONE( fp05, 5.0, (_factor) ); \
0150 FP_CHECK_ONE( fp06, 6.0, (_factor) ); \
0151 FP_CHECK_ONE( fp07, 7.0, (_factor) ); \
0152 FP_CHECK_ONE( fp08, 8.0, (_factor) ); \
0153 FP_CHECK_ONE( fp09, 9.0, (_factor) ); \
0154 FP_CHECK_ONE( fp10, 10.0, (_factor) ); \
0155 FP_CHECK_ONE( fp11, 11.0, (_factor) ); \
0156 FP_CHECK_ONE( fp12, 12.0, (_factor) ); \
0157 FP_CHECK_ONE( fp13, 13.0, (_factor) ); \
0158 FP_CHECK_ONE( fp14, 14.0, (_factor) ); \
0159 FP_CHECK_ONE( fp15, 15.0, (_factor) ); \
0160 FP_CHECK_ONE( fp16, 16.0, (_factor) ); \
0161 FP_CHECK_ONE( fp17, 17.0, (_factor) ); \
0162 FP_CHECK_ONE( fp18, 18.0, (_factor) ); \
0163 FP_CHECK_ONE( fp19, 19.0, (_factor) ); \
0164 FP_CHECK_ONE( fp20, 20.0, (_factor) ); \
0165 FP_CHECK_ONE( fp21, 21.0, (_factor) ); \
0166 FP_CHECK_ONE( fp22, 22.0, (_factor) ); \
0167 FP_CHECK_ONE( fp23, 23.0, (_factor) ); \
0168 FP_CHECK_ONE( fp24, 24.0, (_factor) ); \
0169 FP_CHECK_ONE( fp25, 25.0, (_factor) ); \
0170 FP_CHECK_ONE( fp26, 26.0, (_factor) ); \
0171 FP_CHECK_ONE( fp27, 27.0, (_factor) ); \
0172 FP_CHECK_ONE( fp28, 28.0, (_factor) ); \
0173 FP_CHECK_ONE( fp29, 29.0, (_factor) ); \
0174 FP_CHECK_ONE( fp30, 30.0, (_factor) ); \
0175 FP_CHECK_ONE( fp31, 31.0, (_factor) ); \
0176 FP_CHECK_ONE( fp32, 32.0, (_factor) ); \
0177 } while (0)
0178
0179 #endif
0180
0181 #endif