summaryrefslogtreecommitdiff
path: root/mini-gmp
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2020-11-28 23:38:20 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2020-11-28 23:38:20 +0100
commiteb9c662c253e052833a70e305b9c1d884cb7fe1f (patch)
treedd7fac287a0957b89577fd426de3bb418e23439f /mini-gmp
parent0db5b51831cf89a798b2ae6c324ec0b7c9401b24 (diff)
downloadgmp-eb9c662c253e052833a70e305b9c1d884cb7fe1f.tar.gz
mini-gmp/mini-gmp.c (mpz_gcd): Support limbs larger than ui
Diffstat (limited to 'mini-gmp')
-rw-r--r--mini-gmp/mini-gmp.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/mini-gmp/mini-gmp.c b/mini-gmp/mini-gmp.c
index c8e69681e..4e3dcbab9 100644
--- a/mini-gmp/mini-gmp.c
+++ b/mini-gmp/mini-gmp.c
@@ -2777,9 +2777,13 @@ mpz_gcd (mpz_t g, const mpz_t u, const mpz_t v)
if (tv->_mp_size == 1)
{
- mp_limb_t vl = tv->_mp_d[0];
- mp_limb_t ul = mpz_tdiv_ui (tu, vl);
- mpz_set_ui (g, mpn_gcd_11 (ul, vl));
+ mp_limb_t *gp;
+
+ mpz_tdiv_r (tu, tu, tv);
+ gp = MPZ_REALLOC (g, 1); /* gp = mpz_limbs_modify (g, 1); */
+ *gp = mpn_gcd_11 (tu->_mp_d[0], tv->_mp_d[0]);
+
+ g->_mp_size = *gp != 0; /* mpz_limbs_finish (g, 1); */
break;
}
mpz_sub (tu, tu, tv);