Re: [PATCH, fortran] PR93727 Implement new EX format specifier

Harald Anlauf <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
On 5/21/26 21:18, Jerry D wrote:
> On 5/12/26 12:14 PM, Harald Anlauf wrote:
>> Hi Jerry,
>>
>> Am 11.05.26 um 8:24 PM schrieb Jerry D:
>>> Hi all,
>>>
>>> This took me a lot longer than I wanted, but finally got it done.
>>>
>>> See the attached patch. Since my last submittal here I started over 
>>> on using the example demo Harald gave in Comment 18 of the PR using 
>>> available higher level C functions, fabs, signbit, scalbn, isnan 
>>> frexp, etc to extract the needed components. Then, using the %H 
>>> specifier to build the hexadecimal float string in 
>>> get_float_hex_string(). I added checks for zero, inf, nan, and the sign.
>>>
>>> Once I had this working for kind=8, I repeated the pattern for 
>>> kind=8, 10, and 16. I used defines around the kind=10 and 16 to avoid 
>>> where not supported.
>>>
>>> I also created defines for the C functions needed following the 
>>> examples later in the file. I dont have some of those platforms 
>>> readily available here so a web searched for those various function, 
>>> ie not tested yet. I will call it an EWAG. Engineering Wild 
>>> Assumption and Guess.
>>>
>>> I apologize for the whitespace cleanups. I had them in my worktree 
>>> from earlier attempts.
>>>
>>> I updated the two test cases added. I probably need to specify 
>>> targets on those. We can add additional testcases as deemed appropriate.
>>>
>>> Regression tested here on X86_64. Testing by others encouraged.
>>>
>>> OK for mainline. I do not plan any backport and less others think its 
>>> worth it.
>>
>> this is already in a quite good shape.  However, I have two
>> preliminary comments:
>>
>> - rounding is not yet correct.  Example:
>>
>>    real(4) :: r4
>>    r4 = 128.
>>    write(*,"(*(4x,EX0.2))") r4, abs (nearest(r4,-1.0))
>>
>> prints
>>
>>      0X8.00P+4    0XF.FFP+3
>>
>> but should print
>>
>>      0X8.00P+4    0X8.00P+4
>>
>> - real(10) and real(16) are not available everywhere.
>>    Please have a look at gfortran.dg/ieee/ieee_11.F90
>>    for one way to solve this.
>>
>> Best,
>> Harald
>>
>>> Best regards,
>>>
>>> Jerry
>>>
>>> PS I will be on travel the next 7 day however I can monitor email.
>>
> 
> I will add the checks for real(10) and real(16) to the test case.
> 
> I would like to commit this now and handle the rounding in a new PR or 
> leave this one open and identify this as patch 1 of 2.
> 
> Is this OK?

OK, then make it so.

Please adjust the commit message to indicate that this is a partial
EX implementation lacking proper rounding.

Since reading the hex format is still missing, wouldn't it be
best to stick to the existing PR?  Otherwise a new PR could
lose information that is in the old one.

Thanks for being so patient.

Harald

> Jerry
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.