Torbjörn Granlund tg at gmplib.org
Wed Aug 28 09:39:12 UTC 2019

Marco Bodrato <bodrato at mail.dm.unipi.it> writes:

  Maybe tail-call?

  When up[0] == 0 but U is not zero and we can not return the
  result... That's an unlikely case, but it means that one of the
  operands gets much smaller than the other. Maybe a special strategy
  can be used in this case? Maybe a division, maybe a 2-adic division,
  or maybe simply a loop that knows that U will be smaller until also V
  will be one (some) limb shorter...

  ...and finally tail-call to the smaller fixed-size asm function?

I think this is a good proposal.

It is not certain that u-v with its new low-order limb zero is smaller
than v.  But it it is not, we can go to the next smaller algorithm
directly, I assume.

Here is what I have now.  Feel free to improve it!

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gcd-mpn.c
Type: application/octet-stream
Size: 4272 bytes
Desc: not available
URL: <https://gmplib.org/list-archives/gmp-devel/attachments/20190828/d8d796f5/attachment.obj>
-------------- next part --------------

Please encrypt, key id 0xC8601622

More information about the gmp-devel mailing list