summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2021-02-15 14:27:53 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2021-02-15 14:27:53 +0000
commit614272c7b358f328028401ef94ab92361207e032 (patch)
tree8f58bab81962939f3223131b9dd861e4aa9a5972 /src
parentb0bbbc1a662fed3e657cc7639cc929a8616c00b7 (diff)
downloadmpfr-614272c7b358f328028401ef94ab92361207e032.tar.gz
[src/jyn_asympt.c] fixed bug when s=0 at the end of the for loop
[tests/tj1.c] added corresponding non-regression test git-svn-id: https://scm.gforge.inria.fr/anonscm/svn/mpfr/trunk@14431 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src')
-rw-r--r--src/jyn_asympt.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/jyn_asympt.c b/src/jyn_asympt.c
index e1c0e8ba6..7a28fa0bc 100644
--- a/src/jyn_asympt.c
+++ b/src/jyn_asympt.c
@@ -69,7 +69,7 @@ FUNCTION (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
MPFR_ZIV_INIT (loop, w);
for (;;)
{
- int ok = 1;
+ int ok = 0;
mpfr_set_prec (c, w);
mpfr_init2 (s, w);
@@ -96,10 +96,7 @@ FUNCTION (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
/* if s or c is zero, MPFR_GET_EXP will fail below */
if (MPFR_IS_ZERO(s) || MPFR_IS_ZERO(c))
- {
- ok = 0;
- goto clear;
- }
+ goto clear; /* with ok=0 */
/* precompute 1/(8|z|) */
mpfr_si_div (iz, MPFR_IS_POS(z) ? 1 : -1, z, MPFR_RNDN); /* err <= 1 */
@@ -227,6 +224,9 @@ FUNCTION (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
mpfr_sub (s, c, s, MPFR_RNDN);
#endif
}
+ if (MPFR_IS_ZERO(s))
+ goto clear; /* with ok=0 */
+ ok = 1;
if ((n & 2) != 0)
mpfr_neg (s, s, MPFR_RNDN);
if (MPFR_GET_EXP (s) > err)