inf class (was: gmpy floating point exception)
Martin Manns
mmanns at gmx.de
Thu Mar 29 17:11:47 CEST 2007
On Thu, 29 Mar 2007 00:57:03 -0700
aleax at mac.com (Alex Martelli) wrote:
> Martin Manns <mmanns at gmx.net> 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
More information about the Python-list
mailing list