function
<cmath> <ctgmath>

# expm1

```     double expm1  (double x);
float expm1f (float x);
long double expm1l (long double x);
```
```     double expm1 (double x);
float expm1 (float x);
long double expm1 (long double x);
double expm1 (T x);           // additional overloads for integral types```
Compute exponential minus one
Returns e raised to the power x minus one: `ex-1`.

For small magnitude values of x, expm1 may be more accurate than `exp(x)-1`.

Header <tgmath.h> provides a type-generic macro version of this function.
Additional overloads are provided in this header (`<cmath>`) for the integral types: These overloads effectively cast x to a `double` before calculations (defined for T being any integral type).

### Parameters

x
Value of the exponent.

### Return Value

e raised to the power of x, minus one.
If the magnitude of the result is too large to be represented by a value of the return type, the function returns HUGE_VAL (or HUGE_VALF or HUGE_VALL) with the proper sign, and an overflow range error occurs:

If an overflow range error occurs:
- And math_errhandling has MATH_ERRNO set: the global variable errno is set to ERANGE.
- And math_errhandling has MATH_ERREXCEPT set: FE_OVERFLOW is raised.

### Example

 ``123456789101112`` ``````/* expm1 example */ #include /* printf */ #include /* expm1 */ int main () { double param, result; param = 1.0; result = expm1 (param); printf ("expm1 (%f) = %f.\n", param, result ); return 0; }``````

Output:
 ``` expm1 (1.000000) = 1.718282. ```