summaryrefslogtreecommitdiff
path: root/src/sin_cos.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sin_cos.c')
-rw-r--r--src/sin_cos.c5
1 files changed, 3 insertions, 2 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);