std:: log2, std:: log2f, std:: log2l
|
Definiert in Header
<cmath>
|
||
| (1) | ||
|
float
log2
(
float
num
)
;
double
log2
(
double
num
)
;
|
(bis C++23) | |
|
/*floating-point-type*/
log2 ( /*floating-point-type*/ num ) ; |
(seit C++23)
(constexpr seit C++26) |
|
|
float
log2f
(
float
num
)
;
|
(2) |
(seit C++11)
(constexpr seit C++26) |
|
long
double
log2l
(
long
double
num
)
;
|
(3) |
(seit C++11)
(constexpr seit C++26) |
|
SIMD-Überladung
(seit C++26)
|
||
|
Definiert in Header
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (seit C++26) |
|
Zusätzliche Überladungen
(seit C++11)
|
||
|
Definiert in Header
<cmath>
|
||
|
template
<
class
Integer
>
double log2 ( Integer num ) ; |
(A) | (constexpr seit C++26) |
std::log2
für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters bereit.
(since C++23)
|
S)
Die SIMD-Überladung führt eine elementweise
std::log2
-Operation auf
v_num
durch.
|
(seit C++26) |
|
A)
Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als
double
behandelt werden.
|
(since C++11) |
Inhaltsverzeichnis |
Parameter
| num | - | Fließkomma- oder Ganzzahlwert |
Rückgabewert
Wenn keine Fehler auftreten, wird der Basis- 2 -Logarithmus von num ( log 2 (num) oder lb(num) ) zurückgegeben.
Wenn ein Domänenfehler auftritt, wird ein implementierungsdefinierter Wert zurückgegeben (NaN, sofern unterstützt).
Wenn ein Polfehler auftritt,
-HUGE_VAL
,
-HUGE_VALF
, oder
-HUGE_VALL
wird zurückgegeben.
Fehlerbehandlung
Fehler werden gemeldet, wie in math_errhandling spezifiziert.
Ein Domänenfehler tritt auf, wenn num kleiner als null ist.
Polfehler kann auftreten, wenn num null ist.
Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt,
- Wenn das Argument ±0 ist, wird -∞ zurückgegeben und FE_DIVBYZERO wird ausgelöst.
- Wenn das Argument 1 ist, wird +0 zurückgegeben.
- Wenn das Argument negativ ist, wird NaN zurückgegeben und FE_INVALID wird ausgelöst.
- Wenn das Argument +∞ ist, wird +∞ zurückgegeben.
- Wenn das Argument NaN ist, wird NaN zurückgegeben.
Hinweise
Für die Ganzzahl num kann der binäre Logarithmus als der nullbasierte Index des höchstwertigen 1-Bits in der Eingabe interpretiert werden.
Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp std :: log2 ( num ) dieselbe Wirkung hat wie std :: log2 ( static_cast < double > ( num ) ) .
Beispiel
#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) << " (höchstes gesetztes Bit ist an Position 9)\n" << "Basis-5-Logarithmus von 125 = " << std::log2(125) / std::log2(5) << '\n'; // spezielle Werte std::cout << "log2(1) = " << std::log2(1) << '\n' << "log2(+Inf) = " << std::log2(INFINITY) << '\n'; // Fehlerbehandlung 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 ausgelöst\n"; }
Mögliche Ausgabe:
log2(65536) = 16
log2(0.125) = -3
log2(0x020f) = 9.04166 (höchstes gesetztes Bit ist an Position 9)
Basis-5-Logarithmus von 125 = 3
log2(1) = 0
log2(+Inf) = inf
log2(0) = -inf
errno == ERANGE: Numerisches Ergebnis außerhalb des gültigen Bereichs
FE_DIVBYZERO ausgelöst
Siehe auch
|
(C++11)
(C++11)
|
berechnet den natürlichen Logarithmus (Basis
e
) (
ln(x)
)
(Funktion) |
|
(C++11)
(C++11)
|
berechnet den dekadischen Logarithmus (Basis
10
) (
log
10
(x)
)
(Funktion) |
|
(C++11)
(C++11)
(C++11)
|
natürlicher Logarithmus (zur Basis
e
) von
1
plus der gegebenen Zahl (
ln(1+x)
)
(Funktion) |
|
(C++11)
(C++11)
(C++11)
|
gibt
2
hoch der gegebenen Potenz zurück (
2
x
)
(Funktion) |
|
C-Dokumentation
für
log2
|
|