From 9c6f1be522f49018a638139e606ab788b0254424 Mon Sep 17 00:00:00 2001 From: zimmerma Date: Thu, 5 Jul 2012 17:00:06 +0000 Subject: [atan.c] fixed one wrong rounding mode, and added comments git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1234 211d60ee-9f03-0410-a15a-8952a2c7a4e4 --- src/atan.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/atan.c b/src/atan.c index 760f5d8..fa0c81e 100644 --- a/src/atan.c +++ b/src/atan.c @@ -314,16 +314,18 @@ mpc_atan (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd) mpfr_set_prec (y, p); /* a = upper bound for log(x^2 + (1+y)^2) */ - mpfr_add_ui (a, mpc_imagref (op), 1, rnd1); + mpfr_add_ui (a, mpc_imagref (op), 1, rnd1); /* round away */ mpfr_sqr (a, a, GMP_RNDU); mpfr_sqr (y, mpc_realref (op), GMP_RNDU); mpfr_add (a, a, y, GMP_RNDU); mpfr_log (a, a, GMP_RNDU); /* b = lower bound for log(x^2 + (1-y)^2) */ - mpfr_ui_sub (b, 1, mpc_imagref (op), GMP_RNDZ); - mpfr_sqr (b, b, GMP_RNDU); - /* mpfr_sqr (y, mpc_realref (op), GMP_RNDZ); */ + mpfr_ui_sub (b, 1, mpc_imagref (op), GMP_RNDZ); /* round to zero */ + mpfr_sqr (b, b, GMP_RNDZ); + /* we could write mpfr_sqr (y, mpc_realref (op), GMP_RNDZ) but it is + more efficient to reuse the value of y (x^2) above and subtract + one ulp */ mpfr_nextbelow (y); mpfr_add (b, b, y, GMP_RNDZ); mpfr_log (b, b, GMP_RNDZ); -- cgit v1.2.1