Error Messages/43025

Warning message

You cannot compare two complex numbers using the inequality operators <, >, <= or >=.

Cause

Unlike real numbers, there is no consistent ordering on complex numbers. Any attempt to impose even a partial ordering results in contradictions.

To demonstrate, suppose you adopt a system where 0 < 1j. This would violate a standard axiom that says if a > 0 and b > c then a*b > a*c. Test it by plugging in a = 1j, b = 1j and c = 0, and you've just proved that -1 > 0, a contradiction.

If you attempt to use the ordering operators in Analytica with two non-equal complex numbers, and if you have the Show Result Warnings preference turned on, the warning shown here results. If you ignore the warning, the result is NaN.

The = and <> operators can be applied to complex numbers.

Remedy

First, you should think about why are you comparing the order of different complex numbers? Is there a logical flaw in your thinking? This warning may have just detected a conceptual error, in which case you should refine your conceptual approach to whatever you are doing.

Here are a couple ways to impose a total ordering, where instead of x <= y you could do these:

• Abs(x) <= Abs(y)
• RealPart(x) < RealPart(y) or RealPart(x) = RealPart(y) and ImPart(x) < ImPart(y)
• RealPart(x) < RealPart(y)

Keep in mind that all of these are susceptible to contradictions. The Sort, SortIndex and Rank functions use the second method show here to determine the sort order.