diff options
Diffstat (limited to 'sysdeps/ieee754/dbl-64/slowpow.c')
-rw-r--r-- | sysdeps/ieee754/dbl-64/slowpow.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/sysdeps/ieee754/dbl-64/slowpow.c b/sysdeps/ieee754/dbl-64/slowpow.c index 11da7e43d9..3412197aef 100644 --- a/sysdeps/ieee754/dbl-64/slowpow.c +++ b/sysdeps/ieee754/dbl-64/slowpow.c @@ -34,40 +34,40 @@ #include "mpa.h" -void mpexp(mp_no *x, mp_no *y, int p); -void mplog(mp_no *x, mp_no *y, int p); +void __mpexp(mp_no *x, mp_no *y, int p); +void __mplog(mp_no *x, mp_no *y, int p); double ulog(double); -double halfulp(double x,double y); +double __halfulp(double x,double y); -double slowpow(double x, double y, double z) { +double __slowpow(double x, double y, double z) { double res,res1; mp_no mpx, mpy, mpz,mpw,mpp,mpr,mpr1; static const mp_no eps = {-3,{1.0,4.0}}; int p; - res = halfulp(x,y); /* halfulp() returns -10 or x^y */ + res = __halfulp(x,y); /* halfulp() returns -10 or x^y */ if (res >= 0) return res; /* if result was really computed by halfulp */ /* else, if result was not really computed by halfulp */ p = 10; /* p=precision */ - dbl_mp(x,&mpx,p); - dbl_mp(y,&mpy,p); - dbl_mp(z,&mpz,p); - mplog(&mpx, &mpz, p); /* log(x) = z */ - mul(&mpy,&mpz,&mpw,p); /* y * z =w */ - mpexp(&mpw, &mpp, p); /* e^w =pp */ - add(&mpp,&eps,&mpr,p); /* pp+eps =r */ + __dbl_mp(x,&mpx,p); + __dbl_mp(y,&mpy,p); + __dbl_mp(z,&mpz,p); + __mplog(&mpx, &mpz, p); /* log(x) = z */ + __mul(&mpy,&mpz,&mpw,p); /* y * z =w */ + __mpexp(&mpw, &mpp, p); /* e^w =pp */ + __add(&mpp,&eps,&mpr,p); /* pp+eps =r */ __mp_dbl(&mpr, &res, p); - sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */ + __sub(&mpp,&eps,&mpr1,p); /* pp -eps =r1 */ __mp_dbl(&mpr1, &res1, p); /* converting into double precision */ if (res == res1) return res; p = 32; /* if we get here result wasn't calculated exactly, continue */ - dbl_mp(x,&mpx,p); /* for more exact calculation */ - dbl_mp(y,&mpy,p); - dbl_mp(z,&mpz,p); - mplog(&mpx, &mpz, p); /* log(c)=z */ - mul(&mpy,&mpz,&mpw,p); /* y*z =w */ - mpexp(&mpw, &mpp, p); /* e^w=pp */ + __dbl_mp(x,&mpx,p); /* for more exact calculation */ + __dbl_mp(y,&mpy,p); + __dbl_mp(z,&mpz,p); + __mplog(&mpx, &mpz, p); /* log(c)=z */ + __mul(&mpy,&mpz,&mpw,p); /* y*z =w */ + __mpexp(&mpw, &mpp, p); /* e^w=pp */ __mp_dbl(&mpp, &res, p); /* converting into double precision */ return res; } |