## Question:

I've seen code like this:

```
def _min(*args):
res = float('inf')
for value in args:
if value < res:
res = value
return res
```

I would like to know what is a float("inf") and a float("NaN").

## Answer:

## Infinite

As already commented, `float("inf")`

will create an infinite number:

```
>>> float("inf")
inf
```

Which is actually equivalent to `math.inf`

:

```
>>> import math
>>> math.inf
inf
>>> float("inf") == math.inf
True
```

It also has the counterpart of -infinite:

```
>>> float("-inf")
-inf
>>> -float("inf")
-inf
```

It is important to note that any number is less than infinity, just as any number is greater than -infinity.

There is also a function in `math`

to know if it is infinite, which is called isinf

```
>>> math.isinf(float("inf"))
True
>>> math.isinf(float("-inf"))
True
>>> math.isinf(3421)
False
```

## NaN

`NaN`

stands *for Not a Number* which means it is not a number. There are a few different ways to get to this value. One of them is the one you saw with `float("NaN")`

:

```
>>> float("NaN")
nan
```

Another would be subtracting infinity from infinity:

```
>>> float("inf") - float("inf")
nan
```

Any arithmetic operation on a `nan`

will still give a `nan`

:

```
>>> float("nan") * 5
nan
```

It also has the `isnan`

function that tests if it is `nan`

:

```
>>> math.isnan(float("nan"))
True
>>> math.isnan(25)
False
```

Additional reading from `inf - inf`

:

- "What is the result of ∞−∞?" on the Math Stack Exchange
- Wikipedia page with the undefined operations where infinity-infinity is one of them