mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
math: fix expm1f overflow threshold
the threshold was wrong so expm1f overflowed to inf a bit too early and on most targets uint32_t compare is faster than float compare so use that. this also fixes sinhf incorrectly returning nan for some values where the internal expm1f overflowed.
This commit is contained in:
parent
c4c38e6364
commit
964104f9f0
1 changed files with 1 additions and 2 deletions
|
@ -16,7 +16,6 @@
|
|||
#include "libm.h"
|
||||
|
||||
static const float
|
||||
o_threshold = 8.8721679688e+01, /* 0x42b17180 */
|
||||
ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
|
||||
ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
|
||||
invln2 = 1.4426950216e+00, /* 0x3fb8aa3b */
|
||||
|
@ -41,7 +40,7 @@ float expm1f(float x)
|
|||
return x;
|
||||
if (sign)
|
||||
return -1;
|
||||
if (x > o_threshold) {
|
||||
if (hx > 0x42b17217) { /* x > log(FLT_MAX) */
|
||||
x *= 0x1p127f;
|
||||
return x;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue