Berücksichtigen gcc's __float128 Gleitkommazahlen den aktuellen Rundungsmodus?

9

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?

    
Walter Mascarenhas 23.09.2014, 06:39
quelle

1 Antwort

2

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: Ссылка

Arbeitsbeispiel

Beispielcode und Ausgabe

%Vor%

Ausgänge:

%Vor%     
oo_miguel 30.10.2015 09:12
quelle

Tags und Links