std::isnormal
Von cppreference.com
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
bool isnormal( float num ); bool isnormal( double num ); |
(seit C++11) (bis C++23) |
|
| constexpr bool isnormal( /*Gleitkommazahltyp*/ num ); |
(seit C++23) | |
| SIMD-Überladung (seit C++26) |
||
| Definiert im Header <simd> |
||
| template< /*math-floating-point*/ V > constexpr typename /*deduced-simd-t*/<V>::mask_type |
(S) | (seit C++26) |
| Definiert in der Header-Datei <cmath> |
||
| template< class Integer > bool isnormal( Integer num ); |
(A) | (seit C++11) (constexpr seit C++23) |
1) Prüft, ob die gegebene Gleitkommazahl num normal ist, d.h. weder Null, subnormal, unendlich noch NaN ist. Die Bibliothek stellt Überladungen für alle cv-unqualifizierten Gleitkommatypen als Parametertyp von num bereit.(seit C++23)
|
S) Die SIMD-Überladung führt eine elementweise Ausführung von
std::isnormal auf v_num durch.
|
(seit C++26) |
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
Inhalt |
[bearbeiten] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
| v_num | - | Ein datenparalleles Objekt einer std::basic_simd-Spezialisierung, deren Elementtyp ein Gleitkommatyp ist |
[bearbeiten] Rückgabewert
1) true, wenn num normal ist, false andernfalls.
S) Ein datenparalleles Maskenobjekt, bei dem das i-te Element gleich true ist, wenn v_num[i] normal ist, oder false andernfalls für alle i im Bereich
[0, v_num.size()).[bearbeiten] Anmerkungen
Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom Ganzzahltyp std::isnormal(num) denselben Effekt hat wie std::isnormal(static_cast<double>(num)).
[edit] Beispiel
Führen Sie diesen Code aus
#include <cfloat> #include <cmath> #include <iostream> int main() { std::cout << std::boolalpha << "isnormal(NaN) = " << std::isnormal(NAN) << '\n' << "isnormal(Inf) = " << std::isnormal(INFINITY) << '\n' << "isnormal(0.0) = " << std::isnormal(0.0) << '\n' << "isnormal(DBL_MIN/2.0) = " << std::isnormal(DBL_MIN / 2.0) << '\n' << "isnormal(1.0) = " << std::isnormal(1.0) << '\n'; }
Ausgabe
isnormal(NaN) = false isnormal(Inf) = false isnormal(0.0) = false isnormal(DBL_MIN/2.0) = false isnormal(1.0) = true
[edit] Siehe auch
| (C++11) |
klassifiziert den gegebenen Gleitkommawert (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl endlich ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl unendlich ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl NaN ist (Funktion) |
| C-Dokumentation für isnormal
| |