指数部と有効数字の組み合わせの特殊な場合として,規格化された数に加えて,4 形式の特殊値があります。次表に,これらの 5 形式の値を示します。
IEEE浮動小数点値
名前 | 数量 | 指数部 | 有効数字 |
符号付きゼロ | ± 0 | E = E min - 1 | sig = 0 |
規格化されていない数 | ± 0 . sig x 2 E min | E = E min - 1 | sig が 0 でない |
規格化された数 | ± 1 . sig x 2 E | E min <= E <= E max | sig |
符号付き無限大 | ± infinity | E = E max + 1 | sig = 0 |
Not a Number | NaN | E = E max + 1 | sig が 0 でない |
これらの特殊値は次のように解釈されます。
Visual Fortran は,基本設定ではゼロを符号付きとして扱います。ゼロの符号はゼロ以外の数値の符号と同じものです。第 2 引数をゼロとして組込み関数 SIGN を使用すると,ゼロの符号が返されます。ただし,比較では +0 は -0 と等しいものとして扱われます。符号付きゼロは特定の数値解析アルゴリズムで有用ですが,ほとんどの場合ゼロの符号は効果を持ちません。
規格化されていない数 (denormal) は,最も小さい正の数と最も小さい負数間のギャップを埋めます。さもないと,その間には ±0 しか存在しないことになります。規格化されていない数により,拡張倍精度書式での内部的な計算で,中間結果の漸次的なアンダーフローが可能となります。数値が非規格化のために精度を失うと,ステイタス・フラグ (ia32 システムでは,FPU ステイタス・ワード例外欄の精度ビット) が設定されます。
無限大は,大きい絶対値を持つ演算対象の限られた場合での算術を行った結果です。これにより,オーバーフローが起きたときでも処理を続けることができます。無限大の符号は,有限の数が無限大の値に近づく過程で,その有限の数に同じ操作を行った結果として得られる符号です。「浮動小数点のステイタスおよびコントロール・ワードの設定と取得 (ia32 のみ)」の説明に従ってステイタス・フラグを取得することで,オーバーフローから生じた無限大と,ゼロによる除算の結果として生じた無限大を区別することができます。Visual Fortran は,基本設定では無限大を符号付きとして扱います。無限大の出力値は Infinity または -Infinity です。
Not a Number (NaN) は,1 つまたは複数の無効な演算対象が関与する演算から生じます。たとえば,0/0 や SQRT(-1) の結果は NaN です。一般に,NaN が関与する演算は,やはり NaN の結果を生じます。NaN の小数部分の内容は定められていないので,NaN にはさまざまな可能性があります。Visual Fortran はすべての NaN を同じものとして扱いますが,2 つの異なる形式を用意しています。
Signaling NaN:最初の小数ビットが 0 (ゼロ)
Quiet NaN:最初の小数ビットが 1
NaN の出力値は NaN です。