diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/ieee754/dbl-64/mptan.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/sysdeps/ieee754/dbl-64/mptan.c b/sysdeps/ieee754/dbl-64/mptan.c index 234108e373..51b5718e73 100644 --- a/sysdeps/ieee754/dbl-64/mptan.c +++ b/sysdeps/ieee754/dbl-64/mptan.c @@ -40,23 +40,25 @@ # define SECTION #endif -int __mpranred(double, mp_no *, int); -void __c32(mp_no *, mp_no *, mp_no *, int); - void SECTION -__mptan(double x, mp_no *mpy, int p) { +__mptan (double x, mp_no *mpy, int p) +{ int n; mp_no mpw, mpc, mps; - n = __mpranred(x, &mpw, p) & 0x00000001; /* negative or positive result */ - __c32(&mpw, &mpc, &mps, p); /* computing sin(x) and cos(x) */ - if (n) /* second or fourth quarter of unit circle */ - { __dvd(&mpc,&mps,mpy,p); - mpy->d[0] *= MONE; - } /* tan is negative in this area */ - else __dvd(&mps,&mpc,mpy,p); - - return; + /* Negative or positive result. */ + n = __mpranred (x, &mpw, p) & 0x00000001; + /* Computing sin(x) and cos(x). */ + __c32 (&mpw, &mpc, &mps, p); + /* Second or fourth quarter of unit circle. */ + if (n) + { + __dvd (&mpc, &mps, mpy, p); + mpy->d[0] *= MONE; + } + /* tan is negative in this area. */ + else + __dvd (&mps, &mpc, mpy, p); } |