diff options
-rw-r--r-- | src/math/exp2f.c | 2 | ||||
-rw-r--r-- | src/math/expf.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/src/math/exp2f.c b/src/math/exp2f.c index cf6126ee..296b6343 100644 --- a/src/math/exp2f.c +++ b/src/math/exp2f.c @@ -91,6 +91,8 @@ float exp2f(float x) /* Filter out exceptional cases. */ ix = u.i & 0x7fffffff; if (ix > 0x42fc0000) { /* |x| > 126 */ + if (ix > 0x7f800000) /* NaN */ + return x; if (u.i >= 0x43000000 && u.i < 0x80000000) { /* x >= 128 */ x *= 0x1p127f; return x; diff --git a/src/math/expf.c b/src/math/expf.c index 16e9afe6..feee2b0e 100644 --- a/src/math/expf.c +++ b/src/math/expf.c @@ -39,6 +39,8 @@ 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 */ x *= 0x1p127f; |