diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2012-08-14 10:37:10 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2012-08-14 10:37:10 +0000 |
commit | 1533b04d1d5adbb900a0c8775b8f0fb7e6549bf3 (patch) | |
tree | 9294eac8e9639753f23944941486a204d7978786 | |
parent | 12ac0e92350441cbe99e3986cd5f44bd157cc6e7 (diff) | |
download | mpfr-1533b04d1d5adbb900a0c8775b8f0fb7e6549bf3.tar.gz |
[src/get_d64.c] Fixed overflow cases.
(merged changeset r8372 from the trunk)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/3.1@8373 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | src/get_d64.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/get_d64.c b/src/get_d64.c index 6a52ba630..19577b48c 100644 --- a/src/get_d64.c +++ b/src/get_d64.c @@ -334,7 +334,8 @@ mpfr_get_decimal64 (mpfr_srcptr src, mpfr_rnd_t rnd_mode) /* the largest decimal64 number is just below 10^(385) < 2^1279 */ else if (MPFR_UNLIKELY (e > 1279)) /* then src >= 2^1279 */ { - if (MPFR_RNDZ || (rnd_mode == MPFR_RNDU && negative != 0) + if (rnd_mode == MPFR_RNDZ + || (rnd_mode == MPFR_RNDU && negative != 0) || (rnd_mode == MPFR_RNDD && negative == 0)) return get_decimal64_max (negative); else @@ -379,7 +380,8 @@ mpfr_get_decimal64 (mpfr_srcptr src, mpfr_rnd_t rnd_mode) which corresponds to s=[0.]9999...999 and e=385 */ else if (e > 385) { - if (MPFR_RNDZ || (rnd_mode == MPFR_RNDU && negative != 0) + if (rnd_mode == MPFR_RNDZ + || (rnd_mode == MPFR_RNDU && negative != 0) || (rnd_mode == MPFR_RNDD && negative == 0)) return get_decimal64_max (negative); else |