diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/ieee754/dbl-64/mpa.c | 5 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/mpa.h | 1 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/mpatan.c | 10 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/mpsqrt.c | 14 |
4 files changed, 8 insertions, 22 deletions
diff --git a/sysdeps/ieee754/dbl-64/mpa.c b/sysdeps/ieee754/dbl-64/mpa.c index c868c63e98..499dbd309d 100644 --- a/sysdeps/ieee754/dbl-64/mpa.c +++ b/sysdeps/ieee754/dbl-64/mpa.c @@ -53,6 +53,7 @@ #ifndef NO__CONST const mp_no mpone = {1, {1.0, 1.0}}; +const mp_no mptwo = {1, {1.0, 2.0}}; #endif #ifndef NO___ACR @@ -494,10 +495,6 @@ void __inv(const mp_no *x, mp_no *y, int p) { mp_no z,w; static const int np1[] = {0,0,0,0,1,2,2,2,2,3,3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}; - const mp_no mptwo = {1,{1.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; __cpy(x,&z,p); z.e=0; __mp_dbl(&z,&t,p); t=ONE/t; __dbl_mp(t,y,p); EY -= EX; diff --git a/sysdeps/ieee754/dbl-64/mpa.h b/sysdeps/ieee754/dbl-64/mpa.h index 4fdecb60ab..2a2deb410f 100644 --- a/sysdeps/ieee754/dbl-64/mpa.h +++ b/sysdeps/ieee754/dbl-64/mpa.h @@ -55,6 +55,7 @@ typedef struct {/* This structure holds the details of a multi-precision */ typedef union { int i[2]; double d; } number; extern const mp_no mpone; +extern const mp_no mptwo; #define X x->d #define Y y->d diff --git a/sysdeps/ieee754/dbl-64/mpatan.c b/sysdeps/ieee754/dbl-64/mpatan.c index 69d145c619..d88ee69598 100644 --- a/sysdeps/ieee754/dbl-64/mpatan.c +++ b/sysdeps/ieee754/dbl-64/mpatan.c @@ -48,16 +48,13 @@ __mpatan(mp_no *x, mp_no *y, int p) { int i,m,n; double dx; mp_no - mptwo = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}, mptwoim1 = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; mp_no mps,mpsm,mpt,mpt1,mpt2,mpt3; - /* Choose m and initiate mptwo & mptwoim1 */ + /* Choose m and initiate mptwoim1 */ if (EX>0) m=7; else if (EX<0) m=0; else { @@ -65,9 +62,8 @@ __mpatan(mp_no *x, mp_no *y, int p) { for (m=6; m>0; m--) {if (dx>__atan_xm[m].d) break;} } - mptwo.e = mptwoim1.e = 1; - mptwo.d[0] = mptwoim1.d[0] = ONE; - mptwo.d[1] = TWO; + mptwoim1.e = 1; + mptwoim1.d[0] = ONE; /* Reduce x m times */ __mul(x,x,&mpsm,p); diff --git a/sysdeps/ieee754/dbl-64/mpsqrt.c b/sysdeps/ieee754/dbl-64/mpsqrt.c index 87bc22ec12..de0eb701d1 100644 --- a/sysdeps/ieee754/dbl-64/mpsqrt.c +++ b/sysdeps/ieee754/dbl-64/mpsqrt.c @@ -52,19 +52,11 @@ SECTION __mpsqrt(mp_no *x, mp_no *y, int p) { int i,m,ey; double dx,dy; - mp_no - mphalf = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}, - mp3halfs = {0,{0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, - 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; + static const mp_no + mphalf = {0,{1.0,8388608.0 /* 2^23 */}}, + mp3halfs = {1,{1.0,1.0,8388608.0 /* 2^23 */}}; mp_no mpxn,mpz,mpu,mpt1,mpt2; - /* Prepare multi-precision 1/2 and 3/2 */ - mphalf.e =0; mphalf.d[0] =ONE; mphalf.d[1] =HALFRAD; - mp3halfs.e=1; mp3halfs.d[0]=ONE; mp3halfs.d[1]=ONE; mp3halfs.d[2]=HALFRAD; - ey=EX/2; __cpy(x,&mpxn,p); mpxn.e -= (ey+ey); __mp_dbl(&mpxn,&dx,p); dy=fastiroot(dx); __dbl_mp(dy,&mpu,p); __mul(&mpxn,&mphalf,&mpz,p); |