diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2018-07-10 17:14:32 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2018-07-11 17:16:04 +0200 |
commit | 81dc535bb9e0196203e706caa533713306b4fc2c (patch) | |
tree | 839c88441d04bacd808d283860c0909956e6723e /newlib/libm | |
parent | 358f3c61d651b06626126423140b825b6a1ea3d8 (diff) | |
download | newlib-81dc535bb9e0196203e706caa533713306b4fc2c.zip newlib-81dc535bb9e0196203e706caa533713306b4fc2c.tar.gz newlib-81dc535bb9e0196203e706caa533713306b4fc2c.tar.bz2 |
Remove float compare option from sincosf
PREFER_FLOAT_COMPARISON setting was not correct as it could raise
spurious exceptions. Fixing it is easy: just use ISLESS(x, y) instead
of abstop12(x) < abstop12(y) with appropriate non-signaling definition
for ISLESS. However it seems this setting is not very useful (there is
only minor performance difference on various architectures), so remove
this option for now.
Diffstat (limited to 'newlib/libm')
-rw-r--r-- | newlib/libm/common/sincosf.h | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/newlib/libm/common/sincosf.h b/newlib/libm/common/sincosf.h index 27f24ff..3cac8e8 100644 --- a/newlib/libm/common/sincosf.h +++ b/newlib/libm/common/sincosf.h @@ -43,21 +43,12 @@ extern const sincos_t __sincosf_table[2] HIDDEN; extern const uint32_t __inv_pio4[] HIDDEN; -/* abstop12 assumes floating point reinterpret is fast by default. - If floating point comparisons are faster, define PREFER_FLOAT_COMPARISON. */ -#if PREFER_FLOAT_COMPARISON -static inline float -abstop12 (float x) -{ - return fabsf (x); -} -#else +/* Top 12 bits of the float representation with the sign bit cleared. */ static inline uint32_t abstop12 (float x) { return (asuint (x) >> 20) & 0x7ff; } -#endif /* Compute the sine and cosine of inputs X and X2 (X squared), using the polynomial P and store the results in SINP and COSP. N is the quadrant, |