2 Suma

2Sum to algorytm zmiennoprzecinkowy do obliczania dokładnego błędu zaokrąglenia w operacji dodawania zmiennoprzecinkowego.

2Sum i jego wariant Fast2Sum zostały po raz pierwszy opublikowane przez Møllera w 1965 r. Fast2Sum jest często używany domyślnie w innych algorytmach, takich jak algorytmy sumowania z kompensacją ; Algorytm sumowania Kahana został opublikowany po raz pierwszy w 1965 r., A Fast2Sum został później usunięty z niego przez Dekkera w 1971 r. Dla arytmetycznych typu double-double . Wydaje się, że nazwy 2Sum i Fast2Sum zostały zastosowane wstecznie przez Shewchuka w 1997 roku.

Algorytm

Biorąc pod uwagę dwie liczby zmiennoprzecinkowe i , 2Sum oblicza sumę zmiennoprzecinkową i błąd zmiennoprzecinkowy tak, że . Błąd w sobie jest liczbą zmiennoprzecinkową

Wprowadza liczby zmiennoprzecinkowe
Suma wyników i błąd
  1. powrót

Pod warunkiem, że arytmetyka zmiennoprzecinkowa jest poprawnie zaokrąglana do najbliższej (z powiązaniami rozwiązanymi w dowolny sposób), jak jest to domyślne w IEEE 754 i pod warunkiem, że suma nie przepełnia się, a jeśli jest niedopełniona, zmniejsza się stopniowo , można udowodnić, że .

Wariant 2Sum o nazwie Fast2Sum wykorzystuje tylko trzy operacje zmiennoprzecinkowe dla arytmetyki zmiennoprzecinkowej na podstawie 2 lub podstawie 3, przy założeniu, że wykładnik co najmniej tak duży, jak wykładnik , na przykład kiedy :

Wprowadza zmiennoprzecinkowe radix-2 lub radix-3 , co najmniej jeden wynosi zero lub które odpowiednio mają znormalizowane wykładniki mi
Suma wyników i błąd
  1. powrót

przybliżenia błędu, tak że , skalarny itp., aby mieć niski błąd, nawet jeśli dane wejściowe nie są posortowane lub tryb zaokrąglania jest nietypowy. Istnieją również bardziej skomplikowane warianty 2Sum i Fast2Sum dla trybów zaokrąglania innych niż zaokrąglanie do najbliższej.

Zobacz też