2013-04-04 18 views
7

realmin "zwraca najmniejszą dodatnią znormalizowaną liczbę zmiennoprzecinkową w podwójnej precyzji IEEE". eps(X) "jest dodatnią odległością od ABS (X) do następnej większej liczby zmiennoprzecinkowej mangitude o tej samej precyzji co X".Dlaczego jest realmin> eps (0)?

Jeśli poprawnie interpretuję powyższą dokumentację, wówczas realmin - najmniejsza liczba dodatnia, która może być reprezentowana - musi być mniejsza niż eps (0). Ale:

>> realmin; % 2.2251e-308 
>> eps(0); % 4.9407e-324 

Oczywiście eps(0), który jest jeszcze mniejszy, można przedstawić też. Czy ktoś mógłby mi to wyjaśnić?

Odpowiedz

10

To zmiennoprzecinkowych problem. Powinieneś przeczytać na denormal numbers.

W skrócie, realmin zwraca najmniejszą pozytywną liczbę zmiennoprzecinkową znormalizowaną. Ale możliwe są denormalne liczby, które są mniejsze niż to i nadal reprezentowane w postaci zmiennoprzecinkowej, co zwraca wartość.

Szybkie wyjaśnienie liczb Brak reprezentacji

binarny liczbę zmiennoprzecinkową wygląda następująco:

1.abcdef * 2^M 

gdzie abcdefg oznaczają 0 lub 1, a M jest liczbą w zakresie -1022 < = M < = 1023. Nazywane są one liczbami zmiennoprzecinkowymi znormalizowanymi. Najmniejszą możliwą znormalizowaną liczbą zmiennoprzecinkową jest 1 * 2^(-1022).

Numery Brak reprezentacji wygląda następująco

0.abcdef * 2^(-1022) 

więc mogą przyjmować wartości, które są mniejsze niż najmniejszej znormalizowanej liczby zmiennoprzecinkowej. Liczby denormalne interpolują liniowo między -realmin i realmin.

2

Być może jest to kwestia definicji, to co widzę w dokumentacji EPS:

For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074) 
Powiązane problemy