diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2020-11-28 23:38:20 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2020-11-28 23:38:20 +0100 |
commit | eb9c662c253e052833a70e305b9c1d884cb7fe1f (patch) | |
tree | dd7fac287a0957b89577fd426de3bb418e23439f /mini-gmp | |
parent | 0db5b51831cf89a798b2ae6c324ec0b7c9401b24 (diff) | |
download | gmp-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.c | 10 |
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); |