mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-21 00:07:36 +08:00
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.
This commit is contained in:
parent
358f3c61d6
commit
81dc535bb9
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user