Computerarithmetik

Für sehr große x tritt bei der Gleitkommaberechnung von √(x + 1) − √x Auslöschung auf. Welche Umformung liefert das Ergebnis genau?

  1. ABerechnung als 1 ÷ (√(x + 1) + √x)
  2. BBerechnung als √(x + 1 − x)
  3. C√(x + 1) und √x jeweils in doppelte Genauigkeit umwandeln und mit demselben Ausdruck subtrahieren
Antwort und Erläuterung anzeigen

Antwort: A. Berechnung als 1 ÷ (√(x + 1) + √x)

√(x + 1) und √x sind nahezu gleich, sodass sich bei direkter Subtraktion die oberen Stellen aufheben. Multipliziert man Zähler und Nenner mit √(x + 1) + √x, ergibt sich (x + 1 − x) ÷ (√(x + 1) + √x) = 1 ÷ (√(x + 1) + √x); die Subtraktion naher Zahlen entfällt, und die Berechnung wird genau. √(x + 1 − x) ergäbe 1 und ist als Ausdruck falsch. Doppelte Genauigkeit verbessert zwar, doch wird x noch größer, tritt dasselbe Problem auf; sie ist daher keine grundsätzliche Gegenmaßnahme.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Computerarithmetik

  1. Bei einfacher Genauigkeit bleibt das Ergebnis 100 Millionen (10⁸), wenn man 1 addiert. Welche Erklärung dieses Phänomens ist korrekt?
  2. Was ist der Zweck der Kahan-Summation (Summation mit Korrektur), die beim Aufsummieren vieler Gleitkommazahlen verwendet wird?
  3. Welchen Vorteil hat die Berechnung von a × b + c mit einem FMA-Befehl (Fused Multiply-Add)?
  4. Was ist der Hauptgrund, warum bfloat16 beim KI-Training verwendet wird?
  5. Welches bei FP16 (halbe Genauigkeit: 1 · 5 · 10 Bit) beim Training neuronaler Netze leicht auftretende Problem wird durch die Vergrößerung des Verlustwerts um einen Faktor (Loss Scaling) behoben?