Erweiterte Präzision - Extended precision

Erweiterte Genauigkeit bezieht sich auf Gleitkommazahlenformate , die eine höhere Genauigkeit als die grundlegenden Gleitkommaformate bieten . Formate mit erweiterter Genauigkeit unterstützen ein Basisformat, indem Rundungs- und Überlauffehler in Zwischenwerten von Ausdrücken im Basisformat minimiert werden. Im Gegensatz zu erweiterter Präzision , beliebige Genauigkeit arithmetische bezieht sich auf Implementierungen von vielen größeren numerischen Typen (mit einer Speicherzahl , dass in der Regel nicht eine Zweierpotenz ist) mit einem speziellen Software (oder selten Hardware).

Erweiterte Präzisionsimplementierungen

Es gibt eine lange Geschichte von erweiterten Gleitkommaformaten, die fast bis in die Mitte des letzten Jahrhunderts zurückreicht. Verschiedene Hersteller haben unterschiedliche Formate für erweiterte Präzision für verschiedene Maschinen verwendet. In vielen Fällen ist das Format der erweiterten Genauigkeit nicht ganz dasselbe wie eine Vergrößerung der gewöhnlichen Formate mit einfacher und doppelter Genauigkeit, die es erweitern soll. In einigen Fällen war die Implementierung lediglich eine softwarebasierte Änderung des Gleitkomma-Datenformats, aber in den meisten Fällen wurde die erweiterte Präzision in Hardware implementiert, die entweder in den Zentralprozessor selbst oder häufiger in die Hardware eines optionaler, angeschlossener Prozessor, genannt „ Floating-Point-Unit “ (FPU) oder „Floating-Point-Prozessor“ ( FPP ), auf den die CPU als schnelles Ein-/Ausgabegerät zugreifen kann.

IBM erweiterte Präzisionsformate

Die 1965 verkaufte IBM 1130 bot zwei Gleitkommaformate: ein 32-Bit-Format "Standardpräzision" und ein 40-Bit-Format "Erweiterte Präzision". Das Standardpräzisionsformat enthält einen 24-Bit -Zweierkomplement- Signifikand, während die erweiterte Präzision einen 32-Bit-Zweierkomplement-Signifikand verwendet. Letzteres Format nutzt die 32-Bit-Integer-Operationen der CPU voll aus. Die Eigenschaft , die in beiden Formaten ist ein 8-Bit - Feld , das die Leistung von zwei enthaltenden vorbelastet durch 128. Gleitpunkt-Rechenoperationen werden durchgeführt durch Software und doppelte Genauigkeit wird nicht unterstützt. Das erweiterte Format belegt drei 16-Bit-Wörter, wobei der zusätzliche Platz einfach ignoriert wird.

Das IBM System/360 unterstützt ein 32-Bit "kurzes" Gleitkommaformat und ein 64-Bit "langes" Gleitkommaformat. Die 360/85 und das Folgesystem System/370 bieten Unterstützung für ein 128-Bit-"erweitertes" Format. Diese Formate werden im aktuellen Design noch unterstützt , wo sie jetzt als „ hexadezimale Gleitkomma “ (HFP)-Formate bezeichnet werden.

Microsoft MBF erweitertes Präzisionsformat

Die Microsoft BASIC- Portierung für die 6502 CPU, etwa in Adaptionen wie Commodore BASIC , AppleSoft BASIC , KIM-1 BASIC oder MicroTAN BASIC , unterstützt seit 1977 eine erweiterte 40-Bit-Variante des Gleitkommaformats Microsoft Binary Format (MBF).

IEEE 754 erweiterte Präzisionsformate

Der Gleitkommastandard IEEE 754 empfiehlt, dass Implementierungen Formate mit erweiterter Genauigkeit bereitstellen. Der Standard spezifiziert die Mindestanforderungen für ein erweitertes Format, aber keine Codierung. Die Kodierung ist die Wahl des Implementierers.

Die IA32- , x86-64- und Itanium- Prozessoren unterstützen ein 80-Bit-"Double-Extended"-Extended-Precision-Format mit einer 64-Bit-Signifikanz. Der Mathe- Coprozessor Intel 8087 war das erste x86- Gerät, das Gleitkomma-Arithmetik in Hardware unterstützte. Es wurde entwickelt, um ein 32-Bit-Format mit einfacher Genauigkeit und ein 64-Bit-Format mit doppelter Genauigkeit zum Codieren und Austauschen von Gleitkommazahlen zu unterstützen. Das temporäre reale (erweiterte) Format wurde nicht entwickelt, um Daten als solche mit höherer Genauigkeit zu speichern, sondern in erster Linie, um die Berechnung von Doppelergebnissen zuverlässiger und genauer zu ermöglichen, indem Überlauf- und Rundungsfehler bei Zwischenberechnungen minimiert werden. Zum Beispiel leiden viele Gleitkommaalgorithmen (zB Exponentiation ) unter einem erheblichen Genauigkeitsverlust, wenn sie unter Verwendung der direktesten Implementierungen berechnet werden. Um solche Probleme zu mildern, wurden die internen Register im 8087 so konzipiert, dass sie Zwischenergebnisse in einem 80-Bit-Format mit "erweiterter Präzision" speichern. Der 8087 wandelt Zahlen automatisch in dieses Format um, wenn Gleitkommaregister aus dem Speicher geladen werden, und konvertiert auch Ergebnisse zurück in die konventionelleren Formate, wenn die Register wieder in den Speicher gespeichert werden. Damit Zwischenergebnisse von Teilausdrücken in Scratch-Variablen mit erweiterter Präzision gespeichert und über Anweisungen in Programmiersprachen hinweg fortgesetzt werden können und anderweitig unterbrochene Berechnungen dort fortgesetzt werden können, wo sie unterbrochen wurden, bietet es Befehle, die Werte zwischen diesen internen Registern und dem Speicher übertragen, ohne eine Konvertierung durchzuführen, was daher ermöglicht den Zugriff auf das erweiterte Format für Berechnungen – auch das Problem der Genauigkeit von Funktionen solcher Zahlen wird neu belebt, jedoch mit höherer Genauigkeit.

Die Gleitkommaeinheiten (FPU) auf allen nachfolgenden x86- Prozessoren haben dieses Format unterstützt. Als Ergebnis kann Software entwickelt werden, die sich die höhere Präzision dieses Formats zunutze macht. William Kahan , ein Hauptdesigner der x87-Arithmetik und der erste Vorschlag zum IEEE 754-Standard, stellt zur Entwicklung des x87-Gleitkomma fest: "Ein erweitertes Format so breit wie wir es gewagt haben (80 Bit) Das interne Dezimalformat wird in den 10 Dezimalrechnern von Hewlett-Packard verwendet." Außerdem Kahan stellt fest , dass 64 Bits war die breiteste Signifikanden , über die Übertragsfortpflanzungs ohne Erhöhung der Zykluszeit auf der 8087 durchgeführt werden konnte, und dass die erweiterte x87 - Präzision wurde auf höhere Präzision in Zukunft Prozessoren sein erweiterbar konzipiert: „Für jetzt die 10 -Byte erweiterten Format ein tolerierbarer Kompromiss zwischen dem Wert der besonders genaue Arithmetik ist und der Preis , den sie von der Umsetzung schnell zu laufen, sehr bald zwei weitere Bytes an Präzision wird erträglich geworden, und schließlich ein 16 - Byte - Format ... diese Art von. Die schrittweise Entwicklung hin zu einer größeren Genauigkeit war bereits in Sicht, als der IEEE-Standard 754 für Gleitkomma-Arithmetik formuliert wurde."

Die mathematischen Coprozessoren Motorola 6888x und die Prozessoren Motorola 68040 und 68060 unterstützen denselben 64-Bit- Significand -Extended-Precision-Typ (ähnlich dem Intel-Format, jedoch aufgefüllt auf ein 96-Bit-Format mit 16 ungenutzten Bits zwischen den Exponenten- und Signifikand-Feldern). Die nachfolgenden Coldfire- Prozessoren unterstützen dieses 96-Bit-Format mit erweiterter Präzision nicht.

Der mathematische Coprozessor FPA10 für frühe ARM- Prozessoren unterstützt ebenfalls diesen Typ mit erweiterter Genauigkeit (ähnlich dem Intel-Format, obwohl auf ein 96-Bit-Format aufgefüllt mit 16 Nullbits zwischen den Vorzeichen- und Exponentenfeldern eingefügt), jedoch ohne korrekte Rundung.

Die 80-Bit-Formate x87 und Motorola 68881 erfüllen die Anforderungen des IEEE 754 Double Extended-Formats, ebenso wie das IEEE 754 128-Bit- Format.

x86 erweitertes Präzisionsformat

Das x86-Format mit erweiterter Präzision ist ein 80-Bit-Format, das erstmals im Intel 8087 Math Coprozessor implementiert wurde und von allen Prozessoren unterstützt wird, die auf dem x86-Design basieren und eine Gleitkommaeinheit (FPU) enthalten. Dieses 80-Bit-Format verwendet ein Bit für das Vorzeichen des Signifikanten, 15 Bits für das Exponentenfeld (dh den gleichen Bereich wie das 128-Bit- Vierfachpräzisions-IEEE 754-Format ) und 64 Bits für den Signifikanden. Das Exponentenfeld ist um 16383 vorgespannt , was bedeutet, dass 16383 vom Wert im Exponentenfeld subtrahiert werden muss, um die tatsächliche Potenz von 2 zu berechnen. Ein Exponentenfeldwert von 32767 (alle fünfzehn Bits 1 ) ist reserviert, um die Darstellung zu ermöglichen von Sonderzuständen wie Unendlich und Not a Number . Wenn das Exponentenfeld null ist, ist der Wert eine denormale Zahl und der Exponent von 2 ist −16382.

X86 Extended Floating Point Format.svg

In der folgenden Tabelle ist " s " der Wert des Vorzeichenbits (0 bedeutet positiv, 1 bedeutet negativ), " e " ist der Wert des Exponentenfeldes interpretiert als positive ganze Zahl und " m " ist der Signifikand interpretiert als eine positive Binärzahl, bei der sich der Binärpunkt zwischen den Bits 63 und 62 befindet. Das " m "-Feld ist die Kombination der Ganzzahl- und Bruchteile im obigen Diagramm.

Interpretation der Felder eines x86 Extended Precision Wertes
Exponent Bedeutung Bedeutung
Alle Nullen Bit 63 Bits 62-0
Null Null Null. Das Vorzeichenbit gibt das Vorzeichen der Null an.
Nicht null Denormal. Der Wert ist (−1) s × m × 2 −16382
Einer Irgendetwas Pseudodenormal. 80387 und höher interpretieren diesen Wert richtig, generieren ihn jedoch nicht. Der Wert ist (−1) s × m × 2 −16382
Alle Einsen Bit 63,62 Bits 61-0
00 Null Pseudo-Unendlichkeit. Das Vorzeichenbit gibt das Vorzeichen der Unendlichkeit an. Die 8087 und 80287 behandeln dies als Infinity. Der 80387 und später behandeln dies als ungültigen Operanden.
Nicht null Pseudo keine Zahl. Das Vorzeichenbit ist bedeutungslos. Die 8087 und 80287 behandeln dies als Signalisierung, nicht als Nummer. Der 80387 und später behandeln dies als ungültigen Operanden.
01 Irgendetwas Pseudo keine Zahl. Das Vorzeichenbit ist bedeutungslos. Die 8087 und 80287 behandeln dies als Signalisierung, nicht als Nummer. Der 80387 und später behandeln dies als ungültigen Operanden.
10 Null Unendlichkeit. Das Vorzeichenbit gibt das Vorzeichen der Unendlichkeit an. Die 8087 und 80287 behandeln dies als Signalisierung, nicht als Nummer. Die Coprozessoren 8087 und 80287 verwendeten die Pseudo-Unendlich-Darstellung für Unendlichkeiten.
Nicht null Signalisierung Keine Zahl, das Vorzeichenbit ist bedeutungslos.
11 Null Gleitkomma Indefinite, das Ergebnis ungültiger Berechnungen wie Quadratwurzel einer negativen Zahl, Logarithmus einer negativen Zahl, 0/0, Unendlich / Unendlich, Unendlich mal 0 und andere, wenn der Prozessor so konfiguriert wurde, dass er keine Ausnahmen generiert für ungültige Operanden. Das Vorzeichenbit ist bedeutungslos. Dies ist ein Sonderfall einer Quiet Not a Number.
Nicht null Quiet Not a Number, das Vorzeichenbit ist bedeutungslos. Die 8087 und 80287 behandeln dies als Signalisierung, nicht als Nummer.
Alle anderen Werte Bit 63 Bits 62-0
Null Irgendetwas Unnormal. Wird nur auf 8087 und 80287 generiert. 80387 und höher behandeln dies als ungültigen Operanden. Der Wert ist (−1) s × m × 2 e −16383
Einer Irgendetwas Normalisierter Wert. Der Wert ist (−1) s × m × 2 e −16383

Im Gegensatz zu den Formaten mit einfacher und doppelter Genauigkeit verwendet dieses Format kein implizites/ verstecktes Bit . Stattdessen enthält Bit 63 den ganzzahligen Teil des Signifikanten und die Bits 62-0 enthalten den Bruchteil. Bit 63 wird bei allen normalisierten Zahlen 1 sein. Dieses Design hatte bei der Entwicklung des 8087 mehrere Vorteile :

  • Berechnungen können etwas schneller abgeschlossen werden, wenn alle Bits des Signifikanten im Register vorhanden sind.
  • Ein 64-Bit-Signifikand bietet eine ausreichende Genauigkeit, um Genauigkeitsverluste zu vermeiden, wenn die Ergebnisse in den meisten Fällen wieder in das Format mit doppelter Genauigkeit konvertiert werden.
  • Dieses Format bietet einen Mechanismus zum Anzeigen von Präzisionsverlusten aufgrund von Unterlauf, der durch weitere Operationen übertragen werden kann. Zum Beispiel kann die Berechnung 2 × 10 -4930 × 3 × 10 -10 × 4 × 10 20 erzeugt das Zwischenergebnis 6 × 10 -4940 worin a denormal und beinhaltet auch Präzisionsverlust. Das Produkt aller Terme ist 24×10 –4920, was als normalisierte Zahl dargestellt werden kann. Der 80287 könnte diese Berechnung abschließen und den Genauigkeitsverlust anzeigen, indem er ein "unnormales" Ergebnis zurückgibt (Exponent nicht 0, Bit 63 = 0). Prozessoren seit dem 80387 erzeugen keine Unnormalen mehr und unterstützen keine unnormalen Eingaben in Operationen. Sie erzeugen eine Denormalisierung, wenn ein Unterlauf auftritt, erzeugen jedoch ein normalisiertes Ergebnis, wenn nachfolgende Operationen an der Denormalisierung normalisiert werden können.

Einführung in die Verwendung

Das 80-Bit-Gleitkommaformat war 1984 weit verbreitet, nach der Entwicklung von C, Fortran und ähnlichen Computersprachen, die zunächst nur die üblichen 32- und 64-Bit-Gleitkommagrößen boten. Auf dem x86-Design unterstützen die meisten C- Compiler jetzt eine erweiterte 80-Bit-Genauigkeit über den Typ long double , und dies wurde in den C99 / C11- Standards (IEC 60559 Gleitkommaarithmetik (Annex F)) spezifiziert . Compiler auf x86 für andere Sprachen unterstützen oft auch erweiterte Präzision, manchmal über nicht standardmäßige Erweiterungen: Turbo Pascal bietet beispielsweise einen extendedTyp an, und mehrere Fortran- Compiler haben einen REAL*10Typ (analog REAL*4und REAL*8). Solche Compiler enthalten typischerweise auch mit erweiterter Genauigkeit mathematische Subroutinen , wie Quadratwurzel und trigonometrischen Funktionen , in den Standardbibliotheken .

Arbeitsbereich

Das 80-Bit-Gleitkommaformat hat einen Bereich (einschließlich Subnormalen ) von ungefähr 3,65 × 10 –4951 bis 1,18 × 10 4932 . Obwohl log 10 (2 64 ) ≅ 19,266, wird dieses Format normalerweise so beschrieben, dass es ungefähr achtzehn signifikante Stellen der Genauigkeit liefert (der Boden von log 10 (2 63 ), die minimale garantierte Genauigkeit). Die Verwendung von Dezimal, wenn von Binär gesprochen wird, ist unglücklich, da die meisten Dezimalbrüche wiederkehrende Folgen in Binär sind, genau wie 2/3 in Dezimal. Somit wird ein Wert wie 10,15 binär als Äquivalent zu 10,1499996185 usw. in dezimal für REAL*4 dargestellt, aber 10,15000000000000035527 usw. in REAL*8: Die Interkonvertierung beinhaltet eine Approximation mit Ausnahme der wenigen Dezimalbrüche, die einen exakten Binärwert darstellen, z. B. 0,625. Für REAL*10 ist die Dezimalzeichenfolge 10.1499999999999999996530553usw. Die letzten 9 Ziffern sind die achtzehnte Nachkommastelle und damit die zwanzigste signifikante Ziffer der Zeichenfolge. Grenzen bei der Umwandlung zwischen Dezimal und Binär für das 80-Bit-Format können wie folgt angegeben werden: Wenn eine Dezimalzeichenfolge mit höchstens 18 signifikanten Stellen korrekt auf einen binären 80-Bit-Gleitkommawert nach IEEE 754 (wie bei der Eingabe) gerundet wird, dann zurück in dieselbe Anzahl signifikanter Dezimalstellen umgewandelt (wie bei der Ausgabe), dann stimmt die letzte Zeichenfolge genau mit dem Original überein; Wenn umgekehrt ein 80-Bit-IEEE 754-Binär-Gleitkommawert korrekt konvertiert und (nächstmöglich) auf eine Dezimalzeichenfolge mit mindestens 21 signifikanten Dezimalstellen gerundet wird und dann wieder in das Binärformat konvertiert wird, stimmt er genau mit dem Original überein. Diese Näherungen sind besonders problematisch, wenn der beste Wert für Konstanten in Formeln mit hoher Genauigkeit angegeben wird, wie er über Arithmetik mit beliebiger Genauigkeit berechnet werden könnte .

Bedarf für das 80-Bit-Format

Ein bemerkenswertes Beispiel für die Notwendigkeit eines Minimums von 64 Bits an Genauigkeit im Signifikand des Formats mit erweiterter Genauigkeit ist die Notwendigkeit, Genauigkeitsverluste zu vermeiden, wenn eine Exponentiation an Werten mit doppelter Genauigkeit durchgeführt wird . Die x86- Gleitkommaeinheiten bieten keinen Befehl, der direkt eine Exponentiation durchführt . Stattdessen stellen sie eine Reihe von Anweisungen bereit, die ein Programm nacheinander verwenden kann, um eine Exponentiation mit der Gleichung durchzuführen:

Um Genauigkeitsverluste zu vermeiden, müssen die Zwischenergebnisse " log 2 ( x ) " und " y · log 2 ( x ) " mit viel höherer Genauigkeit berechnet werden, da effektiv sowohl der Exponenten- als auch der Signifikandenkörper von x in die Bedeutungsfeld des Zwischenergebnisses. Anschließend wird das Signifikandenfeld des Zwischenergebnisses in das Exponenten- und Signifikandenfeld des Endergebnisses aufgeteilt, wenn 2 Zwischenergebnisse berechnet werden. Die folgende Diskussion beschreibt diese Anforderung detaillierter.

Mit ein wenig Auspacken kann ein IEEE 754 Double-Precision- Wert wie folgt dargestellt werden:

wobei s das Vorzeichen des Exponenten (entweder 0 oder 1) ist, E der unverzerrte Exponent ist, der eine ganze Zahl im Bereich von 0 bis 1023 ist, und M der Signifikand ist, der ein 53-Bit-Wert ist, der in den Bereich 1 . fällt M <2 . Negative Zahlen und Null können ignoriert werden, da der Logarithmus dieser Werte undefiniert ist. Für die Zwecke dieser Diskussion hat M keine 53 Bit Genauigkeit, da es auf größer oder gleich eins beschränkt ist, dh das versteckte Bit zählt nicht zur Genauigkeit (Beachten Sie, dass in Situationen, in denen M kleiner als 1 ist, der Wert tatsächlich eine Denormalität und kann daher bereits einen Präzisionsverlust erlitten haben (diese Situation würde den Rahmen dieses Artikels sprengen).

Nimmt man den Logarithmus dieser Darstellung einer Zahl mit doppelter Genauigkeit und vereinfacht dies zu folgendem Ergebnis:

Dieses Ergebnis zeigt, dass beim Logarithmus einer Zahl zur Basis 2 das Vorzeichen des Exponenten des ursprünglichen Werts zum Vorzeichen des Logarithmus wird, der Exponent des ursprünglichen Werts zum ganzzahligen Teil des Vorzeichens des Logarithmus und das Vorzeichen von der ursprüngliche Wert wird in den Nachkommateil des Signifikanten des Logarithmus umgewandelt.

Da E eine ganze Zahl im Bereich von 0 bis 1023 ist, werden bis zu 10 Bits links vom Basispunkt benötigt, um den ganzzahligen Teil des Logarithmus darzustellen. Da M in den Bereich 1 ≤ M < 2 fällt, fällt der Wert von log 2 M in den Bereich 0 ≤ log 2 M < 1, sodass rechts vom Wurzelpunkt mindestens 52 Bits benötigt werden, um den Bruchteil von darzustellen der Logarithmus. Die Kombination von 10 Bit links vom Radixpunkt mit 52 Bits rechts vom Radixpunkt bedeutet, dass der signifikante Teil des Logarithmus mit einer Genauigkeit von mindestens 62 Bit berechnet werden muss. In der Praxis erfordern Werte von M weniger als 53 Bits rechts vom Radixpunkt und Werte von M weniger als 54 Bits rechts vom Radixpunkt, um Genauigkeitsverluste zu vermeiden. Ausbalancieren dieser Anforderung für zusätzliche Genauigkeit rechts vom Radixpunkt erfordern Exponenten von weniger als 512 nur 9 Bits links vom Radixpunkt und Exponenten von weniger als 256 erfordern nur 8 Bits links vom Radixpunkt.

Der letzte Teil der Potenzierungsberechnung ist die Berechnung von 2 Zwischenergebnissen . Das "Zwischenergebnis" besteht aus einem ganzzahligen Teil " I " addiert zu einem Bruchteil " F ". Wenn das Zwischenergebnis negativ ist, ist eine leichte Anpassung erforderlich, um einen positiven Bruchteil zu erhalten, da sowohl " I " als auch " F " negative Zahlen sind.

Bei positiven Zwischenergebnissen:

Bei negativen Zwischenergebnissen:

Somit wird der ganzzahlige Teil des Zwischenergebnisses (" I " oder " I −1 ") plus ein Bias zum Exponenten des Endergebnisses und transformierter positiver Bruchteil des Zwischenergebnisses: 2 F oder 2 1+ F wird zum Signifikanz von das Endergebnis. Um dem Endergebnis eine Genauigkeit von 52 Bit zu verleihen, muss der positive Bruchteil auf mindestens 52 Bit gehalten werden.

Zusammenfassend lässt sich sagen, dass die genaue Anzahl von Bits an Genauigkeit, die im Signifikanten des Zwischenergebnisses benötigt wird, etwas datenabhängig ist, aber 64 Bits sind ausreichend, um Genauigkeitsverluste bei der überwiegenden Mehrheit der Exponentiationsberechnungen, die Zahlen mit doppelter Genauigkeit beinhalten, zu vermeiden .

Die Anzahl von Bits, die für den Exponenten des Formats mit erweiterter Genauigkeit benötigt werden, ergibt sich aus der Anforderung, dass das Produkt zweier Zahlen mit doppelter Genauigkeit bei der Berechnung unter Verwendung des erweiterten Formats nicht überlaufen darf. Der größtmögliche Exponent eines Wertes mit doppelter Genauigkeit ist 1023, also ist der Exponent des größtmöglichen Produkts zweier Zahlen mit doppelter Genauigkeit 2047 (ein 11-Bit-Wert). Das Hinzufügen eines Bias, um negative Exponenten zu berücksichtigen, bedeutet, dass das Exponentenfeld mindestens 12 Bit breit sein muss.

Die Kombination dieser Anforderungen: 1 Bit für das Vorzeichen, 12 Bit für den Bias-Exponenten und 64 Bit für den Signifikanten bedeutet, dass das Format mit erweiterter Genauigkeit mindestens 77 Bit benötigen würde. Konstruktionsüberlegungen führten zur endgültigen Definition des 80-Bit-Formats (insbesondere erfordert der IEEE 754-Standard, dass der Exponentenbereich eines Formats mit erweiterter Genauigkeit dem des nächstgrößeren Quad- Präzisionsformats entspricht, das 15 Bit beträgt).

Ein weiteres Beispiel für Berechnungen, die von der erweiterten Präzisionsarithmetik profitieren, sind iterative Verfeinerungsschemata , die verwendet werden, um indirekt Fehler zu beseitigen, die sich in der direkten Lösung während der typischerweise sehr großen Anzahl von Berechnungen für die numerische lineare Algebra angesammelt haben.

Sprachunterstützung

  • Einige C / C++- Implementierungen (zB GNU Compiler Collection (GCC), Clang , Intel C++ ) implementieren die long doubleVerwendung von 80-Bit-Gleitkommazahlen auf x86-Systemen. Dies ist jedoch implementierungsdefiniertes Verhalten und wird vom Standard nicht gefordert, aber erlaubt, wie für IEEE 754 Hardware im C99 Standard "Annex F IEC 60559 Gleitkommaarithmetik" spezifiziert . GCC bietet auch __float80und __float128Typen.
  • Einige Common Lisp- Implementierungen (zB CMU Common Lisp , Embeddable Common Lisp ) implementieren die long-floatVerwendung von 80-Bit-Gleitkommazahlen auf x86-Systemen.
  • Die Programmiersprache D implementiert realdie größte in Hardware implementierte Gleitkommagröße, 80 Bit für x86- CPUs oder doppelte Genauigkeit, je nachdem, welcher Wert größer ist.
  • Object Pascal ( Delphi ) hat zusätzlich zu Single (32-Bit) und Double (64-Bit) einen Extended- Typ (80-Bit für traditionelle 32-Bit-Ziele, wobei Padding und Plattform die Größe ändern können ).
  • Das Racket -Laufzeitsystem stellt den 80-Bit-Extflonum-Datentyp auf x86-Systemen bereit.
  • Die Swift- Standardbibliothek stellt den Float80Datentyp bereit .
  • Die Power BASIC Compiler stellt EXToder EXTENDED10 Byte erweiterter Genauigkeit Gleitkomma-Datentyp.

Siehe auch

Fußnoten

Verweise