about summary refs log tree commit diff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/dbl-64/e_hypot.c4
-rw-r--r--sysdeps/ieee754/ldbl-128/e_hypotl.c4
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_hypotl.c6
-rw-r--r--sysdeps/ieee754/ldbl-96/e_hypotl.c4
4 files changed, 14 insertions, 4 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_hypot.c b/sysdeps/ieee754/dbl-64/e_hypot.c
index 5cbfcbeb48..f142c450a2 100644
--- a/sysdeps/ieee754/dbl-64/e_hypot.c
+++ b/sysdeps/ieee754/dbl-64/e_hypot.c
@@ -149,7 +149,9 @@ __ieee754_hypot (double x, double y)
       t1 = 1.0;
       GET_HIGH_WORD (high, t1);
       SET_HIGH_WORD (t1, high + (k << 20));
-      return t1 * w;
+      w *= t1;
+      math_check_force_underflow_nonneg (w);
+      return w;
     }
   else
     return w;
diff --git a/sysdeps/ieee754/ldbl-128/e_hypotl.c b/sysdeps/ieee754/ldbl-128/e_hypotl.c
index 01444cfb4e..80e5e38c72 100644
--- a/sysdeps/ieee754/ldbl-128/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-128/e_hypotl.c
@@ -130,7 +130,9 @@ __ieee754_hypotl(long double x, long double y)
 	    t1 = 1.0L;
 	    GET_LDOUBLE_MSW64(high,t1);
 	    SET_LDOUBLE_MSW64(t1,high+(k<<48));
-	    return t1*w;
+	    w *= t1;
+	    math_check_force_underflow_nonneg (w);
+	    return w;
 	} else return w;
 }
 strong_alias (__ieee754_hypotl, __hypotl_finite)
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
index 3b07a47b40..c68dac03b0 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c
@@ -125,7 +125,11 @@ __ieee754_hypotl(long double x, long double y)
 	    w  = __ieee754_sqrtl(a1*b1-(w*(-w)-(a1*b2+a2*b)));
 	}
 	if(k!=0)
-	    return w*kld;
+	    {
+		w *= kld;
+		math_check_force_underflow_nonneg (w);
+		return w;
+	    }
 	else
 	    return w;
 }
diff --git a/sysdeps/ieee754/ldbl-96/e_hypotl.c b/sysdeps/ieee754/ldbl-96/e_hypotl.c
index d3152f91e5..ee3a07055b 100644
--- a/sysdeps/ieee754/ldbl-96/e_hypotl.c
+++ b/sysdeps/ieee754/ldbl-96/e_hypotl.c
@@ -132,7 +132,9 @@ long double __ieee754_hypotl(long double x, long double y)
 	    t1 = 1.0;
 	    GET_LDOUBLE_EXP(exp,t1);
 	    SET_LDOUBLE_EXP(t1,exp+k);
-	    return t1*w;
+	    w *= t1;
+	    math_check_force_underflow_nonneg (w);
+	    return w;
 	} else return w;
 }
 strong_alias (__ieee754_hypotl, __hypotl_finite)