aboutsummaryrefslogtreecommitdiff
path: root/newlib/libm
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2018-07-10 17:14:32 +0100
committerCorinna Vinschen <corinna@vinschen.de>2018-07-11 17:16:04 +0200
commit81dc535bb9e0196203e706caa533713306b4fc2c (patch)
tree839c88441d04bacd808d283860c0909956e6723e /newlib/libm
parent358f3c61d651b06626126423140b825b6a1ea3d8 (diff)
downloadnewlib-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.h11
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,