expm1(P)                                               expm1(P)





NAME
       expm1, expm1f, expm1l - compute exponential functions

SYNOPSIS
       #include <math.h>

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


DESCRIPTION
       The  functionality  described  on this reference page is
       aligned with the ISO C standard.  Any  conflict  between
       the  requirements  described here and the ISO C standard
       is unintentional.  This volume  of  IEEE Std 1003.1-2001
       defers to the ISO C standard.

       These functions shall compute e-1.0.

       An  application  wishing  to  check for error situations
       should  set  errno   to   zero   and   call   feclearex-
       cept(FE_ALL_EXCEPT)  before calling these functions.  On
       return, if errno is non-zero or  fetestexcept(FE_INVALID
       |  FE_DIVBYZERO  |  FE_OVERFLOW  | FE_UNDERFLOW) is non-
       zero, an error has occurred.

RETURN VALUE
       Upon  successful  completion,  these  functions   return
       e**x-1.0.

       If the correct value would cause overflow, a range error
       shall occur and expm1(), expm1f(),  and  expm1l()  shall
       return  the  value of the macro HUGE_VAL, HUGE_VALF, and
       HUGE_VALL, respectively.

       If x is NaN, a NaN shall be returned.

       If x is +-0, +-0 shall be returned.

       If x is -Inf, -1 shall be returned.

       If x is +Inf, x shall be returned.

       If x is subnormal, a range error may occur and x  should
       be returned.

ERRORS
       These functions shall fail if:

       Range Error
              The result overflows.

       If    the   integer   expression   (math_errhandling   &
       MATH_ERRNO) is non-zero, then  errno  shall  be  set  to
       [ERANGE].  If the integer expression (math_errhandling &
       MATH_ERREXCEPT) is non-zero, then the overflow floating-
       point exception shall be raised.


       These functions may fail if:

       Range Error
              The value of x is subnormal.

       If    the   integer   expression   (math_errhandling   &
       MATH_ERRNO) is non-zero, then  errno  shall  be  set  to
       [ERANGE].  If the integer expression (math_errhandling &
       MATH_ERREXCEPT) is non-zero, then the  underflow  float-
       ing-point exception shall be raised.


       The following sections are informative.

EXAMPLES
       None.

APPLICATION USAGE
       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  finan-
       cial calculations of ((1+x)-1)/x, namely:


              expm1(n * log1p(x))/x

       when  x  is  very  small  (for example, when calculating
       small daily interest rates). These functions  also  sim-
       plify writing accurate inverse hyperbolic functions.

       For  IEEE Std 754-1985  double, 709.8 < x implies expm1(
       x) has overflowed.

       On   error,   the   expressions   (math_errhandling    &
       MATH_ERRNO)  and (math_errhandling & MATH_ERREXCEPT) are
       independent of each other, but at least one of them must
       be non-zero.

RATIONALE
       None.

FUTURE DIRECTIONS
       None.

SEE ALSO
       exp()  ,  feclearexcept()  ,  fetestexcept() , ilogb() ,
       log1p()   ,   the    Base    Definitions    volume    of
       IEEE Std 1003.1-2001,  Section  4.18, Treatment of Error
       Conditions for Mathematical Functions, <math.h>

COPYRIGHT
       Portions of this text are reprinted  and  reproduced  in
       electronic  form  from  IEEE  Std  1003.1, 2003 Edition,
       Standard for Information Technology -- Portable  Operat-
       ing System Interface (POSIX), The Open Group Base Speci-
       fications Issue 6, Copyright (C) 2001-2003 by the Insti-
       tute  of  Electrical  and Electronics Engineers, Inc and
       The Open Group. In the event of any discrepancy  between
       this  version  and  the original IEEE and The Open Group
       Standard, the original IEEE and The Open Group  Standard
       is  the  referee  document. The original Standard can be
       obtained        online        at        http://www.open-
       group.org/unix/online.html .



POSIX                         2003                     expm1(P)
