# 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 : from numbers import Integral, Real

In : from extended_int import int_inf, ExtendedIntegral, Infinite

In : i = int_inf

In : float(i)
Out: inf

In : print(i)
inf

In : i ** i

Out: inf

In : i
Out: inf

In : isinstance(i, Real)

Out: True

In : isinstance(i, Integral)

Out: False

In : isinstance(i, Infinite)

Out: True

In : isinstance(i, ExtendedIntegral)

Out: True

In : isinstance(2, ExtendedIntegral)

Out: True

In : isinstance(2, Infinite)

Out: False
``````

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.