summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2013-12-20 06:42:05 +0000
committerzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2013-12-20 06:42:05 +0000
commit5506233919829b5f0ec15f1a4eca8d0f00468d45 (patch)
tree14d94aa0273320200216ae669ed8e0c6c7d93469
parent5712c925d1ecdcb575ee178a78d1ce8127cb370f (diff)
downloadmpc-5506233919829b5f0ec15f1a4eca8d0f00468d45.tar.gz
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
-rw-r--r--src/sin_cos.c5
-rw-r--r--tests/Makefile.am2
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 \