On Thu, 29 Mar 2007 00:57:03 -0700
[EMAIL PROTECTED] (Alex Martelli) wrote:

> Martin Manns <[EMAIL PROTECTED]> wrote:
> > 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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to