# How to represent the infinite ?

Christophe Delord christophe.delord at free.fr
Thu Jun 20 19:21:46 CEST 2002

```On Thu, 20 Jun 2002 17:02:33 +0200
"erreur" <dev at newdeal.ch> wrote:

You can try to redefine __cmp__ to handle all the cases.

For example :

Inf(+1) is +oo
Inf(-1) is -oo

class Inf:
def __init__(self, sign=+1):
self.sign = sign
def __str__(self):
return self.sign<0 and "-Inf" or "+Inf"
def __cmp__(self, other):
if isinstance(other, Inf):
return cmp(self.sign, other.sign)
else:
return self.sign
def __pos__(self): return Inf(self.sign)
def __neg__(self): return Inf(-self.sign)

inf = Inf()
for t in ( \
"+inf", "-inf",
"10<-inf", "10>-inf", "10<+inf", "10>+inf",
"-inf<10", "-inf>10", "+inf<10", "+inf>10",
"-inf<-inf", "-inf==-inf", "-inf<+inf", "-inf==+inf",
"-inf>=-inf", "-inf>=+inf"):
print t, "=", eval(t)

This gives:

+inf = +Inf
-inf = -Inf
10<-inf = False
10>-inf = True
10<+inf = True
10>+inf = False
-inf<10 = True
-inf>10 = False
+inf<10 = False
+inf>10 = True
-inf<-inf = False
-inf==-inf = True
-inf<+inf = True
-inf==+inf = False
-inf>=-inf = True
-inf>=+inf = False

You may also redefine __add__, __mul__, ...

Best regards,
Christophe.

> Will somebody have an idea, to represent the infinite one?
>
> I have variables to initialize with is +inf (or - inf).  To be sure that
> later, all will be smaller (or larger) than my variables.
> I tried to redefine the operators on an object.  It goes for Inf>10 but I do
> not arrive for 10>Inf (because that takes > of Int).
>
> --------------------
>
> def __gt__(self, val):
>
>     return 1
>
> --------------------
>
>
> Not need to say to me that I can use 99999999999999 or -99999999999999 or I
> do not know what.
> Nor from a MAX_INT of the machine... bus Python can go higher.
>
> Thank you for you answers (thank you to also answer by email if possible,
> because I will not have any more access to the news this weekend).
>
> PS: Sorry for my English....
>
>

--

(o_   Christophe Delord                   _o)
//\   http://christophe.delord.free.fr/   /\\
V_/_  mailto:christophe.delord at free.fr   _\_V

```