◐ Shell
clean mode source ↗

std::numeric_limits::tinyness_before – cppreference.com

Aus cppreference.com

<metanoindex/>

<tbody> </tbody>

static const bool tinyness_before

(bis C + +11)

static constexpr bool tinyness_before

(seit C++11)

Der Wert der std::numeric_limits<T>::has_denorm_loss ist true für alle Floating-Point-Typen T Testergebnisse der Floating-Point-Ausdrücke für Unterlauf vor dem Runden .

Original:

The value of std::numeric_limits<T>::has_denorm_loss is true for all floating-point types T that test results of floating-point expressions for underflow before rounding.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Standard Spezialisierungen

T

Wert std::numeric_limits<T>::tinyness_before

Original:

value of std::numeric_limits<T>::tinyness_before

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

/* non-specialized */ false
bool false
char false
signed char false
unsigned char false
wchar_t false
char16_t false
char32_t false
short false
unsigned short false
int false
unsigned int false
long false
unsigned long false
long long false
unsigned long long false
float

Implementierung definiert

Original:

implementation-defined

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

double

Implementierung definiert

Original:

implementation-defined

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

long double

Implementierung definiert

Original:

implementation-defined

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Notes

Standard-konformen IEEE 754 Floating-Point-Implementierungen können die Gleitkommaunterlauf an drei vordefinierten Momente erkennen:

Original:

Standard-compliant IEEE 754 floating-point implementations may detect the floating-point underflow at three predefined moments:

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

1)

nach der Berechnung eines Ergebnisses mit absoluter Wert kleiner als std::numeric_limits<T>::min(), erkennt diese Umsetzung tinyness vor der Rundung (zB UltraSparc)

Original:

after computation of a result with absolute value smaller than std::numeric_limits<T>::min(), such implementation detects tinyness before rounding (e.g. UltraSparc)

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

2)

nach dem Runden des Ergebnisses auf std::numeric_limits<T>::digits Bits, wenn das Ergebnis kleiner, erkennt diese Umsetzung tinyness nach Rundung (zB SuperSPARC)

Original:

after rounding of the result to std::numeric_limits<T>::digits bits, if the result is tiny, such implementation detects tinyness after rounding (e.g. SuperSparc)

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

3)

wenn die Umwandlung des abgerundeten winzigen Ergebnis subnormale Form in Folge des Verlusts an Genauigkeit detektiert diese Umsetzung denorm Verlust .

Original:

if the conversion of the rounded tiny result to subnormal form resulted in the loss of precision, such implementation detects denorm loss.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Beispiel

Multiplikation des größten subnormale Zahl durch die Anzahl einer Maschine epsilon größer als 1,0 ergibt die winzigen Wert 0x0.fffffffffffff8p-1022 vor der Rundung, aber Normalwert 1p-1022 nach dem Runden .

Original:

Multiplication of the largest subnormal number by the number one machine epsilon greater than 1.0 gives the tiny value 0x0.fffffffffffff8p-1022 before rounding, but normal value 1p-1022 after rounding.

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <iostream>
#include <limits>
#include <cmath>
#include <cfenv>
int main()
{
    double denorm_max = std::nextafter(std::numeric_limits<double>::min(), 0);
    double multiplier = 1 + std::numeric_limits<double>::epsilon();

    std::feclearexcept(FE_ALL_EXCEPT);

    double result = denorm_max*multiplier; // Underflow only if tinyness_before

    if(std::fetestexcept(FE_UNDERFLOW))
        std::cout << "Underflow detected\n";
    else if (std::fetestexcept(FE_INEXACT))
        std::cout << "Inexact result detected\n";

    std::cout << std::hexfloat << denorm_max << " x " << multiplier  <<  " = "
              << result << '\n';
}

Output:

Inexact result detected
0x0.fffffffffffffp-1022 x 0x1.0000000000001p+0 = 0x1p-1022

Siehe auch

identifies the floating-point types that detect loss of precision as denormalization loss rather than inexact result
(public static Mitglied konstanten) [edit]

identifiziert die Denormalisierung Stil durch den Floating-Point-Typ verwendet

Original:

identifies the denormalization style used by the floating-point type

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(public static Mitglied konstanten) [edit]