From 5506233919829b5f0ec15f1a4eca8d0f00468d45 Mon Sep 17 00:00:00 2001 From: zimmerma Date: Fri, 20 Dec 2013 06:42:05 +0000 Subject: speed up mpc_sin for small input (http://lists.gforge.inria.fr/pipermail/mpc-discuss/2013-December/001266.html) git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1395 211d60ee-9f03-0410-a15a-8952a2c7a4e4 --- src/sin_cos.c | 5 +++-- tests/Makefile.am | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sin_cos.c b/src/sin_cos.c index 0bb00cf..980e413 100644 --- a/src/sin_cos.c +++ b/src/sin_cos.c @@ -299,7 +299,7 @@ mpc_sin_cos (mpc_ptr rop_sin, mpc_ptr rop_cos, mpc_srcptr op, mpfr_t s, c, sh, ch, sch, csh; mpfr_prec_t prec; int ok; - int inex_re, inex_im, inex_sin, inex_cos; + int inex_re, inex_im, inex_sin, inex_cos, loop = 0; prec = 2; if (rop_sin != NULL) @@ -315,8 +315,9 @@ mpc_sin_cos (mpc_ptr rop_sin, mpc_ptr rop_cos, mpc_srcptr op, mpfr_init2 (csh, 2); do { + loop ++; ok = 1; - prec += mpc_ceil_log2 (prec) + 5; + prec += (loop == 1) ? mpc_ceil_log2 (prec) + 5 : prec / 2; mpfr_set_prec (s, prec); mpfr_set_prec (c, prec); diff --git a/tests/Makefile.am b/tests/Makefile.am index 8bae3ef..accfd3f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -33,7 +33,7 @@ texp tfma tfr_div tfr_sub timag tio_str tlog tlog10 \ tmul tmul_2si tmul_2ui tmul_fr tmul_i tmul_si tmul_ui \ tneg tnorm tpow tpow_ld tpow_d tpow_fr tpow_si tpow_ui tpow_z \ tprec tproj treal treimref tset tsin tsin_cos tsinh tsqr tsqrt tstrtoc tsub \ -tsub_fr tsub_ui tswap ttan ttanh tui_div tui_ui_sub tget_version +tsub_fr tsub_ui tswap ttan ttanh tui_div tui_ui_sub tget_version bug check_LTLIBRARIES=libmpc-tests.la libmpc_tests_la_SOURCES=mpc-tests.h random.c tgeneric.c read_data.c \ -- cgit v1.2.1