Problem z operacjami arytmetycznymi realizowanymi przez komputery polega na tym, że „po cichu" zakładamy, że argumenty równe są swoim reprezentacjom zmiennoprzecinkowym, oraz, że podczas obliczeń, nie wystąpi ani nadmiar1 ani niedomiar2.
Niech
Mantysa wyniku wyliczana jest przez dodanie do mantysy liczby
Wszystko to wygląda jakoś tak:
Jakość wyniku zależy od możliwości poprawnego zaokrąglenia wyniku. A zatem od liczby bitów, na których zapisywany jest wynik. Gdy jest ich tylko
Jeżeli symbolem
Ogólnie, dla dowolnej operacji
uzyskany (komputerowo) wynik, nieznacznie, różni się od wyniku „prawdziwego".
Wydaje się, że niewielkie (
Rozpatrzmy dwa różne algorytmy wyliczania wartości różnicy kwadratów dwu liczb:
W przypadku gdy
W przypadku drugiego algorytmu:
gdzie
W szczególności, ze względu na algorytm dodawania, gdy
(Wspominałam o tym na zajęciach z Technologii Informacyjnych.)
Konsekwencje tego mogą być bardzo poważne w przypadku numerycznego aproksymowania ilorazem różnicowym, pochodnej funkcji w punkcie. Zamiast otrzymywania coraz to lepszego przybliżenia pochodnej (gdy różnica wartości pomiędzy dwiema wartościami zmiennej niezależnej) dostaniemy wartości nie mające nic wspólnego z pochodną.
Cytowania
IEEE Standard for Floating-Point Arithmetic,
IEEE, 2008. doi:10.1109/IEEESTD.2008.4610935