std::isfinite
Von cppreference.com
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
bool isfinite( float num ); bool isfinite( double num ); |
(seit C++11) (bis C++23) |
|
| constexpr bool isfinite( /*Gleitkomma-Typ*/ 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 isfinite( Integer num ); |
(A) | (seit C++11) (constexpr seit C++23) |
1) Bestimmt, ob die gegebene Gleitkommazahl num einen endlichen Wert hat, d. h. sie ist normal, subnormal oder null, aber nicht unendlich oder NaN. Die Bibliothek stellt Überladungen für alle cv-unqualifizierten Gleitkommatypen als Parametertyp num bereit.(seit C++23)
|
S) Die SIMD-Überladung führt eine elementweise
std::isfinite 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 einen endlichen Wert hat, false andernfalls.
S) Ein datenparalleles Maskenobjekt, bei dem das i-te Element gleich true ist, wenn v_num[i] einen endlichen Wert hat, 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 ganzzahligen Typ std::isfinite(num) die gleiche Wirkung hat wie std::isfinite(static_cast<double>(num)).
[edit] Beispiele
Führen Sie diesen Code aus
#include <cfloat> #include <cmath> #include <iostream> int main() { std::cout << std::boolalpha << "isfinite(NaN) = " << std::isfinite(NAN) << '\n' << "isfinite(Inf) = " << std::isfinite(INFINITY) << '\n' << "isfinite(-Inf) = " << std::isfinite(-INFINITY) << '\n' << "isfinite(HUGE_VAL) = " << std::isfinite(HUGE_VAL) << '\n' << "isfinite(0.0) = " << std::isfinite(0.0) << '\n' << "isfinite(exp(800)) = " << std::isfinite(std::exp(800)) << '\n' << "isfinite(DBL_MIN/2.0) = " << std::isfinite(DBL_MIN / 2.0) << '\n'; }
Ausgabe
isfinite(NaN) = false isfinite(Inf) = false isfinite(-Inf) = false isfinite(HUGE_VAL) = false isfinite(0.0) = true isfinite(exp(800)) = false isfinite(DBL_MIN/2.0) = true
[edit] Siehe auch
| (C++11) |
klassifiziert den gegebenen Gleitkommawert (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl unendlich ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl NaN ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl normal ist (Funktion) |
| C-Dokumentation für isfinite
| |