Fix pow(3) and powf(3) regression in earlier undefined behavior fix.
This commit is contained in:
parent
7139de4a53
commit
fa11548c56
|
@ -296,7 +296,7 @@ __ieee754_pow(double x, double y)
|
||||||
r = (z*t1)/(t1-two)-(w+z*w);
|
r = (z*t1)/(t1-two)-(w+z*w);
|
||||||
z = one-(r-z);
|
z = one-(r-z);
|
||||||
GET_HIGH_WORD(j,z);
|
GET_HIGH_WORD(j,z);
|
||||||
j = (int32_t)((uint32_t)j + ((uint32_t)u<<20));
|
j = (int32_t)((uint32_t)j + ((uint32_t)n<<20));
|
||||||
if((j>>20)<=0) z = scalbn(z,n); /* subnormal output */
|
if((j>>20)<=0) z = scalbn(z,n); /* subnormal output */
|
||||||
else SET_HIGH_WORD(z,j);
|
else SET_HIGH_WORD(z,j);
|
||||||
return s*z;
|
return s*z;
|
||||||
|
|
|
@ -240,7 +240,7 @@ __ieee754_powf(float x, float y)
|
||||||
r = (z*t1)/(t1-two)-(w+z*w);
|
r = (z*t1)/(t1-two)-(w+z*w);
|
||||||
z = one-(r-z);
|
z = one-(r-z);
|
||||||
GET_FLOAT_WORD(j,z);
|
GET_FLOAT_WORD(j,z);
|
||||||
j = (int32_t)((uint32_t)j + ((uint32_t)u<<23));
|
j = (int32_t)((uint32_t)j + ((uint32_t)n<<23));
|
||||||
if((j>>23)<=0) z = scalbnf(z,n); /* subnormal output */
|
if((j>>23)<=0) z = scalbnf(z,n); /* subnormal output */
|
||||||
else SET_FLOAT_WORD(z,j);
|
else SET_FLOAT_WORD(z,j);
|
||||||
return s*z;
|
return s*z;
|
||||||
|
|
Loading…
Reference in New Issue