diff options
Diffstat (limited to 'add.c')
-rw-r--r-- | add.c | 12 |
1 files changed, 8 insertions, 4 deletions
@@ -294,8 +294,11 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp) if (difs) { cc = cprev << (BITS_PER_MP_LIMB - difs); - cprev = cp[--ck]; - cc += cprev >> difs; + if (ck > 0) + { + cprev = cp[--ck]; + cc += cprev >> difs; + } } else cc = cp[--ck]; @@ -338,9 +341,9 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp) if (ck < 0) goto c_read; cc = cprev << (BITS_PER_MP_LIMB - difs); - if (--ck >= 0) + if (ck > 0) { - cprev = cp[ck]; + cprev = cp[--ck]; cc += cprev >> difs; } } @@ -389,6 +392,7 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp) fb = 1; goto rounding; } + MPFR_ASSERTN(ck >= 0); while (ck) { if (cp[--ck]) |