diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-25 08:36:55 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-25 08:36:55 +0000 |
commit | e1a135d2e430e191aa4343a9b58f9039bd9e7f60 (patch) | |
tree | bf9d1ef00355ecf02ecdfd3572ef7668fab6eb24 | |
parent | 432c197fff07851ca15f08a0c503389e04673be9 (diff) | |
download | mpfr-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.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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; |