diff options
author | Torbjorn Granlund <tege@gmplib.org> | 2010-01-07 19:09:17 +0100 |
---|---|---|
committer | Torbjorn Granlund <tege@gmplib.org> | 2010-01-07 19:09:17 +0100 |
commit | f23a198e66036d5ee726e82e1bf2521dfcb71640 (patch) | |
tree | ae22020602cd253ca12339f58875b07c2d6c7ba1 | |
parent | 28f7cc5e9e14374caed3390e5ed4b50c6e86073c (diff) | |
download | gmp-f23a198e66036d5ee726e82e1bf2521dfcb71640.tar.gz |
Account for divisor truncation error as well as mpn_mu_divappr_q's error.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | mpn/generic/mu_div_q.c | 4 |
2 files changed, 8 insertions, 3 deletions
@@ -2,6 +2,9 @@ * Version 5.0.0 released. + * mpn/generic/mu_div_q.c: Account for divisor truncation error as well + as mpn_mu_divappr_q's error. + * mpn/generic/mu_div_q.c: Handle mpn_preinv_mu_divappr_q returning a high limb. @@ -18,8 +21,8 @@ (mpn_preinv_mu_divappr_q, mpn_mu_divappr_q): Declare dividend constant. * gmp-impl.h: Likewise. - * perfpow.c (mpn_perfect_power_p): Call mpn_divexact instead of mpn_bdiv_q (with - too little scratch space!). + * perfpow.c (mpn_perfect_power_p): Call mpn_divexact instead of + mpn_bdiv_q (with too little scratch space!). From Niels Möller: * tests/mpn/t-div.c (check_one): Get rid of the poorly managed variable diff --git a/mpn/generic/mu_div_q.c b/mpn/generic/mu_div_q.c index f0466a212..d4c3cef54 100644 --- a/mpn/generic/mu_div_q.c +++ b/mpn/generic/mu_div_q.c @@ -166,7 +166,9 @@ mpn_mu_div_q (mp_ptr qp, qh = mpn_mu_divappr_q (tp, np + nn - (2 * qn + 2), 2 * qn + 2, dp + dn - (qn + 1), qn + 1, scratch); - if (tp[0] > 4) + /* The max error of mpn_mu_divappr_q is +4, but we get an additional + error from the divisor truncation. */ + if (tp[0] > 6) { MPN_COPY (qp, tp + 1, qn); } |