about summary refs log tree commit diff
path: root/sysdeps/ieee754/flt-32
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/flt-32')
-rw-r--r--sysdeps/ieee754/flt-32/e_powf.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sysdeps/ieee754/flt-32/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c
index 8e8d918456..18042960c2 100644
--- a/sysdeps/ieee754/flt-32/e_powf.c
+++ b/sysdeps/ieee754/flt-32/e_powf.c
@@ -244,7 +244,12 @@ __ieee754_powf(float x, float y)
 	z  = one-(r-z);
 	GET_FLOAT_WORD(j,z);
 	j += (n<<23);
-	if((j>>23)<=0) z = __scalbnf(z,n);	/* subnormal output */
+	if((j>>23)<=0)	/* subnormal output */
+	  {
+	    z = __scalbnf (z, n);
+	    float force_underflow = z * z;
+	    math_force_eval (force_underflow);
+	  }
 	else SET_FLOAT_WORD(z,j);
 	return s*z;
 }