mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-21 04:31:04 +08:00
PowerPC: Fix modf/modff optimization return sign
This patch fix the optimized powerpc-fpu modf/modff implementation when using in non-default rounding mode where the zero sign is not as expected. It fixes the libm testsuite tests modf_downward (0) == 0.00000000000000000000e+00 modf_downward (20) == 0.00000000000000000000e+00 modf_downward (21) == 0.00000000000000000000e+00 Where the sign returned was negative.
This commit is contained in:
parent
e9996ef750
commit
54b46a4b3e
@ -1,3 +1,9 @@
|
||||
2014-03-03 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/power5+/fpu/s_modf.c (__modf): Fix to return correct
|
||||
sign in non default rounding modes.
|
||||
* sysdeps/powerpc/power5+/fpu/s_modff.c (__modff): Likewise.
|
||||
|
||||
2014-03-08 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* math/libm-test.inc (ALL_RM_TEST): New macro.
|
||||
|
@ -36,12 +36,12 @@ __modf (double x, double *iptr)
|
||||
if (x >= 0.0)
|
||||
{
|
||||
*iptr = __floor (x);
|
||||
return (x - *iptr);
|
||||
return __copysign (x - *iptr, x);
|
||||
}
|
||||
else
|
||||
{
|
||||
*iptr = __ceil (x);
|
||||
return (x - *iptr);
|
||||
return __copysign (x - *iptr, x);
|
||||
}
|
||||
}
|
||||
weak_alias (__modf, modf)
|
||||
|
@ -35,12 +35,12 @@ __modff (float x, float *iptr)
|
||||
if (x >= 0.0)
|
||||
{
|
||||
*iptr = __floorf (x);
|
||||
return (x - *iptr);
|
||||
return __copysignf (x - *iptr, x);
|
||||
}
|
||||
else
|
||||
{
|
||||
*iptr = __ceilf (x);
|
||||
return (x - *iptr);
|
||||
return __copysignf (x - *iptr, x);
|
||||
}
|
||||
}
|
||||
weak_alias (__modff, modff)
|
||||
|
Loading…
Reference in New Issue
Block a user