summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--atan2.c2
-rw-r--r--tests/tatan.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/atan2.c b/atan2.c
index feed91ed4..93349bd87 100644
--- a/atan2.c
+++ b/atan2.c
@@ -123,7 +123,7 @@ mpfr_atan2 (mpfr_ptr dest, mpfr_srcptr y, mpfr_srcptr x, mp_rnd_t rnd_mode)
{
mpfr_t tmp2;
MPFR_ZIV_DECL (loop2);
- mp_prec_t prec2 = MPFR_PREC (dest) + BITS_PER_MP_LIMB;
+ mp_prec_t prec2 = MPFR_PREC (dest) + 10;
mpfr_init2 (tmp2, prec2);
MPFR_ZIV_INIT (loop2, prec2);
diff --git a/tests/tatan.c b/tests/tatan.c
index 93bb03f7b..7801cd7b8 100644
--- a/tests/tatan.c
+++ b/tests/tatan.c
@@ -348,6 +348,9 @@ special_atan2 (void)
MPFR_CHANGE_SIGN (x);
mpfr_atan2 (z, y, x, MPFR_RNDN);
MPFR_ASSERTN (mpfr_cmp_str (z, "-2.356194490192344928", 10, MPFR_RNDN) == 0);
+ mpfr_set_prec (z, 905); /* exercises Ziv's loop */
+ mpfr_atan2 (z, y, x, MPFR_RNDZ);
+ MPFR_ASSERTN (mpfr_cmp_str (z, "-2.35619449019234492884698253745962716314787704953132936573120844423086230471465674897102611900658780098661106488496172998532038345716293667379401955609636083808771307702645389082916973346721171619778647332160823174945008459635673617534008737395340143185923642519259526145784", 10, MPFR_RNDN) == 0);
mpfr_clears (x, y, z, (mpfr_ptr) 0);
}