最近、IEEE754 規格のアンダーフローの定義について混乱しています。実装が非正規数をサポートしていない場合、表現できる最小の数は MinNorm = 1.0 * 2^-126 であることがわかっています。どの演算でも、結果が MinNorm より小さい場合、アンダーフローと見なされます。しかし、実装が非正規数をサポートしている場合、表現できる最小の数は MinSubnorm = 1.0 * 2^-149 です。ここで質問があります: 操作の結果が MinNorm より小さい場合、それがアンダーフローの場合は? MinSubnorm よりも小さいのはどうですか?
そして現在、非正規数をサポートする FPU の実装に取り組んでいます。丸め前の結果は厳密に -MinNorm と +MinNorm の間にあり、丸め後は MinNorm よりも小さくなると仮定します (非正規数を使用して表現できます)。私はそれを何と見なしますか?アンダーフローまたは非アンダーフロー? アンダーフローのステータスビットを設定する必要がある場合は?
オンラインでいくつかの情報を見つけましたが、意見は次のように分かれています。
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/underflow.html アンダーフローは、ゼロ以外の最小の大きさよりも小さい演算を実行すると発生します。IEEE 754 単精度では、これは 1.0 x 2-149 未満の大きさ (つまり、絶対値) を持つ値を意味します。
http://en.wikipedia.org/wiki/Arithmetic_underflow 算術アンダーフローは、浮動小数点演算の真の結果が、通常の浮動小数点数として表現可能な最小値よりも小さい (つまり、0 に近い) 場合に発生する可能性があります。ターゲットのデータ型