summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2012-10-01 09:39:31 +0000
committerzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2012-10-01 09:39:31 +0000
commitdce9cb91608585c3ff3f3f34f0e608028d93b8ae (patch)
treed092ba2dcc70114aa86dda76305ab177dad0c3c6
parentabc6e34e80584d993124e6b033ee3087a7f4c87d (diff)
downloadmpc-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.c4
-rw-r--r--tests/log10.dat3
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