The program below appears to expose two bugs in the AMD Fortran compiler, one in treating ES42.33E4 as if it were ES42.33 for double precision huge, the other in printing Inf instead of a finite value for quadruple precision huge.
program hugetest
use ieee_arithmetic
implicit none
integer,parameter:: dp = selected_real_kind(15), qp = selected_real_kind(33)
character(*),parameter:: fmt = '(1X,A,SP,ES42.33E4,A)'
print *,'IEEE OK for kinds dp,qp?', &
ieee_support_datatype(1._dp),ieee_support_datatype(1._qp)
print fmt,'huge(1.0_dp) = "',huge(1.0_dp),'"'
print fmt,'huge(1.0_qp) = "',huge(1.0_qp),'"'
end program hugetest
With AMD flang the output is
IEEE OK for kinds dp,qp? T T
huge(1.0_dp) = " +1.797693134862315708145274237317044+308"
huge(1.0_qp) = " +Inf"
but with both gfortran and ifort the output, which I believe to be correct, is
IEEE OK for kinds dp,qp? T T
huge(1.0_dp) = "+1.797693134862315708145274237317044E+0308"
huge(1.0_qp) = "+1.189731495357231765085759326628007E+4932"