Decimal string to floating point conversion with correct half-to-even rounding
9il
ilyayaroshenko at gmail.com
Sun Jul 5 07:24:02 UTC 2020
On Sunday, 5 July 2020 at 06:23:35 UTC, Walter Bright wrote:
> On 7/4/2020 8:09 PM, 9il wrote:
>> On Saturday, 4 July 2020 at 20:35:48 UTC, Walter Bright wrote:
>>> On 6/21/2020 8:24 AM, 9il wrote:
>>>> So excited to finally announce we can correctly parse
>>>> floating-point numbers according to IEEE round half-to-even
>>>> (bankers) rule like in C/C++, Rust, and others.
>>>
>>> Great work! Would you like to add it to dmd?
>>
>> Thank you! Yes.
>>
>> It would be very much appreciated to preserve the `mir.`
>> namespace for the `parse` module, the required `bignum`
>> package*. Also, whenever the code will be located I would like
>> to have control over it. Will you agree?
>>
>> * - `mir.bignum` is 6K LOC and it is expected to grow up to
>> 20K LOC if finished. The package includes abstract views for
>> big integers, decimal, and binary FP numbers; stack-allocated
>> big integers; midsize unsigned integers; software FP numbers
>> with extended precision.
>>
>
> Does the float parsing code require bignum?
Yes. The decimal float parsing requires big integer arithmetic
and software floating-point multiplication with extended
precision (128-bit mantissa).
> I'm also not sure I know what you mean by control.
> Contributions to dmd would need to be Boost Licensed, which
> means anyone can do what they like with them.
The code is already Boost licensed.
We need not only literals parsing but also library text parsing.
So the code should be available for users and for the compiler. I
see two possible solutions that look good to me.
The first one is to add mir-algorithm package or its part as an
external dependency for DMD. It is preferable and either way. If
you will accept the PR, I will do it.
The second solution is to move `mir.bignum` and `mir.parse` to
DRuntime/Phobos. In this case, I would like to preserve the
`mir.` namespace and the same authority and veto right for this
part of the codebase as I have at Mir Org.
I mean the following. Your voice has a veto right for DMD and
Dlang evaluation. Andrei has a veto right for Phobos. Atila seems
to have almost the same veto right as Andrei and you and blocks
required Dlang features for Mir [1, 2]. Furthermore, if you and
Andrei really want to add or change something you will force it
to happen. I want the same veto right for evaluation of the Mir
parts in case you think they should be moved to DRuntime/Phobos.
Also, the code under `mir.` namespace should be less constrained
then `core`/`std` code in terms of API changes.
[1] https://github.com/dlang/dmd/pull/9778
[2]
https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1023.md
More information about the Digitalmars-d-announce
mailing list