diff options
author | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2004-11-15 12:54:39 +0000 |
---|---|---|
committer | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2004-11-15 12:54:39 +0000 |
commit | bcad994e5215ca2e3c24060832f99613daabf0e2 (patch) | |
tree | 8f5cf79a2fbdf65ce0cb6facc16ae98732613427 | |
parent | 249e2f510ef50007eccf417ba4a5cad598decc03 (diff) | |
download | mpc-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.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -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; |