```
Thanks Harald,

The rounding was one of my own questions. Up, down or nearest?  Depending
on rounding mode. I will read the standard more on this.

Regarding kind=10 or kind=16. I will look further, I have defined in place
so I was thinking an error message if not supported. I will look at the
example you mentioned. The target settings is what I need. I also want to
work up a few more test cases.

Jerry
----
```


On Tue, May 12, 2026, 12:14 PM Harald Anlauf <[email protected]> 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.
>
>

Reply via email to