https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117805
--- Comment #18 from kargls at comcast dot net ---
On 11/29/24 11:19, anlauf at gcc dot gnu.org wrote:
>> The '-' is an unary minus operator. In 'cmplx(-1.)', it operates
>> on only the real part. In '- cmplx(1.)', it operates on both
>> parts. I don't see anything anti-linear here.
> OK, then try:
>
> print *, cmplx (-1. * (-1.)), cmplx (-1.) * cmplx (-1.)
>
> which gives:
>
> (1.00000000,0.00000000) (1.00000000,-0.00000000)
>
> This is why I said "slightly anti-linear".
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)