Support underscores for mpz/mpq assignments from strings

Hans Åberg haberg-1 at telia.com
Thu Jun 10 19:11:11 UTC 2021


> On 10 Jun 2021, at 19:58, Marc Glisse <marc.glisse at inria.fr> wrote:
> 
> On Thu, 10 Jun 2021, Sergey B Kirpichev wrote:
> 
>> a common feature of modern languages is using underscores as visual
>> separators for digit grouping purposes in integral, floating-point and
>> complex number literals, see:
>> https://www.python.org/dev/peps/pep-0515/
>> 
>> Some projects add workarounds for the gmp to allow this syntax, e.g.:
>> https://github.com/ocaml/Zarith/pull/75
>> 
>> I think, the gmp can accept this syntax.  Tentative patch attached.
> 
> There is nothing special about the underscore, English uses ',', French uses '.', some use a space, C++ seems to go for "'", etc.
> 
> C locales have thousands_sep (and grouping), similar to decimal_point, although I don't think we support it, and it only seems allowed before the decimal point, strangely enough.
> 
> If we add support for separators, we need to do it in a way that allows the user the specify the separator, either through the locale or through an argument.
> 
> I don't know if mpz_inp_str is the right function to introduce this, I would expect to see it in gmp_*scanf first, but others would know better.

The current international standard is to use as decimal separator either a period '.'or a comma ',', and as number separator spaces ' '.
https://en.wikipedia.org/wiki/Decimal_separator#Current_standards

However, in a computer context, for writing code, for example the list [1,2,3,4] then becomes the same as [1.2, 3.4], which is not likely what was intended. Therefore I think the support of such formats should be put into special libraries.




More information about the gmp-discuss mailing list