Suggested mpn/generic/gcd.c patch
nisse at lysator.liu.se
Mon Sep 9 20:07:26 UTC 2019
tg at gmplib.org (Torbjörn Granlund) writes:
> This patch gets rid of the gcd_1 call and instead handles everything
> with gcd_11 and gcd_22. It also lifts the operands into registers.
> Niels, do you agree with this? Marco?
Looks right to me.
> We discussed a gcd_21 in the past, and here again is a utility for it.
> It is behind an UNLIKELY just as it is unlikely within gcd_22, so not
> super important.
Not that important. If we implement it, the typical case (when it's
used at all), will have it run for only one or two iterations before
If we add any more functions, I think it's better to do variants of
gcd_11 and gcd_22 that allow one argument even.
> Perhaps gcd_21 is more common as operands directly from user code.
If we get u and v of different size from the user, we do an initial
reduction. So I don't think it will end up here.
> --- 218,261 ----
> ASSERT(up[n-1] | vp[n-1]);
> ! /* Due to the calling convention for mpn_gcd, at most one can be even. */
This is the statement not quite agreeing with the docs, as discussed a
Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677.
Internet email is subject to wholesale government surveillance.
More information about the gmp-devel