|
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <math.h> | ||
float expf(float arg); | (1) | (since C99) |
double exp(double arg); | (2) | |
longdouble expl(longdouble arg); | (3) | (since C99) |
Defined in header <tgmath.h> | ||
#define exp( arg ) | (4) | (since C99) |
expl is called. Otherwise, ifarg has integer type or the typedouble,exp is called. Otherwise,expf is called. Ifarg is complex or imaginary, then the macro invokes the corresponding complex function (cexpf,cexp,cexpl).Contents |
| arg | - | floating-point value |
If no errors occur, the base-e exponential ofarg (earg
) is returned.
If a range error occurs due to overflow,+HUGE_VAL,+HUGE_VALF, or+HUGE_VALL is returned.
If a range error occurs due to underflow, the correct result (after rounding) is returned.
Errors are reported as specified inmath_errhandling.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
For IEEE-compatible typedouble, overflow is guaranteed if709.8 < arg, and underflow is guaranteed ifarg < -708.4.
#include <errno.h>#include <fenv.h>#include <float.h>#include <math.h>#include <stdio.h>// #pragma STDC FENV_ACCESS ON int main(void){printf("exp(1) = %f\n", exp(1));printf("FV of $100, continuously compounded at 3%% for 1 year = %f\n",100*exp(0.03));// special valuesprintf("exp(-0) = %f\n", exp(-0.0));printf("exp(-Inf) = %f\n", exp(-INFINITY));//error handlingerrno=0;feclearexcept(FE_ALL_EXCEPT);printf("exp(710) = %f\n", exp(710));if(errno==ERANGE)perror(" errno == ERANGE");if(fetestexcept(FE_OVERFLOW))puts(" FE_OVERFLOW raised");}
Possible output:
exp(1) = 2.718282FV of $100, continuously compounded at 3% for 1 year = 103.045453exp(-0) = 1.000000exp(-Inf) = 0.000000exp(710) = inf errno == ERANGE: Numerical result out of range FE_OVERFLOW raised
(C99)(C99)(C99) | computes2 raised to the given power (\({\small 2^x}\)2x) (function)[edit] |
(C99)(C99)(C99) | computese raised to the given power, minus one (\({\small e^x-1}\)ex-1) (function)[edit] |
(C99)(C99) | computes natural (base-e) logarithm (\({\small \ln{x} }\)ln(x)) (function)[edit] |
(C99)(C99)(C99) | computes the complex base-e exponential (function)[edit] |
C++ documentation forexp | |