diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 1999-07-01 17:00:58 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 1999-07-01 17:00:58 +0000 |
commit | e706659b50e3041b5b6cf6ad65c4f5d04b4c579d (patch) | |
tree | 97fe7dfaa4042408cc18a498375f2e8024ce9a6e /set_d.c | |
parent | fa8cede7805a49078d128d4280aa6f3d01d30205 (diff) | |
download | mpfr-e706659b50e3041b5b6cf6ad65c4f5d04b4c579d.tar.gz |
fixed bugs for 64-bit machines
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@245 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'set_d.c')
-rw-r--r-- | set_d.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -30,7 +30,7 @@ __mpfr_extract_double (rp, d) double d; int e; #endif - /* e=0 iff rp has only one limb */ + /* e=0 iff BITS_PER_MP_LIMB=32 and rp has only one limb */ { long exp; mp_limb_t manh, manl; @@ -229,10 +229,10 @@ mpfr_set_d(r, d, rnd_mode) sizer = (PREC(r)-1)/BITS_PER_MP_LIMB + 1; /* warning: __mpfr_extract_double requires at least two limbs */ - if (sizer == 1) + if (sizer < MPFR_LIMBS_PER_DOUBLE) EXP(r) = __mpfr_extract_double (MANT(r), d, 0); else - EXP(r) = __mpfr_extract_double (MANT(r) + sizer - 2, d, 1); + EXP(r) = __mpfr_extract_double (MANT(r) + sizer - MPFR_LIMBS_PER_DOUBLE, d, 1); if (sizer > MPFR_LIMBS_PER_DOUBLE) MPN_ZERO(MANT(r), sizer - MPFR_LIMBS_PER_DOUBLE); |