2013-04-04 13 views
7

realmin "IEEEの倍精度で最小の正の正規化浮動小数点数を返します"。 eps(X) "はABS(X)からX35と同じ精度の浮動小数点数が次に大きい までの正の距離です。なぜrealmin> eps(0)ですか?

上記のドキュメントを正しく解釈している場合は、realmin - 表現できる最小の正数 - はeps (0)より小さくなければなりません。しかし:

さらに小さい 明らか
>> realmin; % 2.2251e-308 
>> eps(0); % 4.9407e-324 

eps(0)、あまりにも表現することができます。誰かが私にこれを説明できますか?

答えて

10

これは、浮動小数点の問題です。 denormal numbersで読んでください。

簡単に言うと、realminは、最小の正のを正規化した浮動小数点数を返します。しかし、これよりも小さく、依然として浮動小数点で表現可能な非正規数を持つことは可能です。これはeps(0)が返すものです。デノーマル数

クイック説明は、2進浮動小数点数は次のようになります

1.abcdef * 2^M 

abcdefgはそれぞれ0または1であり、そしてMの範囲の数である-1022 < = M < = 1023である。これらは、正規化浮動小数点数と呼ばれる。可能な最小の正規化浮動小数点数は1 * 2^(-1022)です。

デノーマル数は、それらが可能な限り最小の正規化浮動小数点数よりも小さい値を取ることができ、この

0.abcdef * 2^(-1022) 

ように見えます。デノーマル数は、-realminrealminの間で直線的に補間されます。

2

は、おそらくそれは定義の問題であり、これは私がEPSの文書に見るものです:

For all X of class double such that abs(X) <= realmin, eps(X) = 2^(-1074) 
関連する問題