aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/ieee754/dbl-64/sincos32.c14
2 files changed, 12 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index fbb9e46..fb8f43f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-10-28 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ * sysdeps/ieee754/dbl-64/sincos32.c (__sin32): Consolidate
+ conditional check for return value.
+ (__cos32): Likewise.
+
2013-10-26 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/powerpc/powerpc64/strcpy.S (strcpy): Add word load/store
diff --git a/sysdeps/ieee754/dbl-64/sincos32.c b/sysdeps/ieee754/dbl-64/sincos32.c
index f253b8c..49aa148 100644
--- a/sysdeps/ieee754/dbl-64/sincos32.c
+++ b/sysdeps/ieee754/dbl-64/sincos32.c
@@ -147,10 +147,9 @@ __sin32 (double x, double res, double res1)
__dbl_mp (x, &c, p); /* c = x */
__sub (&b, &c, &a, p);
/* if a > 0 return min (res, res1), otherwise return max (res, res1). */
- if (a.d[0] > 0)
- return (res < res1) ? res : res1;
- else
- return (res > res1) ? res : res1;
+ if ((a.d[0] > 0 && res >= res1) || (a.d[0] <= 0 && res <= res1))
+ res = res1;
+ return res;
}
/* Receive double x and two double results of cos(x) and return result which is
@@ -181,10 +180,9 @@ __cos32 (double x, double res, double res1)
__dbl_mp (x, &c, p); /* c = x */
__sub (&b, &c, &a, p);
/* if a > 0 return max (res, res1), otherwise return min (res, res1). */
- if (a.d[0] > 0)
- return (res > res1) ? res : res1;
- else
- return (res < res1) ? res : res1;
+ if ((a.d[0] > 0 && res <= res1) || (a.d[0] <= 0 && res >= res1))
+ res = res1;
+ return res;
}
/* Compute sin() of double-length number (X + DX) as Multi Precision number and