summaryrefslogtreecommitdiff
path: root/set_d.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>1999-07-01 17:00:58 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>1999-07-01 17:00:58 +0000
commite706659b50e3041b5b6cf6ad65c4f5d04b4c579d (patch)
tree97fe7dfaa4042408cc18a498375f2e8024ce9a6e /set_d.c
parentfa8cede7805a49078d128d4280aa6f3d01d30205 (diff)
downloadmpfr-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.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/set_d.c b/set_d.c
index 47a659670..7a937c8da 100644
--- a/set_d.c
+++ b/set_d.c
@@ -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);