Signaling NaNとQuiet NaN

IEEE754-1985は,Signaling NaNとQuiet NaNが少なくともひとつずつは存在すると定義している([1] 3.1 Sets of Values). [インテルはマニュアルで,“Signaling NaN”を“SNaN”,“Quiet NaN”を“QNaN”と表記しているようだ. 適当な訳語を考えるのも面倒だし,いちいちSignaling/Quietと書くのも面倒なので, この文書でもインテルにならって“SNaN”および“QNaN”と表記することとする.]

Signaling NaN(SNaN)

不正演算例外を発生させる. Signaling NaNは,例えば,未初期化の値であるとか,複素変換(complex-affine)無限大,極端に大きい値であるとか, とにかく規格外の値であることを意味するために使うことができる. [この例,未初期化の値以外は何を言われてるかわかってません.どういう意味かご存知の型おられたら教えてくだしぃ.]

Quiet NaN(QNaN)

ほとんどすべての算術演算において 例外を発生させずにを通じて伝播していくのが特徴. Quiet NaNは不正なデータまたは演算結果から継承された遡及的な診断情報(retrospective diagnostic information)を保持するために使うことを想定している. [仮数部はいろんな値をとることができるため,この部分の各ビットに意味を付与して診断情報を伝達するというような使い方を想定しているのだと思う.] Quiet NaNの具体的な使用方法や意味合いは処理系作成者が自由に任されているが,基本的にはどこかで不正な演算が行われたことを意味していると考えてよいだろう. この診断情報は,算術演算および浮動小数点形式変換を通じて保持され,伝播されていく必要がある.


はたいたかし
2004-01-19 初稿
2006-10-30 改訂3