Go to main content

# man pages section 3: Extended Library Functions, Volume 2

Updated: July 2017

## expm1f(3M)

### Name

expm1, expm1f, expm1l - compute exponential function

### Synopsis

```c99 [ flag... ] file... –lm [ library... ]
#include <math.h>

double expm1(double x);```
`float expm1f(float x);`
`long double expm1l(long double x);`

### Description

These functions compute ex−1.0.

### Return Values

Upon successful completion, these functions return ex−1.0.

If x is NaN, a NaN is returned.

If x is ±0, ±0 is returned.

If x is −Inf, −1 is returned.

If x is +Inf, x is returned.

### Errors

These functions will fail if:

Range Error

The result overflows.

If the integer expression (math_errhandling & MATH_ERREXCEPT) is non-zero, the overflow floating-point exception is raised.

### Usage

The value of expm1(x) can be more accurate than exp(x)−1.0 for small values of x.

The expm1() and log1p(3M) functions are useful for financial calculations of ((1+x)n−1)/ x, namely:

`expm1(n * log1p(x)) / x`

when x is very small (for example, when performing calculations with a small daily interest rate). These functions also simplify writing accurate inverse hyperbolic functions.

An application wanting to check for exceptions should call feclearexcept(FE_ALL_EXCEPT) before calling these functions. On return, if fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is non-zero, an exception has been raised. An application should either examine the return value or check the floating point exception flags to detect exceptions.

### Attributes

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
MT-Level
MT-Safe
Standard