std::log, std::logf, std::logl
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float log ( float num ); double log ( double num ); |
(bis C++23) | |
| /* Gleitkommazahl-Typ */ log ( /*Gleitkommatyp*/ num ); |
(seit C++23) (constexpr seit C++26) |
|
float logf( float num ); |
(2) | (seit C++11) (constexpr seit C++26) |
long double logl( long double num ); |
(3) | (seit C++11) (constexpr seit C++26) |
| SIMD-Überladung (seit C++26) |
||
| Definiert im Header <simd> |
||
| template< /*math-floating-point*/ V > constexpr /*deduzierter-simd-t*/<V> |
(S) | (seit C++26) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <cmath> |
||
template< class Integer > double log ( Integer num ); |
(A) | (constexpr seit C++26) |
std::log für alle cv-unqualifizierten Gleitkommatypen als Parametertyp zur Verfügung.(seit C++23)|
S) Die SIMD-Überladung führt einen elementweisen
std::log auf v_num aus.
|
(seit C++26) |
|
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
|
(seit C++11) |
Inhalt |
[bearbeiten] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
[bearbeiten] Rückgabewert
Wenn keine Fehler auftreten, wird der natürliche Logarithmus (Basis e) von num (ln(num) oder loge(num)) zurückgegeben.
Wenn ein Domänenfehler auftritt, wird ein implementierungsabhängiger Wert zurückgegeben (NaN, wo unterstützt).
Wenn ein Pol-Fehler auftritt, werden -HUGE_VAL, -HUGE_VALF oder -HUGE_VALL zurückgegeben.
[bearbeiten] Fehlerbehandlung
Fehler werden wie in math_errhandling beschrieben gemeldet.
Ein Domänenfehler tritt auf, wenn num kleiner als Null ist.
Ein Pol-Fehler kann auftreten, wenn num null ist.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (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.
[bearbeiten] Hinweise
Die zusätzlichen Überladungen müssen nicht exakt wie in (A) bereitgestellt werden. Sie müssen lediglich ausreichen, um sicherzustellen, dass für ihr Argument num vom Integer-Typ std::log(num) die gleiche Wirkung hat wie std::log(static_cast<double>(num)).
[bearbeiten] Beispiel
#include <cerrno> #include <cfenv> #include <cmath> #include <cstring> #include <iostream> // #pragma STDC FENV_ACCESS ON int main() { std::cout << "log(1) = " << std::log(1) << '\n' << "base-5 logarithm of 125 = " << std::log(125) / std::log(5) << '\n'; // special values std::cout << "log(1) = " << std::log(1) << '\n' << "log(+Inf) = " << std::log(INFINITY) << '\n'; // error handling errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "log(0) = " << std::log(0) << '\n'; if (errno == ERANGE) std::cout << " errno == ERANGE: " << std::strerror(errno) << '\n'; if (std::fetestexcept(FE_DIVBYZERO)) std::cout << " FE_DIVBYZERO raised\n"; }
Mögliche Ausgabe
log(1) = 0
base-5 logarithm of 125 = 3
log(1) = 0
log(+Inf) = inf
log(0) = -inf
errno == ERANGE: Numerical result out of range
FE_DIVBYZERO raised[bearbeiten] Siehe auch
| (C++11)(C++11) |
berechnet den dekadischen (Basis 10) Logarithmus (log10(x)) (Funktion) |
| (C++11)(C++11)(C++11) |
Basis 2 Logarithmus der gegebenen Zahl (log2(x)) (Funktion) |
| (C++11)(C++11)(C++11) |
natürlicher Logarithmus (Basis e) von 1 plus der gegebenen Zahl (ln(1+x)) (Funktion) |
| (C++11)(C++11) |
gibt e hoch der gegebenen Potenz zurück (ex) (Funktion) |
| komplexer natürlicher Logarithmus mit dem Schnitt entlang der negativen reellen Achse (function template) | |
| wendet die Funktion std::log auf jedes Element von valarray an (function template) | |
| C-Dokumentation für log
| |