``` 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. > >
