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

--- Comment #19 from anlauf at gcc dot gnu.org ---
(In reply to kargls from comment #18)
> I have no idea what you're trying to demonstrate.
> By F2023, 16.9.53 if x is real in cmplx(x), then
> y is set to 0.  In addition, actual arguments are
> evaluated on entry into a function.
> 
> cmplx(-1.*(-1.)) -16.9.53-> (1., 0.)
> 
> cmplx (-1.)*cmplx (-1.) -16.9.53-> (-1., 0) * (-1., 0)
> 
> ((-1)*(-1)-(0)*(0), (-1)*(0)+(0)*(-1)) = (1-0, -0-0) = (1, -0)
> 
> 
> With z complex, in general z*z /= x**2 + y**2.  Perhaps, you meant
> to write
> 
>     print *, cmplx (-1. * (-1.)), cmplx (-1.) * conjg(cmplx (-1.))
> 
>               (1.00000000,0.00000000)             (1.00000000,0.00000000)

No.

comjg() is anti-linear, it has to be.

Fortran's cmplx is not exactly linear in the cases I discussed.
It should be linear to be consistent with complex analysis.
This is why I say the Fortran rules are broken.

Reply via email to