From: Siddhesh Poyarekar Date: Mon, 28 Oct 2013 10:12:41 +0000 (+0530) Subject: Consolidate conditionals in mp sin/cos functions X-Git-Tag: glibc-2.19~569 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c79a12040c52623f23796966b806a2a6ce4e34d2;p=thirdparty%2Fglibc.git Consolidate conditionals in mp sin/cos functions Consolidate conditionals in multiple precision sin and cos functions to prepare the code for addition of probe points. --- diff --git a/ChangeLog b/ChangeLog index fbb9e46fe85..fb8f43fa307 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2013-10-28 Siddhesh Poyarekar + + * sysdeps/ieee754/dbl-64/sincos32.c (__sin32): Consolidate + conditional check for return value. + (__cos32): Likewise. + 2013-10-26 Adhemerval Zanella * 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 f253b8ce8b6..49aa1489533 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