diff options
author | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2013-12-20 17:31:09 +0000 |
---|---|---|
committer | zimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2013-12-20 17:31:09 +0000 |
commit | 382320d7b18653d5f76055ba49a7d4823ea5c1f6 (patch) | |
tree | 5c5396bae28007b781f2514eb85395899e836d55 /src/acos.c | |
parent | b23b9af5c2b3fb6e4f762aa033ef0b91f58ee277 (diff) | |
download | mpc-382320d7b18653d5f76055ba49a7d4823ea5c1f6.tar.gz |
sin_cos.c: precision was increased by prec/2 too early
acos.c: now increment precision by p/2 after two loops
asin.c: precision was increased by prec/2 too early
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1398 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'src/acos.c')
-rw-r--r-- | src/acos.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -24,7 +24,7 @@ along with this program. If not, see http://www.gnu.org/licenses/ . int mpc_acos (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd) { - int inex_re, inex_im, inex; + int inex_re, inex_im, inex, loop = 0; mpfr_prec_t p_re, p_im, p; mpc_t z1; mpfr_t pi_over_2; @@ -190,7 +190,8 @@ mpc_acos (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd) mpfr_init2 (pi_over_2, p); for (;;) { - p += mpc_ceil_log2 (p) + 3; + loop ++; + p += (loop <= 2) ? mpc_ceil_log2 (p) + 3 : p / 2; mpfr_set_prec (mpc_realref(z1), p); mpfr_set_prec (pi_over_2, p); |