diff options
author | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2012-10-01 09:39:31 +0000 |
---|---|---|
committer | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2012-10-01 09:39:31 +0000 |
commit | dce9cb91608585c3ff3f3f34f0e608028d93b8ae (patch) | |
tree | d092ba2dcc70114aa86dda76305ab177dad0c3c6 | |
parent | abc6e34e80584d993124e6b033ee3087a7f4c87d (diff) | |
download | mpc-dce9cb91608585c3ff3f3f34f0e608028d93b8ae.tar.gz |
[log10.c] fix bug reported by M. Gastineau
[log10.dat] added corresponding test
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1274 211d60ee-9f03-0410-a15a-8952a2c7a4e4
-rw-r--r-- | src/log10.c | 4 | ||||
-rw-r--r-- | tests/log10.dat | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/log10.c b/src/log10.c index 6b7e687..f2062d3 100644 --- a/src/log10.c +++ b/src/log10.c @@ -82,7 +82,9 @@ mpc_log10_aux (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd, int flag, int nb) mpfr_div (mpc_realref (tmp), mpc_realref (tmp), log10, MPFR_RNDN); ok = mpfr_can_round (mpc_realref (tmp), prec - 2, MPFR_RNDN, MPFR_RNDZ, MPC_PREC_RE(rop) + - (MPC_RND_RE (rnd) == MPFR_RNDN)); + (MPC_RND_RE (rnd) == MPFR_RNDN)) || + mpfr_cmp_ui (mpc_imagref (op), 1) == 0; + /* the result is also exact when y=1 */ if (ok) ret = mpfr_set (mpc_realref (rop), mpc_realref (tmp), MPC_RND_RE (rnd)); diff --git a/tests/log10.dat b/tests/log10.dat index fe49e28..573f8fc 100644 --- a/tests/log10.dat +++ b/tests/log10.dat @@ -173,3 +173,6 @@ # log10(3+I) has an exact real part (from Joseph S. Myers) 0 + 53 0.5 53 0x8f168ee8415e7p-54 2 3 2 1 N N + +# bug found by Mickael Gastineau on 29 Sep 2012 +0 + 2 +0 2 0.75 2 +0 2 1 N N |