From dce9cb91608585c3ff3f3f34f0e608028d93b8ae Mon Sep 17 00:00:00 2001 From: zimmerma Date: Mon, 1 Oct 2012 09:39:31 +0000 Subject: [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 --- src/log10.c | 4 +++- tests/log10.dat | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) 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 -- cgit v1.2.1