It is
computed in a way that is accurate even if the value of x is near
zero—a case where
exp(x) - 1 would be inaccurate due to
subtraction of two numbers that are nearly equal.

For some large negative
x values (where the function result approaches -1),
expm1() raises a bogus underflow floating-point exception.

For some large positive
x values,
expm1() raises a bogus invalid floating-point exception in addition to the expected
overflow exception, and returns a NaN instead of positive infinity.

Before version 2.11,
the glibc implementation did not set
errno to
ERANGE when a range error occurred.

This page is part of release 3.44 of the Linux
man-pages project.
A description of the project,
and information about reporting bugs,
can be found at
http://www.kernel.org/doc/man-pages/.