std:: log2, std:: log2f, std:: log2l
|
Definido en el encabezado
<cmath>
|
||
| (1) | ||
|
float
log2
(
float
num
)
;
double
log2
(
double
num
)
;
|
(hasta C++23) | |
|
/*floating-point-type*/
log2 ( /*floating-point-type*/ num ) ; |
(desde C++23)
(constexpr desde C++26) |
|
|
float
log2f
(
float
num
)
;
|
(2) |
(desde C++11)
(constexpr desde C++26) |
|
long
double
log2l
(
long
double
num
)
;
|
(3) |
(desde C++11)
(constexpr desde C++26) |
|
Sobrecarga SIMD
(desde C++26)
|
||
|
Definido en el encabezado
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (desde C++26) |
|
Sobrecargas adicionales
(desde C++11)
|
||
|
Definido en el encabezado
<cmath>
|
||
|
template
<
class
Integer
>
double log2 ( Integer num ) ; |
(A) | (constexpr desde C++26) |
std::log2
para todos los tipos de punto flotante sin calificación cv como el tipo del parámetro.
(desde C++23)
|
S)
La sobrecarga SIMD realiza un
std::log2
elemento por elemento en
v_num
.
|
(desde C++26) |
|
A)
Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como
double
.
|
(since C++11) |
Contenidos |
Parámetros
| num | - | valor de punto flotante o entero |
Valor de retorno
Si no ocurren errores, se devuelve el logaritmo en base 2 de num ( log 2 (num) o lb(num) ).
Si ocurre un error de dominio, se devuelve un valor definido por la implementación (NaN donde esté soportado).
Si ocurre un error de polo,
-HUGE_VAL
,
-HUGE_VALF
, o
-HUGE_VALL
es devuelto.
Manejo de errores
Los errores se reportan como se especifica en math_errhandling .
Error de dominio ocurre si num es menor que cero.
Puede ocurrir un error de polo si num es cero.
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
- Si el argumento es ±0, se devuelve -∞ y FE_DIVBYZERO se activa.
- Si el argumento es 1, se devuelve +0.
- Si el argumento es negativo, se devuelve NaN y FE_INVALID se activa.
- Si el argumento es +∞, se devuelve +∞.
- Si el argumento es NaN, se devuelve NaN.
Notas
Para el entero num , el logaritmo binario puede interpretarse como el índice basado en cero del bit más significativo en 1 en la entrada.
Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: log2 ( num ) tenga el mismo efecto que std :: log2 ( static_cast < double > ( num ) ) .
Ejemplo
#include <cerrno> #include <cfenv> #include <cmath> #include <cstring> #include <iostream> // #pragma STDC FENV_ACCESS ON int main() { std::cout << "log2(65536) = " << std::log2(65536) << '\n' << "log2(0.125) = " << std::log2(0.125) << '\n' << "log2(0x020f) = " << std::log2(0x020f) << " (el bit más significativo está en la posición 9)\n" << "logaritmo en base 5 de 125 = " << std::log2(125) / std::log2(5) << '\n'; // valores especiales std::cout << "log2(1) = " << std::log2(1) << '\n' << "log2(+Inf) = " << std::log2(INFINITY) << '\n'; // manejo de errores errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "log2(0) = " << std::log2(0) << '\n'; if (errno == ERANGE) std::cout << " errno == ERANGE: " << std::strerror(errno) << '\n'; if (std::fetestexcept(FE_DIVBYZERO)) std::cout << " FE_DIVBYZERO activado\n"; }
Salida posible:
log2(65536) = 16
log2(0.125) = -3
log2(0x020f) = 9.04166 (el bit más significativo está en la posición 9)
logaritmo en base 5 de 125 = 3
log2(1) = 0
log2(+Inf) = inf
log2(0) = -inf
errno == ERANGE: Resultado numérico fuera de rango
FE_DIVBYZERO activado
Véase también
|
(C++11)
(C++11)
|
calcula el logaritmo natural (base
e
) (
ln(x)
)
(función) |
|
(C++11)
(C++11)
|
calcula el logaritmo común (base
10
) (
log
10
(x)
)
(función) |
|
(C++11)
(C++11)
(C++11)
|
logaritmo natural (base
e
) de
1
más el número dado (
ln(1+x)
)
(función) |
|
(C++11)
(C++11)
(C++11)
|
devuelve
2
elevado a la potencia dada (
2
x
)
(función) |
|
Documentación C
para
log2
|
|