speed of mpq_cmp vs mpq_sub

Marc Glisse marc.glisse at inria.fr
Sun May 22 18:01:45 UTC 2016

On Sun, 22 May 2016, Torbjörn Granlund wrote:

> Marc Glisse <marc.glisse at inria.fr> writes:
>  Yes, the exact constant doesn't change much. Essentially, mpq_sub is
>  done in linear time: gcd can be computed with just a few subtractions,
>  divexact can be done in constant time since the output has constant
>  size, and all we have left are some linear-time mul_1 and sub. And cmp
>  takes whatever time mul takes. I just hope this case is rare enough.
> Yep, the gcd call becomes very fast, I just noticed that.
> I suppose we could do something fancy in cmp with stripping high parts
> of the numerators and denominators when they match (highpart(num1) =
> highpart(num2), and highpart(den1) = highpart(den2)) before we
> cross-multiply.

Note that after the multiplications by 3 and 5 (or 101 and 103), the 
highparts are different. Or even simpler if den2 = 2 * den1. So this would 
only apply in a few cases.

Marc Glisse

More information about the gmp-discuss mailing list