Gleitkomma-Fehlerminderung - Floating-point error mitigation

Gleitkomma-Fehlerminderung ist die Minimierung von Fehlern, die dadurch verursacht werden, dass reelle Zahlen im Allgemeinen nicht genau in einem festen Raum dargestellt werden können. Gleitkommafehler können per Definition nicht eliminiert und bestenfalls nur verwaltet werden.

HM Sierra bemerkte in seinem 1956er Patent "Floating Decimal Point Arithmetic Control Means for Calculator":

Somit kann unter bestimmten Bedingungen der Hauptteil der signifikanten Datenziffern außerhalb der Kapazität der Register liegen. Daher kann das erhaltene Ergebnis wenig Bedeutung haben, wenn es nicht völlig falsch ist.

Der 1936 von Zuse entwickelte Z1 war der erste Computer mit Gleitkomma-Arithmetik und damit anfällig für Gleitkomma-Fehler. Frühe Computer mit Betriebszeiten, die in Millisekunden gemessen wurden, waren jedoch nicht in der Lage, große, komplexe Probleme zu lösen, und wurden daher selten von Gleitkommafehlern geplagt. Heutzutage jedoch, da die Leistung von Supercomputersystemen in Petaflops (10 15 ) Gleitkommaoperationen pro Sekunde gemessen wird , ist der Gleitkommafehler ein Hauptproblem für rechnergestützte Problemlöser. Außerdem gibt es zwei Arten von Gleitkommafehlern, Aufhebung und Rundung. Eine Löschung erfolgt, wenn zwei ähnliche Zahlen subtrahiert werden, und eine Rundung erfolgt, wenn signifikante Bits nicht gespeichert werden können und gerundet oder abgeschnitten werden. Der Abbruchfehler ist relativ zum Rundungsfehler exponentiell.

In den folgenden Abschnitten werden die Stärken und Schwächen verschiedener Mittel zur Minderung von Gleitkommafehlern beschrieben.

Numerische Fehleranalyse

Obwohl nicht der primäre Fokus der numerischen Analyse , existiert die numerische Fehleranalyse zur Analyse und Minimierung von Gleitkomma-Rundungsfehlern. Die numerische Fehleranalyse berücksichtigt im Allgemeinen keinen Abbruchfehler.

Monte Carlo Arithmetik

Die Fehleranalyse durch Monte-Carlo-Arithmetik wird erreicht, indem wiederholt kleine Fehler in die Datenwerte eines Algorithmus eingefügt werden und die relative Auswirkung auf die Ergebnisse bestimmt wird.

Erweiterung der Präzision

Die Erweiterung der Genauigkeit ist die Verwendung größerer Darstellungen von reellen Werten als die ursprünglich betrachtete. Der Standard IEEE 754 definiert Präzision als die Anzahl der verfügbaren Stellen, um reelle Zahlen darzustellen. Eine Programmiersprache kann einfache Genauigkeit (32 Bit), doppelte Genauigkeit (64 Bit) und vierfache Genauigkeit (128 Bit) umfassen. Während die Genauigkeitserweiterung die Auswirkungen von Fehlern weniger wahrscheinlich oder weniger wichtig macht, ist die wahre Genauigkeit der Ergebnisse noch unbekannt.

Arithmetik mit variabler Länge

Die Arithmetik mit variabler Länge stellt Zahlen als eine Folge von Ziffern variabler Länge dar, die nur durch den verfügbaren Speicher begrenzt ist. Arithmetische Operationen mit variabler Länge sind beträchtlich langsamer als Gleitkommabefehle mit fester Länge. Wenn keine hohe Leistung, aber hohe Präzision erforderlich ist, kann sich die Arithmetik mit variabler Länge als nützlich erweisen, obwohl die tatsächliche Genauigkeit des Ergebnisses möglicherweise nicht bekannt ist.

Verwendung des Fehlerterms einer Gleitkommaoperation

Der von Knuth und Møller als TwoSum oder 2Sum bekannte Gleitkommaalgorithmus und seine einfachere, aber eingeschränkte Version FastTwoSum oder Fast2Sum (3 Operationen statt 6) erlauben es, den (genauen) Fehlerterm eines Gleitkommawerts zu erhalten Addition auf die nächste gerundet. Man kann auch den (exakten) Fehlerterm einer Gleitkommamultiplikation auf das nächste gerundet in 2 Operationen mit einer FMA erhalten , oder 17 Operationen, wenn die FMA nicht verfügbar ist (mit einem Algorithmus von Dekker). Diese Fehlerterme können in Algorithmen verwendet werden, um die Genauigkeit des Endergebnisses zu verbessern, zB bei Gleitkomma-Entwicklungen oder kompensierten Algorithmen .

Operationen, die das Ergebnis einer Gleitkomma-Addition oder -Multiplikation ergeben, die mit ihrem Fehlerterm auf die nächste gerundet werden (aber sich leicht von den oben genannten Algorithmen unterscheiden), wurden im IEEE 754-2019-Standard standardisiert und empfohlen.

Wahl einer anderen Radix

Das Ändern des Radix, insbesondere von binär zu dezimal, kann in einigen Anwendungen, wie z. B. Finanzanwendungen , helfen, den Fehler zu reduzieren und die Rundung besser zu kontrollieren .

Intervallarithmetik

Intervallarithmetik ist ein Algorithmus zur Begrenzung von Rundungs- und Messfehlern. Der Algorithmus führt zu zwei Gleitkommazahlen, die die Mindest- und Höchstgrenzen für den dargestellten Realwert darstellen.

„Anstatt eine einzelne Gleitkommazahl als Näherung für den Wert einer reellen Variablen im untersuchten mathematischen Modell zu verwenden, erkennt die Intervallarithmetik eine begrenzte Genauigkeit an, indem sie der Variablen eine Menge von reellen Zahlen als mögliche Werte zuordnet. Zur Vereinfachung der Speicherung und Berechnung , diese Sätze sind auf Intervalle beschränkt."

Die Auswertung des arithmetischen Intervallausdrucks kann einen großen Wertebereich liefern und kann die wahren Fehlergrenzen ernsthaft überschätzen.

Gustafsons Unums

Unums ("Universal Numbers") sind eine von John Gustafson vorgeschlagene Erweiterung der Arithmetik variabler Länge . Unums haben Felder variabler Länge für die Exponenten- und Signifikandenlängen , und Fehlerinformationen werden in einem einzelnen Bit, dem ubit, übertragen, das einen möglichen Fehler im niedrigstwertigen Bit des Signifikanden ( ULP ) darstellt.

Die Wirksamkeit von Unums wird von William Kahan in Frage gestellt .

Verweise