exp, expf, expl, expd32, expd64, and expd128 Subroutines
Purpose
Computes exponential, logarithm, and power functions.
Libraries
IEEE Math Library (libm.a) or System V Math Library (libmsaa.a)
Syntax
#include <math.h>
double x;
float expf (x)
float x;
long double expl (x)
long double x;
_Decimal32 expd32 (x)
_Decimal32 x;
_Decimal64 expd64 (x)
_Decimal64 x;
_Decimal128 expd128 (x)
_Decimal128 x;
Description
These subroutines are used to compute exponential, logarithm, and power functions.
The exp, expf, expl, expd32, expd64, and expd128 subroutines returns exp (x).
An application wishing to check for error situations should set the errno global variable to zero and call feclearexcept(FE_ALL_EXCEPT) before calling these subroutines. Upon return, if errno is nonzero or fetestexcept(FE_INVALID | FE_DIVBYZERO | FE_OVERFLOW | FE_UNDERFLOW) is nonzero, an error has occurred.
Parameters
Item | Description |
---|---|
x | Specifies some double-precision floating-point value. |
y | Specifies some double-precision floating-point value. |
Return Values
Upon successful completion, the exp, expf, expl, expd32, expd64, and expd128 subroutines return the exponential value of x.
If the correct value would cause overflow, a range error occurs and the exp, expf, expl, expd32, expd64, and expd128 subroutine returns the value of the macro HUGE_VAL, HUGE_VALF, HUGE_VALL, HUGE_VAL_D32, HUGE_VAL_D64, and HUGE_VAL_D128 respectively.
If the correct value would cause underflow, and is not representable, a range error may occur, and either 0.0 (if supported), or an implementation-defined value is returned.
If x is NaN, a NaN is returned.
If x is ±0, 1 is returned.
If x is -Inf, +0 is returned.
If x is +Inf, x is returned.
If the correct value would cause underflow, and is representable, a range error may occur and the correct value is returned.
Error Codes
When using the libm.a library:
Item | Description |
---|---|
exp | If the correct value would overflow, the exp subroutine returns a HUGE_VAL value and the errno global variable is set to a ERANGE value. |
When using libmsaa.a(-lmsaa):
Item | Description |
---|---|
exp | If the correct value would overflow, the exp subroutine returns a HUGE_VAL value. If the correct value would underflow, the exp subroutine returns 0. In both cases errno is set to ERANGE. |
expl | If the correct value would overflow, the expl subroutine returns a HUGE_VAL value. If the correct value would underflow, the expl subroutine returns 0. In both cases errno is set to ERANGE. |
expl | If the correct value overflows, the expl subroutine returns a HUGE_VAL value and errno is set to ERANGE. |
These error-handling procedures may be changed with the matherr subroutine when using the libmsaa.a library.