Chris Fonnesbeck wrote: > I have been developing a python module for Markov chain Monte Carlo > estimation, in which I frequently compare variable values with a very > large number, that I arbitrarily define as: > > inf = 1e10000
Don't forget that you can write your own Infinity. (Warning: Buggy code, especially for unsigned Infinity) class Infinity(object): def __init__(self, sign=1): self._sign = cmp(sign, 0) def __repr__(self): return "Infinity(%d)" % self._sign def __str__(self): if self._sign == 0: return "UInf" elif self._sign < 0: return "-Inf" else: return "+Inf" def __eq__(self, other): return isinstance(other, Infinity) and self._sign == other._sign def __ne__(self, other): return not (self == other) def __le__(self, other): if self._sign == 0: raise ValueError("Unsigned Infinity is incomparable") elif self._sign < 0: return True else: return False def __ge__(self, other): if self._sign == 0: raise ValueError("Unsigned Infinity is incomparable") elif self._sign < 0: return False else: return True def __lt__(self, other): return not (self >= other) def __gt__(self, other): return not (self <= other) def __add__(self, other): if isinstance(other, Infinity): if self._sign == other._sign: return self else: raise ValueError("%s + %s is undefined" % (self, other)) else: return self __radd__ = __add__ def __neg__(self): return Infinity(-self._sign) def __sub__(self, other): return self + (-other) def __rsub__(self, other): return -self def __mul__(self, other): return Infinity(self._sign * other) __rmul__ = __mul__ def __div__(self, other): if instance(other, Infinity): raise ValueError("Inf/Inf is undefined") else: return Infinity(self._sign * other) __truediv__ = __div__ __floordiv__ = __div__ def __rtruediv__(self, other): return 0 __rdiv__ = __rtruediv__ def __rfloordiv__(self, other): if self._sign * cmp(other, 0) < 0: return -1 else: return 0 POSITIVE_INFINITY = Infinity(1) NEGATIVE_INFINITY = Infinity(-1) UNSIGNED_INFINITY = Infinity(0) -- http://mail.python.org/mailman/listinfo/python-list