diff options
author | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2012-06-01 10:10:18 -0300 |
---|---|---|
committer | Adhemerval Zanella <azanella@linux.vnet.ibm.com> | 2012-06-01 10:10:18 -0300 |
commit | 73a68f94d650ac485db6b95242e1cb6591b193d3 (patch) | |
tree | fb07542aa7411ef1ddbf8d213521d72e208b370c /sysdeps/powerpc/fpu/k_sinf.c | |
parent | ebc64a18c07742ebb85d7ddeca376995c0e67593 (diff) | |
download | glibc-73a68f94d650ac485db6b95242e1cb6591b193d3.tar.gz |
PowerPC: Fix for POWER7 sinf/cosf
This patch fixes some sinf/cosf calculations that generated unexpected
underflows exceptions.
Diffstat (limited to 'sysdeps/powerpc/fpu/k_sinf.c')
-rw-r--r-- | sysdeps/powerpc/fpu/k_sinf.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sysdeps/powerpc/fpu/k_sinf.c b/sysdeps/powerpc/fpu/k_sinf.c index ab4561e65e..c8fb8ef81c 100644 --- a/sysdeps/powerpc/fpu/k_sinf.c +++ b/sysdeps/powerpc/fpu/k_sinf.c @@ -18,6 +18,7 @@ not, see <http://www.gnu.org/licenses/>. */ #include <math.h> +#include <fenv.h> #include <math_private.h> @@ -39,8 +40,8 @@ __kernel_sinf (float x, float y, int iy) ix = __builtin_fabsf (x); if (ix < twom27) { /* |x| < 2**-27 */ - if (x == 0.0) - return x; + __feraiseexcept (FE_INEXACT); + return x; } z = x * x; v = z * x; |