expm1, expm1f, expm1l — exponential minus 1
#include <math.h>
double
expm1( |
double x) ; |
float
expm1f( |
float x) ; |
long double
expm1l( |
long double x) ; |
![]() |
Note | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
![]() |
Note |
---|---|
Link with |
These functions return a value equivalent to
exp(x) − 1
The result 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.
On success, these functions return exp(x) − 1.
If x
is a NaN, a
NaN is returned.
If x
is +0
(−0), +0 (−0) is returned.
If x
is positive
infinity, positive infinity is returned.
If x
is negative
infinity, −1 is returned.
If the result overflows, a range error occurs, and the
functions return −HUGE_VAL
, −HUGE_VALF
, or −HUGE_VALL
, respectively.
See math_error(7) for information on how to determine whether an error has occurred when calling these functions.
The following errors can occur:
errno
is set to
ERANGE (but see BUGS).
An overflow floating-point exception (FE_OVERFLOW
) is raised.
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value |
expm1 (), expm1f (), expm1l () |
Thread safety | MT-Safe |
Before glibc 2.17, on certain architectures (e.g., x86,
but not x86_64) expm1
() raised
a bogus underflow floating-point exception for some large
negative x
values
(where the function result approaches −1),
Before approximately glibc version 2.11, expm1
() raised a bogus invalid
floating-point exception in addition to the expected overflow
exception, and returned a NaN instead of positive infinity,
for some large positive x
values.
Before version 2.11, the glibc implementation did not set
errno
to ERANGE when a range error occurred.