float log2f( float arg );
(1) (since C99)double log2( double arg );
(2) (since C99)long double log2l( long double arg );
(3) (since C99)#define log2( arg )
(4) (since C99)1-3) Computes the base 2 logarithm of arg.
4) Type-generic macro: If arg
has type long double, log2l
is called. Otherwise, if arg
has integer type or the type double, log2
is called. Otherwise, log2f
is called.
If no errors occur, the base-2 logarithm of arg
(log2(arg) or lb(arg)) is returned.
If a domain error occurs, an implementation-defined value is returned (NaN where supported).
If a pole error occurs, -HUGE_VAL, -HUGE_VALF
, or -HUGE_VALL
is returned.
Errors are reported as specified in math_errhandling
.
Domain error occurs if arg
is less than zero.
Pole error may occur if arg
is zero.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
For integer arg
, the binary logarithm can be interpreted as the zero-based index of the most significant 1 bit in the input.
#include <stdio.h> #include <math.h> #include <float.h> #include <errno.h> #include <fenv.h> // #pragma STDC FENV_ACCESS ON int main(void) { printf("log2(65536) = %f\n", log2(65536)); printf("log2(0.125) = %f\n", log2(0.125)); printf("log2(0x020f) = %f (highest set bit is in position 9)\n", log2(0x020f)); printf("base-5 logarithm of 125 = %f\n", log2(125)/log2(5)); // special values printf("log2(1) = %f\n", log2(1)); printf("log2(+Inf) = %f\n", log2(INFINITY)); //error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("log2(0) = %f\n", log2(0)); if(errno == ERANGE) perror(" errno == ERANGE"); if(fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); }
Possible output:
log2(65536) = 16.000000 log2(0.125) = -3.000000 log2(0x020f) = 9.041659 (highest set bit is in position 9) base-5 logarithm of 125 = 3.000000 log2(1) = 0.000000 log2(+Inf) = inf log2(0) = -inf errno == ERANGE: Numerical result out of range FE_DIVBYZERO raised[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4