mpn_add or mpn_add_n+MPN_COPY+MPN_INCR_U ?

Torbjörn Granlund tg at
Sun Jun 15 12:47:01 UTC 2014

nisse at (Niels Möller) writes:

  Looks like mpn_add_n is an inline function defined in terms of
  __GMP_AORS, which does carry propagation differently. With an inline
  mpn_add, there's no good reason for it to have more overhead than
  mpn_add_N + MPN_COPY + mpn_incr_u.
A critical typo there, you surely mean "Looks like mpn_add is an inline

  > I'm tempted to substitute some mpn_add_1 in the code with COPY+INCR, or to
  > write a new macro NOCARRY_MPN_ADD...
  To me, the right way seems to be to improve the existing macrology used
  by mpn_add. 
I am sure these old things can be improved.

One reason for how the current mpn_add is implemented is that it is done
gmp.h and not gmp-impl.h.  We thereby don't have access to the MPN_COPY*

Perhaps we could supply different mpn_add/mpn_sub in gmp-impl.h, but
then again we should perhaps not use these internally, since they might
hide optimisation opportuneties.

Please encrypt, key id 0xC8601622

More information about the gmp-devel mailing list