# What is the purpose of numpy.log1p( )?

The NumPy docs give a hint:

For real-valued input,

`log1p`

is accurate also for`x`

so small that`1 + x == 1`

in floating-point accuracy.

So for example let's add a tiny non-zero number and `1.0`

. Rounding errors make it a `1.0`

.

```
>>> 1e-100 == 0.0
False
>>> 1e-100 + 1.0 == 1.0
True
```

If we try to take the `log`

of that incorrect sum, we get an incorrect result (compare to WolframAlpha):

```
>>> np.log(1e-100 + 1)
0.0
```

But if we use `log1p()`

, we get the correct result

```
>>> np.log1p(1e-100)
1e-100
```

The same principle holds for `exp1m()`

and `logaddexp()`

: The're more accurate for small `x`

.

If x is in range 0...+Inf then it will never cause an error (as we know log(0) would cause an error).

Not always the best choice, because as you see you will lose a big curve before x = 0 that is one of the best things about log function