[Previous] [Contents] [Next]

expm1(), expm1f()

Compute the exponential of a number, then subtract 1

Synopsis:

#include <math.h>

double expm1 ( double x );

float expm1f ( float x );

Library:

libm

Description:

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.

Returns:

The exponential value of x, minus 1:

Examples:

#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

Classification:

expm1() is standard Unix; expm1f() is ANSI (draft)

Safety:
Cancellation point No
Interrupt handler No
Signal handler No
Thread Yes

See also:

exp(), log1p()


[Previous] [Contents] [Next]