[Angus Rodgers] > I'm a little confused by: (i) the definition of the modulus and > floor division functions for complex arguments;
Perhaps you're confused by the current definitions simply because they don't make good sense. > (ii) the fact that these functions for complex arguments are > now "deprecated"; And they're deprecated /because/ they never made good sense. > and (iii) the fact that the math.floor() function is not defined > at all for a complex argument. The math module consists mostly of Python wrappers around the C functions defined by the C standard in C's math.h. C doesn't define floor() for complex numbers, so neither does Python's math.floor(). > If I were thinking about this from scratch (in the context of > mathematics, rather than any particular programming language), > I /think/ I would be naturally inclined to define: > > floor(x + yj) = floor(x) + floor(y)j for all real x, y > > z % w = z - floor(z / w) * w for all complex z, w (!= 0) > > These seem like they would be mathematically useful definitions > (e.g. in algebraic number theory, where one has to find the > "nearest" Gaussian integer multiple of one Gaussian integer to > another - I forget the details, but it has something to do with > norms and Euclidean domains), and I don't understand why Python > doesn't do it this way, rather than first defining it a different > way (whose mathematical usefulness is not immediately apparent > to me) and then "deprecating" the whole thing! It seems like > a wasted opportunity - but am I missing something? My guess: that in the absence of a /compelling/ reason to add something, it's best to leave it out. That you vaguely believe there might be "a reason" for defining complex floor in a particular more-or-less arbitrary way, but "forget the details" as to why /maybe/ that /might/ be useful ... well, that's not exactly compelling ;-) > Has there been heated debate about this (e.g. in the context > of Python 3, where the change to the division operator has > apparently already provoked heated debate)? Few people care about complex numbers in Python, and so no, there was no heated debate about this. > Also, by the way, is there some obvious reason for Python's use > of the notation x + yj, rather than the more standard (except > perhaps among electrical engineers) x + yi? When complex numbers were first added to Python, there /was/ heated debate about how to spell complex literals. Guido got weary of the debate, but didn't see a compelling reason to prefer "i" or "j", so left it to a vote on comp.lang.python. "j" got more votes. See? There's nothing "complex" about any of this after all ;-) _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor