about summary refs log tree commit diff
path: root/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-03-22 12:52:50 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-03-22 12:52:50 +0000
commitc0df8e693f34b535bd6ee1b691bc4ca6bc3b4579 (patch)
tree9cc7aef340a2766375fb6b317c61df7c1df9b1b5 /sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
parente4d91429aefd7f3ad97457f8935cf675aacfde2a (diff)
downloadglibc-c0df8e693f34b535bd6ee1b691bc4ca6bc3b4579.tar.gz
glibc-c0df8e693f34b535bd6ee1b691bc4ca6bc3b4579.tar.xz
glibc-c0df8e693f34b535bd6ee1b691bc4ca6bc3b4579.zip
Fix low-part sign handling in sin/cos for ldbl-128 and ldbl-128ibm.
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm/k_sincosl.c')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/k_sincosl.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
index f3dd954887..98fe07d7a7 100644
--- a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c
@@ -151,7 +151,11 @@ __kernel_sincosl(long double x, long double y, long double *sinx, long double *c
 
       index = 0x3fe - (tix >> 20);
       hix = (tix + (0x2000 << index)) & (0xffffc000 << index);
-      x = fabsl (x);
+      if (signbit (x))
+	{
+	  x = -x;
+	  y = -y;
+	}
       switch (index)
 	{
 	case 0: index = ((45 << 14) + hix - 0x3fe00000) >> 12; break;