about summary refs log tree commit diff
path: root/sysdeps/ieee754/ldbl-128/s_expm1l.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/ldbl-128/s_expm1l.c')
-rw-r--r--sysdeps/ieee754/ldbl-128/s_expm1l.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sysdeps/ieee754/ldbl-128/s_expm1l.c b/sysdeps/ieee754/ldbl-128/s_expm1l.c
index 04139908c2..ea63501819 100644
--- a/sysdeps/ieee754/ldbl-128/s_expm1l.c
+++ b/sysdeps/ieee754/ldbl-128/s_expm1l.c
@@ -54,8 +54,8 @@
 
 
 #include <errno.h>
-#include "math.h"
-#include "math_private.h"
+#include <math.h>
+#include <math_private.h>
 
 /* exp(x) - 1 = x + 0.5 x^2 + x^3 P(x)/Q(x)
    -.5 ln 2  <  x  <  .5 ln 2
@@ -102,6 +102,11 @@ __expm1l (long double x)
   ix = u.parts32.w0;
   sign = ix & 0x80000000;
   ix &= 0x7fffffff;
+  if (!sign && ix >= 0x40060000)
+    {
+      /* If num is positive and exp >= 6 use plain exp.  */
+      return __expl (x);
+    }
   if (ix >= 0x7fff0000)
     {
       /* Infinity. */