特殊値

このトピックでは、インテル® コンパイラーがサポートする IEEE 浮動小数点 REAL の特殊値について簡単に説明します。

符号付きゼロ

インテル® Fortran コンパイラーは、デフォルトでゼロを符号付きとして処理します。ゼロの符号は、ゼロ以外の数値の符号と同じです。SIGN 組み込み関数の第 2 引数にゼロを使用した場合、ゼロの符号が渡されます。ただし、比較では +0 は -0 と等しいものとして扱われます。

符号付きゼロは、特定の数値解析アルゴリズムで役立ちますが、ほとんどのアプリケーションではゼロの符号は処理されません。-0.0 は書式付き入力として受け付けられますが、-sasume minus0 コンパイラー・オプションが使用された場合のみ、書式付き出力として出力されます。

正規化されていない数

正規化されていない数 (デノーマル) は、正規化された、正の最小値と負の最小値の間におけるギャップを埋めます。そうでない場合は、その間には +/- 0 しか存在しないことになります。正規化されていない数は、漸次アンダーフロー (gradual underflow) を許容することで演算可能な範囲を拡張します。

IA-32 アーキテクチャー・ベース・システムは、正規化されていないオペランドの状態フラグをサポートします。これは、どのフラグがいつ設定されるかにより、浮動小数点演算への少なくとも 1 つの入力オペランドが正規化されていないことを意味します。アンダーフロー状態フラグは、数値の精度が失われ、非正規化されるときに設定されます。

正規化されていない値は、書式付き I/O で読み取りおよび出力が可能です。

符号付き無限大

無限大は、大きい絶対値を持つオペランドに限られたケースでの算術の結果です。これにより、オーバーフローが発生した際に処理を続行することができます。無限大の符号は、有限の数が無限大の値に近づく過程で、その有限の数に同じ操作を行った結果として得られる符号です。

状態フラグを取得することで、オーバーフローから生じた無限大と、ゼロによる除算の結果として生じた無限大を区別することができます。インテル® コンパイラーは、デフォルトで無限大を符号付きとして扱います。+Infinity (正の無限大) および -Infinity (負の無限大) は、書式付き入力として受け付けられます。これらの文字列は、書式付き出力として出力されます。

非数字の値

非数 (NaN) は、無効な演算による結果です。例えば、0/0 および SQRT(-1) の結果は NaN です。一般に、NaN が関与する演算の結果は、NaN になります。NaN の小数部は指定されていないため、さまざまな NaN が考えられます。インテル® プロセッサーは、すべての NaN を同じものとして扱いますが、2 つの異なる形式を用意しています。

浮動小数点ハードウェアは、代入演算を含む多くの算術演算中、シグナル型 NaN をクワイエット型 NaN に変更します。無効な例外が発行されることがありますが、結果の浮動小数点値はクワイエット型 NaN になります。演算により、無効な例外が発生し、シグナル型 NaN を返されることがありますが、例外がトラップされない場合、後続の処理によってシグナル型 NaN がクワイエット型 NaN に変換されます。

Fortran バイナリーおよび書式なし入力/出力では、処理する際、値の内部表現を変更しません。そのため、シグナル型 NaN および クワイエット型 NaN は実数データに読み込まれ、バイナリー形式でファイルに出力されます。'NaN' は書式付き入力として受け付けられ、クワイエット型 NaN になります。また、'NaN' は、シグナル型 NaN およびクワイエット型 NaN の両方に対して書式付き出力で出力されます。

関連情報


このヘルプトピックについてのフィードバックを送信

© 1996-2010 Intel Corporation. 無断での引用、転載を禁じます。