diff options
author | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2010-07-30 15:37:53 +0000 |
---|---|---|
committer | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2010-07-30 15:37:53 +0000 |
commit | 095f6eb3d0754058a0586b868c941d85f9fbafce (patch) | |
tree | cbfa1253a998dae2dbf2f4ddd17d87f724253ec1 /src/mul.c | |
parent | 77a6d6e0f8dd1b3cabe40f7a3b90cc2423a4b6d8 (diff) | |
download | mpc-095f6eb3d0754058a0586b868c941d85f9fbafce.tar.gz |
code cleanup: removed macro MPFR_EXP from mpc-impl.h
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@815 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'src/mul.c')
-rw-r--r-- | src/mul.c | 15 |
1 files changed, 7 insertions, 8 deletions
@@ -111,9 +111,11 @@ mpc_mul (mpc_ptr a, mpc_srcptr b, mpc_srcptr c, mpc_rnd_t rnd) /* If the real and imaginary part of one argument have a very different */ /* exponent, it is not reasonable to use Karatsuba multiplication. */ - if ( SAFE_ABS (mpfr_exp_t, MPFR_EXP (MPC_RE (b)) - MPFR_EXP (MPC_IM (b))) + if ( SAFE_ABS (mpfr_exp_t, + mpfr_get_exp (MPC_RE (b)) - mpfr_get_exp (MPC_IM (b))) > (mpfr_exp_t) MPC_MAX_PREC (b) / 2 - || SAFE_ABS (mpfr_exp_t, MPFR_EXP (MPC_RE (c)) - MPFR_EXP (MPC_IM (c))) + || SAFE_ABS (mpfr_exp_t, + mpfr_get_exp (MPC_RE (c)) - mpfr_get_exp (MPC_IM (c))) > (mpfr_exp_t) MPC_MAX_PREC (c) / 2) return mpc_mul_naive (a, b, c, rnd); else @@ -428,12 +430,9 @@ mpc_mul_karatsuba (mpc_ptr rop, mpc_srcptr op1, mpc_srcptr op2, mpc_rnd_t rnd) else if (mpfr_zero_p(w)) prec_x = prec_v; else - { - prec_x = (MPFR_EXP(v) > MPFR_EXP(w)) ? MPFR_EXP(v) - MPFR_EXP(w) - : MPFR_EXP(w) - MPFR_EXP(v); - prec_x += MPC_MAX (prec_v, prec_w) + 1; - } - /* +1 is necessary for a potential carry */ + prec_x = SAFE_ABS (mpfr_exp_t, mpfr_get_exp (v) - mpfr_get_exp (w)) + + MPC_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; |