summaryrefslogtreecommitdiff
path: root/mpz/tdiv_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'mpz/tdiv_r.c')
-rw-r--r--mpz/tdiv_r.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/mpz/tdiv_r.c b/mpz/tdiv_r.c
index c76275e53..b0c38d610 100644
--- a/mpz/tdiv_r.c
+++ b/mpz/tdiv_r.c
@@ -1,7 +1,7 @@
/* mpz_tdiv_r(rem, dividend, divisor) -- Set REM to DIVIDEND mod DIVISOR.
-Copyright 1991, 1993, 1994, 2000, 2001, 2005, 2012 Free Software Foundation,
-Inc.
+Copyright 1991, 1993, 1994, 2000, 2001, 2005, 2012, 2021 Free Software
+Foundation, Inc.
This file is part of the GNU MP Library.
@@ -35,7 +35,7 @@ see https://www.gnu.org/licenses/. */
void
mpz_tdiv_r (mpz_ptr rem, mpz_srcptr num, mpz_srcptr den)
{
- mp_size_t ql;
+ mp_size_t ql, n0;
mp_size_t ns, nl, dl;
mp_ptr np, dp, qp, rp;
TMP_DECL;
@@ -88,7 +88,12 @@ mpz_tdiv_r (mpz_ptr rem, mpz_srcptr num, mpz_srcptr den)
np = tp;
}
- mpn_tdiv_qr (qp, rp, 0L, np, nl, dp, dl);
+ for (n0 = 0; *dp == 0; ++dp)
+ {
+ rp [n0++] = *np++;
+ --nl;
+ }
+ mpn_tdiv_qr (qp, rp + n0, 0L, np, nl, dp, dl - n0);
MPN_NORMALIZE (rp, dl);