Namensräume
Varianten
Aktionen

std::isinf

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Definiert in der Header-Datei <cmath>
(1)
bool isinf( float num );

bool isinf( double num );

bool isinf( long 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

  isinf ( const V& v_num );
(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.
(Siehe math-floating-point und deduced-simd-t für ihre Definitionen.)
(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 [0v_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

#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

klassifiziert den gegebenen Gleitkommawert
(Funktion) [bearbeiten]
(C++11)
prüft, ob die gegebene Zahl endlich ist
(Funktion) [bearbeiten]
(C++11)
prüft, ob die gegebene Zahl NaN ist
(Funktion) [bearbeiten]
(C++11)
prüft, ob die gegebene Zahl normal ist
(Funktion) [bearbeiten]
C-Dokumentation für isinf