diff options
author | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2012-06-27 12:37:29 +0000 |
---|---|---|
committer | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2012-06-27 12:37:29 +0000 |
commit | 6ecb821ac1ad818985c51add181e2f26ba2509be (patch) | |
tree | 95319beb5d9425bce817204522ee4b1a98114f9a | |
parent | df476636a2b9137e1a5f7217620ca08a73666607 (diff) | |
download | mpc-6ecb821ac1ad818985c51add181e2f26ba2509be.tar.gz |
[pow_ui.c] fixed bug in mpfr_can_round() call (and improved code coverage)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1189 211d60ee-9f03-0410-a15a-8952a2c7a4e4
-rw-r--r-- | src/pow_ui.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/pow_ui.c b/src/pow_ui.c index 3381028..56dac4a 100644 --- a/src/pow_ui.c +++ b/src/pow_ui.c @@ -131,9 +131,9 @@ mpc_pow_usi (mpc_ptr z, mpc_srcptr x, unsigned long y, int sign, /* the factor on the imaginary part is 2+2^(diff+2) <= 4 for diff <= -1 and < 2^(diff+3) for diff >= 0 */ ei = (diff <= -1) ? l0 + 3 : l0 + diff + 3; - if (mpfr_can_round (mpc_realref(t), p - er, GMP_RNDZ, GMP_RNDZ, + if (mpfr_can_round (mpc_realref(t), p - er, GMP_RNDN, GMP_RNDZ, MPC_PREC_RE(z) + (MPC_RND_RE(rnd) == GMP_RNDN)) - && mpfr_can_round (mpc_imagref(t), p - ei, GMP_RNDZ, GMP_RNDZ, + && mpfr_can_round (mpc_imagref(t), p - ei, GMP_RNDN, GMP_RNDZ, MPC_PREC_IM(z) + (MPC_RND_IM(rnd) == GMP_RNDN))) { inex = mpc_set (z, t, rnd); done = 1; |