summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-25 08:36:55 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-25 08:36:55 +0000
commite1a135d2e430e191aa4343a9b58f9039bd9e7f60 (patch)
treebf9d1ef00355ecf02ecdfd3572ef7668fab6eb24
parent432c197fff07851ca15f08a0c503389e04673be9 (diff)
downloadmpfr-e1a135d2e430e191aa4343a9b58f9039bd9e7f60.tar.gz
fixed bug in rounding part when rounding towards 0 (infinite loop due to bn<an)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1347 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--add.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/add.c b/add.c
index 474cacf6f..c4f91398e 100644
--- a/add.c
+++ b/add.c
@@ -439,7 +439,8 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
*ap -= carry;
if (carry == mask) /* all last sh bits from a are 1 */
{
- bn -= an;
+ bn = (bn >= an) ? bn - an : 0;
+ MPFR_ASSERTN(cn >= k);
cn -= k;
carry = ~((mp_limb_t) 0);
lastc = (dif) ? (cp[cn] << (BITS_PER_MP_LIMB - dif)) : 0;