diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_sin.c | 21 |
2 files changed, 5 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog index 2ee5588571..66bb46d050 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2016-09-02 Siddhesh Poyarekar <siddhesh@sourceware.org> + * sysdeps/ieee754/dbl-64/s_sin.c (__sin): Use do_sin. + * sysdeps/ieee754/dbl-64/s_sin.c (do_cos): Accept X and DX as input arguments. Consolidate input partitioning from callers here. (do_cos_slow): Likewise. diff --git a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c index 888270f91d..7196e6433e 100644 --- a/sysdeps/ieee754/dbl-64/s_sin.c +++ b/sysdeps/ieee754/dbl-64/s_sin.c @@ -443,7 +443,7 @@ SECTION #endif __sin (double x) { - double xx, res, t, cor, y, s, c, sn, ssn, cs, ccs; + double xx, res, t, cor; mynumber u; int4 k, m; double retval = 0; @@ -473,23 +473,8 @@ __sin (double x) /*---------------------------- 0.25<|x|< 0.855469---------------------- */ else if (k < 0x3feb6000) { - u.x = big + fabs (x); - y = fabs (x) - (u.x - big); - y = (x > 0 ? y : -y); - - xx = y * y; - s = y + y * xx * (sn3 + xx * sn5); - c = xx * (cs2 + xx * (cs4 + xx * cs6)); - SINCOS_TABLE_LOOKUP (u, sn, ssn, cs, ccs); - if (m <= 0) - { - sn = -sn; - ssn = -ssn; - } - cor = (ssn + s * ccs - sn * c) + cs * s; - res = sn + cor; - cor = (sn - res) + cor; - retval = (res == res + 1.096 * cor) ? res : slow1 (x); + res = do_sin (x, 0, &cor); + retval = (res == res + 1.096 * cor) ? (m > 0 ? res : -res) : slow1 (x); } /* else if (k < 0x3feb6000) */ /*----------------------- 0.855469 <|x|<2.426265 ----------------------*/ |