X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Fexpf.c;h=feee2b0ed21741c88f520d354655bccaaca7f402;hb=63a4c9adf227a6f6a5f7f70f6dc3f8863f846927;hp=5572bbf639bc5819382ae75f7ccdcc7eb17ef5fb;hpb=39c910fb061114e6aa5c3bf2c94b1d7262d62221;p=musl diff --git a/src/math/expf.c b/src/math/expf.c index 5572bbf6..feee2b0e 100644 --- a/src/math/expf.c +++ b/src/math/expf.c @@ -39,9 +39,11 @@ float expf(float x) /* special cases */ if (hx >= 0x42aeac50) { /* if |x| >= -87.33655f or NaN */ + if (hx > 0x7f800000) /* NaN */ + return x; if (hx >= 0x42b17218 && !sign) { /* x >= 88.722839f */ /* overflow */ - STRICT_ASSIGN(float, x, x * 0x1p127f); + x *= 0x1p127f; return x; } if (sign) { @@ -60,7 +62,7 @@ float expf(float x) k = 1 - sign - sign; hi = x - k*ln2hi; /* k*ln2hi is exact here */ lo = k*ln2lo; - STRICT_ASSIGN(float, x, hi - lo); + x = hi - lo; } else if (hx > 0x39000000) { /* |x| > 2**-14 */ k = 0; hi = x;