Gareth McCaughan email@example.com wrote:
... The question is whether it makes sense to define complex(a,b) = a+ib for all a,b or whether the two-argument form is always in practice going to be used with real numbers. If it is, which seems pretty plausible to me, then changing complex() to complain when passed two complex numbers would (1) notify users sooner when they have errors in their programs, (2) simplify the code, and (3) avoid the arguably broken behaviour Tim was remarking on, where complex(-0.0).real is +0 instead of -0.
 For the avoidance of ambiguity: "real" is not synonymous with "double-precision floating-point".
Precisely. On this matter, does anyone know of an application where making that change would harm anything? I cannot think of a circumstance under which the current behaviour adds any useful function over the one that raises an exception if there are two arguments and either is complex.
Yes, of course, SOME people will find it cool to write complex(a,b) when they really mean a+1j*b, but ....
Regards, Nick Maclaren, University of Cambridge Computing Service, New Museums Site, Pembroke Street, Cambridge CB2 3QH, England. Email: firstname.lastname@example.org Tel.: +44 1223 334761 Fax: +44 1223 334679