mini-gmp and mpq

Marco Bodrato bodrato at
Mon Apr 30 08:06:56 UTC 2018


Il Lun, 30 Aprile 2018 4:10 am, Bradley Lucier ha scritto:
>> On Apr 29, 2018, at 9:02 PM, Marco Bodrato <bodrato at>
>>> Il Dom, 29 Aprile 2018 8:24 pm, Bradley Lucier ha scritto:

> Looks good.  The important case is when a=b, but I just realized that the
> test can be refined to when the denominator of a is the denominator of b.

Interesting observation. But, do you think it's worth replacing
  if (a != b)
  if (mpz_cmp (mpq_denref (a), mpq_denref (b)))

Maybe something similar for the full library?

>>> mpq_canonicalize (mpq_t r)

>> This function is not static, as you can see.

> True.  I never found a need to call a canonicalize function for rationals.

Our test suite uses it for e.g.

static void
_mpq_set_zz (mpq_t q, mpz_t n, mpz_t d)
  mpq_set_num (q, n);
  mpq_set_den (q, d);
  mpq_canonicalize (q);

> The code is fine, it is clear.

...but why it correctly works in the reuse case: mpq_div(r,a,r) or even
mpq_div(r,r,r), is not completely obvious. We should at least add a check
for that in the test-suite...



More information about the gmp-devel mailing list