mpn_gcd documentation [Was: Replacing gcd_1 with gcd_11]

Marco Bodrato bodrato at
Sun Aug 18 10:53:33 UTC 2019


Il Dom, 18 Agosto 2019 9:44 am, Niels Möller ha scritto:
> Do we have all needed gcd_11 so we can switch to using it, without
> performance regressions?

I glanced at mpn/generic/gcd.c

The initial comment says:
/* mpn/gcd.c: mpn_gcd for gcd of two odd integers.

A comment inside slightly relaxes the conditions with:
  /* Due to the calling convention for mpn_gcd, at most one can be
     even. */

...but I can not find any documented restriction (odd/even) in the manual.

Function: mp_size_t mpn_gcd (mp_limb_t *rp, mp_limb_t *xp, mp_size_t xn,
mp_limb_t *yp, mp_size_t yn)

    Set {rp, retval} to the greatest common divisor of {xp, xn} and {yp,
yn}. The result can be up to yn limbs, the return value is the actual
number produced. Both source operands are destroyed.

    It is required that xn >= yn > 0, and the most significant limb of
{yp, yn} must be non-zero. No overlap is permitted between {xp, xn}
and {yp, yn}.

I think we should also update the manual to correctly describe the
supported calling convention.



More information about the gmp-devel mailing list