From: juergen.katins@... (Juergen Katins) Date: 2002-02-25T17:23:41+09:00 Subject: inconsistence in class complex While translating the book "Programming Ruby" by Dave Thomas and Andrew Hunt into german language (see http://home.vr-web.de/juergen.katins/ruby/) I stumbled arcoss an irritating inconsistence in the standard library. In the class complex there is a comparision operator <=>. <=> ref <=> other -> -1, 0, +1 Returns ref.abs <=> other.abs. In mathematical meanings this makes no sense! You can not compare complex numbers! This is due to the following reason: Normally you would expect a comparision to be compatible with addition. You expect: If a > b then a+c > b+c. This rule can not be accomplished with this compare method. Example: (0 + 2i) > (1 + 0i) is true, but (0 + 2i)+(2 + 0i) > (1 + 0i)+(2 + 0i) is false! This wrongly comparision method leeds to the need of an additional equation operator ==, also something you would not expect. If you see a=b you would expect the two numbers to be the same, not to have the same length. Following the principle of least surprise I would strongly recommend for the next version of ruby to discard the complex operators <=> and ==, leaving only the operator = which should work as you would expect. PS: Do not try to invent a comparision which is compatible with addition. This is possible but then the comparision will not be compatible with multiplication. Regards J�rgen Katins