Namensräume
Varianten
Aktionen

std::signbit

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

bool signbit( double num );

bool signbit( long double num );
(seit C++11)
(bis C++23)
constexpr bool signbit( /*floating-point-type*/ 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

  signbit ( const V& v_num );
(S) (seit C++26)
Definiert in der Header-Datei <cmath>
template< class Integer >
bool signbit( Integer num );
(A) (seit C++11)
(constexpr seit C++23)
1) Ermittelt, ob die gegebene Fließkommazahl num negativ ist. Die Bibliothek stellt Überladungen für alle cv-unqualifizierten Fließkommatypen als Parametertyp num bereit.(seit C++23)
S) Die SIMD-Überladung führt ein elementweises std::signbit für v_num durch.
(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 negativ ist, andernfalls false.
S) Ein datenparalleles Maskenobjekt, bei dem das i-te Element true ist, wenn v_num[i] negativ ist, oder false andernfalls für alle i im Bereich [0v_num.size()).

[bearbeiten] Anmerkungen

Diese Funktion erkennt das Vorzeichenbit von Nullen, Unendlichkeiten und NaNs. Zusammen mit std::copysign ist std::signbit eine der wenigen portablen Möglichkeiten, das Vorzeichen einer NaN zu untersuchen.

Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom Ganzzahltyp std::signbit(num) die gleiche Auswirkung hat wie std::signbit(static_cast<double>(num)).

[bearbeiten] Beispiel

#include <cmath>
#include <iostream>
 
int main()
{
    std::cout << std::boolalpha
              << "signbit(+0.0) = " << std::signbit(+0.0) << '\n'
              << "signbit(-0.0) = " << std::signbit(-0.0) << '\n'
              << "signbit(+nan) = " << std::signbit(+NAN) << '\n'
              << "signbit(-nan) = " << std::signbit(-NAN) << '\n'
              << "signbit(+inf) = " << std::signbit(+INFINITY) << '\n'
              << "signbit(-inf) = " << std::signbit(-INFINITY) << '\n';
}

Ausgabe

signbit(+0.0) = false
signbit(-0.0) = true
signbit(+nan) = false
signbit(-nan) = true
signbit(+inf) = false
signbit(-inf) = true

[bearbeiten] Siehe auch

Absolutwert eines Gleitkommawerts (|x|)
(Funktion) [bearbeiten]
(C++11)(C++11)(C++11)
kopiert das Vorzeichen eines Gleitkommawerts
(Funktion) [bearbeiten]
C-Dokumentation für signbit