Berücksichtigen die arithmetischen Operationen an Gcc __float128
Gleitkommazahlen den aktuellen Rundungsmodus?
Wenn ich zum Beispiel die C ++ 11-Funktion std::fesetenv
verwende, ändere ich den Rundungsmodus in FE_DOWNWARD
, werden die Ergebnisse arithmetischer Operationen auf __float128
abgerundet?
Wird dies durch die __float128
Spezifikation garantiert?
Ich glaube, es ist garantiert , dass Operationen in __float128
den Rundungsmodus berücksichtigen.
Nach der Dokumentation GNU C Library wird bei Fließkommaberechnungen der Rundungsmodus berücksichtigt.
Laut Handbuch GCC ist __float128
ein Gleitkomma-Typ, der arithmetische Operationen als Division usw. unterstützt.
Daraus folge ich, dass für Operationen auf __float128
der Rundungsmodus berücksichtigt werden muss.
In der Dokumentation GNU C Library steht:
20.6 Rundungsmodi
Fließkommaberechnungen werden intern mit extra durchgeführt Genauigkeit, und dann gerundet, um in den Zieltyp zu passen. Dies sorgt dafür, dass die Ergebnisse so genau sind wie die Eingabedaten. IEEE 754 definiert vier mögliche Rundungsmodi: [...]
Referenz: Ссылка
Im Handbuch GCC steht:
6.11 Zusätzliche Floating-Typen
Als Erweiterung unterstützt GNU C zusätzliche Gleitkommatypen, __float80 und __float128 zur Unterstützung von 80-Bit (XF-Modus) und 128-Bit (TF-Modus) schwebende Typen. Unterstützung für zusätzliche Typen umfasst die Arithmetik Operatoren: addieren, subtrahieren, multiplizieren, dividieren; unäre Arithmetik Betreiber; relationale Operatoren; Gleichheitsoperatoren; [...]
Referenz: Ссылка
Ausgänge:
%Vor%Tags und Links c++ gcc c++11 floating-point