*Compute the exponential of a number, then subtract 1*

#include <math.h> double expm1 ( doublex); float expm1f ( floatx);

`x`- The number for which you want to calculate the exponential minus one.

The expm1() and expm1f()
functions compute the exponential of `x`, minus 1
(e^{x} - 1).

A range error occurs if the magnitude of `x`
is too large.

The value of expm1( `x` ) may be more accurate than
exp( `x` ) - `1.0` for small values of `x`.

The expm1() and
log1p() 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.

The exponential value of `x`, minus 1.

Note:
If an error occurs, these functions return 0, but this is also a valid
mathematical result.
If you want to check for errors, set
`errno`
to 0, call the function, and then check `errno` again.
These functions don't change `errno` if no errors occurred.

#include <stdio.h> #include <errno.h> #include <inttypes.h> #include <math.h> #include <fpstatus.h> int main(int argc, char** argv) { double a, b; a = 2; b = expm1(a); printf("(e ^ %f) -1 is %f \n", a, b); return(0); }

produces the output:

(e ^ 2.000000) -1 is 6.389056

Safety: | |
---|---|

Cancellation point | No |

Interrupt handler | No |

Signal handler | No |

Thread | Yes |