# Infinite integer in Python

## Infinite integer in Python

You are right that an integer infinity is possible, and that none has been added to the Python standard. This is probably because `math.inf`

supplants it in almost all cases (as Martijn stated in his comment).

In the meantime, I added an implementation of extended integers on PyPI:

```
In [0]: from numbers import Integral, Real
In [0]: from extended_int import int_inf, ExtendedIntegral, Infinite
In [0]: i = int_inf
In [4]: float(i)
Out[4]: inf
In [5]: print(i)
inf
In [6]: i ** i
Out[6]: inf
In [7]: i
Out[7]: inf
In [9]: isinstance(i, Real)
Out[9]: True
In [10]: isinstance(i, Integral)
Out[10]: False
In [11]: isinstance(i, Infinite)
Out[11]: True
In [12]: isinstance(i, ExtendedIntegral)
Out[12]: True
In [13]: isinstance(2, ExtendedIntegral)
Out[13]: True
In [14]: isinstance(2, Infinite)
Out[14]: False
```

Taken from here: https://www.gnu.org/software/libc/manual/html_node/Infinity-and-NaN.html

IEEE 754 floating point numbers can represent positive or negative infinity, and NaN (not a number)

That is, the representation of `float`

and `Decimal`

can store these special values. However, there is nothing within the basic type `int`

that can store the same. As you exceed the limit of 2^32 in an unsigned 32-bit int, you simply roll over to 0 again.

If you want, you could create a class containing an integer which could feature the possibility of infinite values.

#### Infinite integer in Python

For python 2.

It is sometimes the case that you need a very large integer. For example, I may want to produce a subarray with x[:n] and, I may wish to sometimes set n to a value such that the whole array will be produced. Since you cant use a float for n (python wants an integer), you need a large integer. A good way of doing this is to use the largest integer available: sys.maxint.

Here is an example:

```
# MAX_SOURCES = sys.maxint # normal setting
MAX_SOURCES = 5 # while testing
# code to use an array ...
... sources[:MAX_SOURCES]
```

So, while testing, I could use a smaller sources array but use the full array in production.