ICDロゴ

NaN (Not a Number)

【ナン/エヌ・エー・エヌ】

別名
非数 (Not a Number) 【ヒスウ】

最終更新日: 2002/09/26

 浮動小数点演算などにおいて、計算結果が正常な数値ではなくなったことを表すために使われる、特別なパターンの数値表現のこと。例えば0.0で除算しようとしたり、負の数の対数(log)を求めようとした場合などに、エラーであることを示すために、NaNを結果として返す。IEEE 754浮動小数点規格では、指数部のビットがすべて1ならば、NaN(もしくは無限大の数値)であるとみなされる。

 一般的には、演算を行う前に、演算対象となるオペランド(非演算数)が正しい範囲の値を持っているかどうか(値域が有効であるかどうか)を確認してから演算を実行するが、これでは事前の確認のためのオーバーヘッドが大きくなる。逆に演算後に、値域エラーやオーバーフローなどによる例外が起こっていないかどうかを調べる方法もあるが、これもやはり検査のためのオーバーヘッドが少なくない。また、同時に複数の浮動小数点数に対して演算を行うSIMD型の命令では、個別のデータや演算ごとにチェックを行うのは困難であるし、せっかくの高速演算性能を損なうことにもなる。このような演算ごとのエラー・チェックのオーバーヘッドを避け、演算の途中でエラーが発生したことを簡単に検出するためにNaNが使われる。

 演算の過程で何らかのエラーが発生すると、その結果はNaNとなる。また、NaNを引数としてさらに演算を行っても、その結果はNaNとなる。よって1度NaNになれば、その後いくら演算を続けても結果はNaNのままである。このような仕組みのため、演算途中でエラーが発生したかどうかを調べるには、最終結果がNaNであるかどうかを調べるだけでよい。

Copyright (C) 2000-2007 Digital Advantage Corp.

アイティメディアの提供サービス

キャリアアップ