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