summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps1
-rw-r--r--sysdeps/ieee754/dbl-64/e_cosh.c4
-rw-r--r--sysdeps/ieee754/flt-32/e_coshf.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/e_coshl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_coshl.c2
-rw-r--r--sysdeps/ieee754/ldbl-96/e_coshl.c2
6 files changed, 8 insertions, 7 deletions
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index 8d9c83d0ca..7cf958608d 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -895,6 +895,7 @@ ldouble: 2
 
 Function: "cosh_upward":
 double: 1
+float: 1
 idouble: 1
 ifloat: 1
 ildouble: 2
diff --git a/sysdeps/ieee754/dbl-64/e_cosh.c b/sysdeps/ieee754/dbl-64/e_cosh.c
index 6caf943ed0..af3910dd6e 100644
--- a/sysdeps/ieee754/dbl-64/e_cosh.c
+++ b/sysdeps/ieee754/dbl-64/e_cosh.c
@@ -53,10 +53,10 @@ __ieee754_cosh (double x)
       /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
       if (ix < 0x3fd62e43)
 	{
+	  if (ix < 0x3c800000)
+	    return one;                                   /* cosh(tiny) = 1 */
 	  t = __expm1 (fabs (x));
 	  w = one + t;
-	  if (ix < 0x3c800000)
-	    return w;                                   /* cosh(tiny) = 1 */
 	  return one + (t * t) / (w + w);
 	}
 
diff --git a/sysdeps/ieee754/flt-32/e_coshf.c b/sysdeps/ieee754/flt-32/e_coshf.c
index 7eeea4d8da..dedda47c09 100644
--- a/sysdeps/ieee754/flt-32/e_coshf.c
+++ b/sysdeps/ieee754/flt-32/e_coshf.c
@@ -33,9 +33,9 @@ __ieee754_coshf (float x)
 	if (ix < 0x41b00000) {
 	    /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
 		if(ix<0x3eb17218) {
+		    if (ix<0x24000000) return one;	/* cosh(tiny) = 1 */
 		    t = __expm1f(fabsf(x));
 		    w = one+t;
-		    if (ix<0x24000000) return w;	/* cosh(tiny) = 1 */
 		    return one+(t*t)/(w+w);
 		}
 
diff --git a/sysdeps/ieee754/ldbl-128/e_coshl.c b/sysdeps/ieee754/ldbl-128/e_coshl.c
index 59f2030d54..488c318d27 100644
--- a/sysdeps/ieee754/ldbl-128/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-128/e_coshl.c
@@ -77,10 +77,10 @@ __ieee754_coshl (long double x)
   /* |x| in [0,0.5*ln2], return 1+expm1l(|x|)^2/(2*expl(|x|)) */
   if (ex < 0x3ffd62e4) /* 0.3465728759765625 */
     {
+      if (ex < 0x3fb80000) /* |x| < 2^-116 */
+	return one;		/* cosh(tiny) = 1 */
       t = __expm1l (u.value);
       w = one + t;
-      if (ex < 0x3fb80000) /* |x| < 2^-116 */
-	return w;		/* cosh(tiny) = 1 */
 
       return one + (t * t) / (w + w);
     }
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
index 92313e25e2..327b2ab960 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_coshl.c
@@ -53,9 +53,9 @@ __ieee754_coshl (long double x)
 
     /* |x| in [0,0.5*ln2], return 1+expm1(|x|)^2/(2*exp(|x|)) */
 	if(ix<0x3fd62e42fefa39efLL) {
+	    if (ix<0x3c80000000000000LL) return one;	/* cosh(tiny) = 1 */
 	    t = __expm1l(fabsl(x));
 	    w = one+t;
-	    if (ix<0x3c80000000000000LL) return w;	/* cosh(tiny) = 1 */
 	    return one+(t*t)/(w+w);
 	}
 
diff --git a/sysdeps/ieee754/ldbl-96/e_coshl.c b/sysdeps/ieee754/ldbl-96/e_coshl.c
index 995c9922cb..dd22cae363 100644
--- a/sysdeps/ieee754/ldbl-96/e_coshl.c
+++ b/sysdeps/ieee754/ldbl-96/e_coshl.c
@@ -54,9 +54,9 @@ __ieee754_coshl (long double x)
 	if (ex < 0x4003 || (ex == 0x4003 && mx < 0xb0000000u)) {
 	    /* |x| in [0,0.5*ln2], return 1+expm1l(|x|)^2/(2*expl(|x|)) */
 		if(ex < 0x3ffd || (ex == 0x3ffd && mx < 0xb17217f7u)) {
+		    if (ex<0x3fbc) return one;	/* cosh(tiny) = 1 */
 		    t = __expm1l(fabsl(x));
 		    w = one+t;
-		    if (ex<0x3fbc) return w;	/* cosh(tiny) = 1 */
 		    return one+(t*t)/(w+w);
 		}