"The set of mpq functions is quite small." Is this by design?
Richard Damon
Richard at Damon-Family.org
Sat Aug 11 13:29:11 UTC 2018
On 8/11/18 7:50 AM, Torbjörn Granlund wrote:
> Anders Andersson <pipatron at gmail.com> writes:
>
> Hi! I tend to use the rational functions in GMP a lot, and quoting
> from the documentation: The set of mpq functions is quite small.
>
> I was wondering if this is by design or if the developers would
> welcome an extension of the API to cover some more common cases that
> I've found while using it?
>
> Use cases which suggest some shortcoming of GMP are interesting!
>
> I'm mostly missing arithmetic with native integers (think mpq_mul_ui)
> and raw I/O functions. These are all trivial to implement but having
> them in the API could perhaps enable some optimizations when it is
> known that one operand is always small.
>
> "Raw" I/O function would need to define a file format. I consider the
> file format of the current mpz_*_raw function to be poor, so before even
> considering raw I/O extension of mpq or mpf, a better file format should
> be considered.
>
> In the meantime, using mpz_*_raw in the numerator and denominator
> separetely might be what you want to do. Or else mpz_export/import
> followed by some system I/O operation.
>
> Perhaps mpq_mul_ui would make sense. It would require a gcd of the ui
> argument with the denominator.
>
Would a mpq_mul_ui function really be that much more efficient than
converting the ui number to a rational (with unity denominator). I would
expect that most of the savings you might be able to get would be
handled better in the mpq library with special casing for unity
denominators (which is likely a not that uncommon case that might be
worth handling).
--
Richard Damon
More information about the gmp-discuss
mailing list