Division using GMP's low-level API

Torbjörn Granlund tg at gmplib.org
Sun Aug 28 10:46:32 CEST 2022

Bernhard Lindner <private at bernhard-lindner.de> writes:

  So there is an obsolete function (mpn_divrem), a function that takes
  small (<= 64bit) divisors only (mpn_divrem_1), one that has undefined
  behavior with remainders (mpn_divexact_1) and one that takes large (>=
  129bit) divisors only (mpn_tdiv_qr).

Where did you get ">= 129 bit" from?  There is no such limitation for

  I tried mpn_tdiv_qr() (without limb overlaps) since I thought I'm
  misunderstanding the documentation and because it replaces the obsolete
  function. But it actually crashes when the most significant limb is

Yes, as documented it must be non-zero.

  Did I miss something? How can I divide two random uint192 non-zero
  numbers using mpn_?

Use mpn_tdiv_qr, but pass a size which make the most significant limb !=

Please encrypt, key id 0xC8601622

More information about the gmp-discuss mailing list