aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/fpu/k_sinf.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2012-06-01 10:10:18 -0300
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2012-06-01 10:10:18 -0300
commit73a68f94d650ac485db6b95242e1cb6591b193d3 (patch)
treefb07542aa7411ef1ddbf8d213521d72e208b370c /sysdeps/powerpc/fpu/k_sinf.c
parentebc64a18c07742ebb85d7ddeca376995c0e67593 (diff)
downloadglibc-73a68f94d650ac485db6b95242e1cb6591b193d3.zip
glibc-73a68f94d650ac485db6b95242e1cb6591b193d3.tar.gz
glibc-73a68f94d650ac485db6b95242e1cb6591b193d3.tar.bz2
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.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sysdeps/powerpc/fpu/k_sinf.c b/sysdeps/powerpc/fpu/k_sinf.c
index ab4561e..c8fb8ef 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;