Greetings, Since there is some discussion around comparing using#< let me try to explain the context of my thinking. I am approaching this as a programmer and a user of mathematics, not as a mathematician. I prefer the Principle of Least Surprise. I prefer simple, easy to explain rules and simple implementations. I expect the following expressions all to answer true. 1/2 = 0.5. 1 = 1 asComplex. 1 = (1 + 0i). "same as the previous line" 0 < 1. 0 < 1 asComplex. Every number is-equivalent-to a complex number because 1 = (1 + 0i). [In the Scheme language every number _is_ a complex number, BTW]. So to me, saying that 0 and (1 asComplex) are not comparable is saying that 0 and 1 are also not comparable, because I consider them numerically the same as (0+0i) and (1+0i). My observation is that I don't want to lose properties. If A and B are numbers, I want them to be comparable on the real number line -- no matter how many other dimensions I add. If B is to the right on the real number line from A, then I expect (A < B) to answer true. I expect this to be true NO MATTER HOW MANY DIMENSIONS I ADD. To put this in context, say that I have an object which is a "basket of measurements" at a place and time (say position, density, temperature, pressure). Now if I add a new dimension, say electrical conductivity, I do not expect temperature comparisons to stop working. I can still compare temperatures between objects which lack the conductivity slot/measurement and those which have them. OK. Now to the extension. I suspect this is the root of the (potential) controversy. I chose to say that if the real/x component of a 2d number is equal, then one number may be considered less than another if the imaginary/y value is less. This means that (0+0i) < (0+1i) holds. These are the properties (and test cases) I care about. Currently, the definition for Complex>>< is just this (see below). This implies that (3+0i) < (3+1i) holds, even though the x/real components are equal. I think that this is OK. What do you think? Are there simpler, least surprising definitions for Complex>>< ? What useful properties/invariants/tests would you add? [As unit tests] Thanks for your thoughtful input. -KenD --------------------------------Complex < other "self < other if other's real-part is to the right or the real-parts are equal and the oher's imaginary part is larger" | otherCpx | otherCpx := other asComplex. ^self real < otherCpx real or: [self real = otherCpx real and: [self imag < otherCpx imag]] ---------------------------------