In article <[EMAIL PROTECTED]>,
bukzor  <[EMAIL PROTECTED]> wrote:
>On Jan 4, 2:15 pm, Steven D'Aprano <[EMAIL PROTECTED]
>cybersource.com.au> wrote:
>> On Fri, 04 Jan 2008 09:29:50 -0800, bukzor wrote:
>> > Why cant you implement < for complex numbers? Maybe I'm being naive, but
>> > isn't this the normal definition?
>> >     a + bi < c + di iff sqrt(a**2 + b**2) < sqrt(c**2, d**2)
>>
>> No, it is not. Ordered comparisons are not defined for complex numbers.

Mathematically speaking, it depends what you require from ordering.
Mostly (and what we need for fast lookup) we want transitivity:
A>=B & B>=C => A>=C

Requiring transitivity you are right with your concern
about the OP's version of <. Although in mathematics you can
define things as you like, a non-transitive < is frowned upon.

>> Which is bigger, 4+2j or 2+4j?

We can make a useful ordering by defining
A<=B :  if RE(A) /= RE(B) then RE(A) <= RE(B)
     else   IM(A) <= IM(B)

So for the OP's example: 4+2i is bigger.

This is sufficient to put a bunch of complex numbers in an
array, sort the array, and have a lookup using binary search.
(Or a heap: a heap is better for frequent additions and deletions.)

>>
>> > How do you implement a set without sorting?
>>
>> With a hash table.
>>
>> Or if you are willing to limit yourself to sets of small integers, you
>> can implement it using bit flipping. E.g. 5 is an element of the set if
>> bit 5 is on.

Or if you can live with O(n) implementations are trivial.

>>
>> > Are you expecting better than O(log n)?
>>
>> Sure.

The same applies to sets of complex numbers the C++ way with the
above definition of for < for complex  numbers.

>>
>> --
>> Steven
>
>Good Answers!


--
-- 
Albert van der Horst, UTRECHT,THE NETHERLANDS
Economic growth -- like all pyramid schemes -- ultimately falters.
[EMAIL PROTECTED]&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to