|
|
|
Defined in header <math.h> | ||
float exp2f(float n); | (1) | (since C99) |
double exp2(double n); | (2) | (since C99) |
longdouble exp2l(longdouble n); | (3) | (since C99) |
Defined in header <tgmath.h> | ||
#define exp2( n ) | (4) | (since C99) |
n
.n
has typelongdouble,exp2l
is called. Otherwise, ifn
has integer type or the typedouble,exp2
is called. Otherwise,exp2f
is called.Contents |
n | - | floating-point value |
If no errors occur, the base-2 exponential ofn
(2n
) is returned.
If a range error due to overflow occurs,+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),
#include <errno.h>#include <fenv.h>#include <float.h>#include <math.h>#include <stdio.h>// #pragma STDC FENV_ACCESS ON int main(void){printf("exp2(5) = %f\n", exp2(5));printf("exp2(0.5) = %f\n", exp2(0.5));printf("exp2(-4) = %f\n", exp2(-4));// special valuesprintf("exp2(-0.9) = %f\n", exp2(-0.9));printf("exp2(-Inf) = %f\n", exp2(-INFINITY));//error handlingerrno=0;feclearexcept(FE_ALL_EXCEPT);printf("exp2(1024) = %f\n", exp2(1024));if(errno==ERANGE)perror(" errno == ERANGE");if(fetestexcept(FE_OVERFLOW))puts(" FE_OVERFLOW raised");}
Possible output:
exp2(5) = 32.000000exp2(0.5) = 1.414214exp2(-4) = 0.062500exp2(-0.9) = 0.535887exp2(-Inf) = 0.000000exp2(1024) = Inf errno == ERANGE: Result too large FE_OVERFLOW raised
(C99)(C99) | computese raised to the given power (\({\small e^x}\)ex) (function)[edit] |
(C99)(C99)(C99) | computese raised to the given power, minus one (\({\small e^x-1}\)ex-1) (function)[edit] |
(C99)(C99)(C99) | computes base-2 logarithm (\({\small \log_{2}{x} }\)log2(x)) (function)[edit] |
C++ documentation forexp2 |