inf class (was: gmpy floating point exception)

Martin Manns mmanns at
Thu Mar 29 17:11:47 CEST 2007

On Thu, 29 Mar 2007 00:57:03 -0700
aleax at (Alex Martelli) wrote:

> Martin Manns <mmanns at> 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 > 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.


More information about the Python-list mailing list