summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorenge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2004-11-15 12:54:39 +0000
committerenge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2004-11-15 12:54:39 +0000
commitbcad994e5215ca2e3c24060832f99613daabf0e2 (patch)
tree8f5cf79a2fbdf65ce0cb6facc16ae98732613427
parent249e2f510ef50007eccf417ba4a5cad598decc03 (diff)
downloadmpc-bcad994e5215ca2e3c24060832f99613daabf0e2.tar.gz
added 1 to the precision of x to allow an exact difference v-w
in the Karatsuba code git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@12 211d60ee-9f03-0410-a15a-8952a2c7a4e4
-rw-r--r--mul.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mul.c b/mul.c
index 99f989f..4161f1f 100644
--- a/mul.c
+++ b/mul.c
@@ -283,7 +283,8 @@ mpc_mul_karatsuba (mpc_ptr rop, mpc_srcptr op1, mpc_srcptr op2, mpc_rnd_t rnd)
mp_prec_t prec_x;
prec_x = (MPFR_EXP(v) > MPFR_EXP(w)) ? MPFR_EXP(v) - MPFR_EXP(w)
: MPFR_EXP(w) - MPFR_EXP(v);
- prec_x += (prec_v > prec_w) ? prec_v : prec_w;
+ prec_x += MAX(prec_v, prec_w) + 1;
+ /* +1 is necessary for a potential carry */
/* ensure we do not use a too large precision */
if (prec_x > prec_u)
prec_x = prec_u;