mini-gmp mpz_gcdext Bézout coefficients do not match documentation
Niels Möller
nisse at lysator.liu.se
Sat Feb 17 20:04:50 CET 2024
marco.bodrato at tutanota.com writes:
> And if I correctly patched and tested your proposed code. with equal numbers I get t=0, instead of s=0.
Thanks for testing, I have to look into that case, then.
> Shat about simply changing the test from > to >= ?
>
> /* Arrange so that |s| < |u| / 2g */
> mpz_add (s1, s0, s1);
> - if (mpz_cmpabs (s0, s1) > 0)
> + if (mpz_cmpabs (s0, s1) >= 0)
I don't think that's right. My understanding is that if |s| = |s'|
(notation from my mail, the variables in the code are reassigned several
times, which is a bit confusing), then we ncessarily have |t| != |t'|,
and we must choose candidate to get the smaller one.
Regards,
/Niels
--
Niels Möller. PGP key CB4962D070D77D7FCB8BA36271D8F1FF368C6677.
Internet email is subject to wholesale government surveillance.
More information about the gmp-bugs
mailing list