It's well known that you need to take care when writing a function to compute $\log(1+x)$ when $x$ is small. Because of floating point roundoff, $1+x$ may have less precision than $x$, which can translate to large relative error in computing $\log(1+x)$. In numerical libraries you often see a function
log1p(), which computes the log of one plus its argument, for this reason.
However, I was recently puzzled by this implementation of
def log1p(x): y = 1 + x z = y - 1 if z == 0: return x else: return x * (log(y) / z)
x * (log(y) / z) a better approximation to $\log(1+x)$ than just