diff options
Diffstat (limited to 'mpz/tdiv_r.c')
-rw-r--r-- | mpz/tdiv_r.c | 13 |
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); |