https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107294

bartoldeman at users dot sourceforge.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #4 from bartoldeman at users dot sourceforge.net ---
Thanks for the explanation, finding an example with NaNs you get
0.0 * (NaN + 0.0i) = NaN + 0.0i
for C with annex G.5.1
but
NaN + NaN i
for Fortran, unless you specify -fno-signed-zeros.

program main
  use, intrinsic :: ieee_arithmetic, only: IEEE_Value, IEEE_QUIET_NAN
  use, intrinsic :: iso_fortran_env, only: real32

  real(real32) :: a, nan
  complex(real32) :: cnan

  nan = IEEE_VALUE(nan, IEEE_QUIET_NAN)
  cnan = cmplx(nan, 0.0)
  zero = 0.0
  print *, zero, cnan, zero * cnan
end

illustrates this
   0.00000000     (             NaN,  0.00000000    ) (             NaN,       
     NaN)
vs
   0.00000000     (             NaN,  0.00000000    ) (             NaN, 
0.00000000    )

Reply via email to