Niedomiar zmiennoprzecinkowy
Niedomiar zmiennoprzecinkowy, w skrócie niedomiar[1] (ang. underflow) – stan podczas obliczeń arytmetycznych na liczbach zmiennoprzecinkowych, gdy wartość bezwzględna uzyskanego wyniku jest mniejsza niż najmniejsza liczba większa od zera możliwa do zapisania w rejestrze lub pamięci.
Prostym przykładem wygenerowania niedomiaru zmiennoprzecinkowego jest podniesienie do kwadratu najmniejszej dodatniej liczby zmiennoprzecinkowej. Na przykład dla 32-bitowych liczb zmiennoprzecinkowych w standardzie IEEE 754 można zapisać
Uzyskany wynik nie mieści się w zakresie dopuszczalnych wartości powodując niedomiar.
Sposoby obsługi niedomiaru[edytuj | edytuj kod]
Wystąpienie niedomiaru nie jest błędem krytycznym[2]. Powoduje jedynie zmniejszenie dokładności obliczeń[3], lecz obliczenia mogą być kontynuowane[2]. Jego obsługa może być następująca:
- Zwracanym wynikiem jest zero[1].
- Zwracany wynik jest w postaci nieznormalizowanej[4].
- Generowany jest wyjątek[3] jako sygnał utraty dokładności.
- Generowany jest błąd[5], a program jest przerywany.
Zobacz też[edytuj | edytuj kod]
Przypisy[edytuj | edytuj kod]
- ↑ a b Butryło 2012 ↓, s. 11.
- ↑ a b Butryło 2012 ↓, s. 13.
- ↑ a b FP Exceptions - The GNU C Library [online] [dostęp 2013-05-05] (ang.).
- ↑ Liczby zmiennoprzecinkowe [online] [dostęp 2013-05-05] [zarchiwizowane z adresu 2013-05-05] .
- ↑ Andrzej Marciniak , Turbo Pascal 5.5, Poznań: Wydawnictwo NAKOM, 1991, s. 537, ISBN 83-85060-20-0 .
Bibliografia[edytuj | edytuj kod]
- Bogusław Butryło , Standard IEEE 754. Przetwarzanie liczb zmiennoprzecinkowych, Białystok 2012 [dostęp 2013-05-05] [zarchiwizowane z adresu 2013-05-05] .
Linki zewnętrzne[edytuj | edytuj kod]
- Dan Zuras , Re: question about underflow detection [online], 11 sierpnia 2011 [dostęp 2013-05-05] [zarchiwizowane z adresu 2013-05-05] (ang.).