On Thu, 29 Mar 2007 00:57:03 -0700

al***@mac.com (Alex Martelli) wrote:

Martin Manns <mm****@gmx.netwrote:
2) Is there any inf type around with

a + inf == inf

inf a (as long as a != inf)

etc.

that works with any other type?

You mean something like:

class inf(object):

def __radd__(self, other): return self

def __gt__(self, other): return self is not other

# etc

inf = inf()

Actually, I meant something a bit more sophisticated:

a=inf()

b=inf()

c=-inf()

d=1e99999

e=numpy.float64(1e99999)

f=gmpy.mpq(1,2)

a b OverflowError (AmbiguousValueError?)

a == b OverflowError (AmbiguousValueError?)

a + b inf (New inf instance)

a + c OverflowError (AmbiguousValueError?)

a + d a

max(a,b) inf (New inf instance)

max(a,c) a

max(a,d) a

max(a,b) == a OverflowError (AmbiguousValueError?)

max(a,b) == b OverflowError (AmbiguousValueError?)

max(a,b) a OverflowError (AmbiguousValueError?)

max(a,b) >= a True (if somehow possible)

max(a,b) < a False (if somehow possible)

a is b False

a c True

a == -a False

a == -c OverflowError (AmbiguousValueError?)

a d True

a e True

c f False

The idea is a class that permits non-ambiguous comparisons but throws

exceptions if ambiguous comparisons are made. Since I think that

setting up such a class involves quite some effort (especially

considering things such as a + a) I just wanted to know if something

similar is already around. I am aware of the PEP 326 but I feel that it

does not really address the problem.

Martin