@@ -7,6 +7,17 @@ SUITE( fbc_tests.optimizations.inline_ops )
77 const EPSILON_SNG as single = 1.19290929e-7
88 const EPSILON_DBL as double = 2.2204460492503131e-016
99
10+ '' fast floating point is NOT precise
11+ # if __FB_FPMODE__ = "fast"
12+ '' good to about 3 decimal places for
13+ '' cos/sin on -gen gas -fpu sse -fpmode fast
14+ const EPSILON_SNG_FPU as single = EPSILON_SNG * 2000
15+ const EPSILON_DBL_FPU as double = EPSILON_DBL * 2000
16+ # else
17+ const EPSILON_SNG_FPU as single = EPSILON_SNG
18+ const EPSILON_DBL_FPU as double = EPSILON_DBL
19+ # endif
20+
1021 #define hFixF( x ) (floorf( abs( x ) ) * sgn( x ))
1122 #define hFixD( x ) ( floor( abs( x ) ) * sgn( x ))
1223
@@ -165,9 +176,9 @@ SUITE( fbc_tests.optimizations.inline_ops )
165176 for v as single = - 1 to 1 step . 01
166177 CU_ASSERT_DOUBLE_EQUAL( frac( v ), (v - hFixF( v )) , EPSILON_SNG )
167178 CU_ASSERT_DOUBLE_EQUAL( fix( v ), hFixF( v ), EPSILON_SNG )
168- CU_ASSERT_DOUBLE_EQUAL( sin( v ), sinf( v ), EPSILON_SNG )
179+ CU_ASSERT_DOUBLE_EQUAL( sin( v ), sinf( v ), EPSILON_SNG_FPU )
169180 CU_ASSERT_DOUBLE_EQUAL( asin( v ), alt_asin( v ), EPSILON_SNG )
170- CU_ASSERT_DOUBLE_EQUAL( cos( v ), cosf( v ), EPSILON_SNG )
181+ CU_ASSERT_DOUBLE_EQUAL( cos( v ), cosf( v ), EPSILON_SNG_FPU )
171182 CU_ASSERT_DOUBLE_EQUAL( acos( v ), acosf( v ), EPSILON_SNG )
172183 CU_ASSERT_DOUBLE_EQUAL( tan( v ), tanf( v ), EPSILON_SNG )
173184 CU_ASSERT_DOUBLE_EQUAL( atn( v ), atanf( v ), EPSILON_SNG )
@@ -244,7 +255,7 @@ SUITE( fbc_tests.optimizations.inline_ops )
244255 dim x as single = 5
245256 dim r as single
246257 r = 1! / x
247- CU_ASSERT_DOUBLE_EQUAL( r, 0.2 , EPSILON_SNG )
258+ CU_ASSERT_DOUBLE_EQUAL( r, 0.2 , EPSILON_SNG_FPU )
248259 end scope
249260
250261 scope
@@ -287,7 +298,7 @@ SUITE( fbc_tests.optimizations.inline_ops )
287298 dim x as TSQR
288299 dim r as single
289300 r = 1! / sqr(x)
290- CU_ASSERT_DOUBLE_EQUAL( r, 0.0625 , EPSILON_SNG )
301+ CU_ASSERT_DOUBLE_EQUAL( r, 0.0625 , EPSILON_SNG_FPU )
291302 end scope
292303
293304 END_TEST
0 commit comments