std::isinf
Von cppreference.com
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
bool isinf( float num ); bool isinf( double num ); |
(seit C++11) (bis C++23) |
|
| constexpr bool isinf( /*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 isinf( Integer num ); |
(A) | (seit C++11) (constexpr seit C++23) |
1) Stellt fest, ob die gegebene Gleitkommazahl num eine positive oder negative Unendlichkeit ist. Die Bibliothek stellt Überladungen für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters num bereit.(seit C++23)
|
S) Die SIMD-Überladung führt eine elementweise
std::isinf auf v_num aus.
|
(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 unendlich ist, false andernfalls.
S) Ein datenparalleles Maskenobjekt, bei dem das i-te Element gleich true ist, wenn v_num[i] unendlich ist, oder false andernfalls für alle i im Bereich
[0, v_num.size()).[bearbeiten] Anmerkungen
GCC und Clang unterstützen die Option -ffinite-math (impliziert durch -ffast-math), die es dem jeweiligen Compiler erlaubt, die Nichtexistenz spezieller IEEE-754-Gleitkommawerte wie NaN, Unendlichkeit oder negative Null anzunehmen. Mit anderen Worten, std::isinf gibt unter dieser Option immer false zurück.
Die zusätzlichen Überladungen müssen nicht exakt wie in (A) angegeben bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ, std::isinf(num) denselben Effekt hat wie std::isinf(static_cast<double>(num)).
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cfloat> #include <cmath> #include <iostream> #include <limits> int main() { const double max = std::numeric_limits<double>::max(); const double inf = std::numeric_limits<double>::infinity(); std::cout << std::boolalpha << "isinf(NaN) = " << std::isinf(NAN) << '\n' << "isinf(Inf) = " << std::isinf(INFINITY) << '\n' << "isinf(max) = " << std::isinf(max) << '\n' << "isinf(inf) = " << std::isinf(inf) << '\n' << "isinf(0.0) = " << std::isinf(0.0) << '\n' << "isinf(exp(800)) = " << std::isinf(std::exp(800)) << '\n' << "isinf(DBL_MIN/2.0) = " << std::isinf(DBL_MIN / 2.0) << '\n'; }
Ausgabe
isinf(NaN) = false isinf(Inf) = true isinf(max) = false isinf(inf) = true isinf(0.0) = false isinf(exp(800)) = true isinf(DBL_MIN/2.0) = false
[bearbeiten] 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 NaN ist (Funktion) |
| (C++11) |
prüft, ob die gegebene Zahl normal ist (Funktion) |
| C-Dokumentation für isinf
| |