NaN
数値関数が入力として NaN を受け取ったとき、どう処理すべきかについては様々な意見がある。1つの見方は、NaN はエラーを示すものとして常に出力に伝播させなければならないというものである。別の見方として、その関数に複数の引数があり、NaN でない引数だけで出力値が決定される場合、その値を返すべきだという考え方もある。IEEE 754 は主に後者の立場で策定されている。例えば、hypot(±∞, qNaN) と hypot(qNaN, ±∞) は +∞ を返す。
例えば冪乗関数 pow(x,y) = x ** y という関数を考えてみよう。0、∞、1 といった式は極限を考えると(∞ × 0 などと同様)不定形(英語版)だが、0の0乗は1と定義すべきだという意見もある。
引数が未定義なら結果も未定義とする場合、pow(1,qNaN) は qNaN を出力すべきである。しかし、一般的な数学ライブラリでは pow(1,y) は任意の実数 y について常に 1 を返す。これは y が無限大であっても同様である。同様に pow(x,0) は x が 0 や無限大であっても 1 を返す。本来不定形であるはずなのに 1 を返す論理的根拠は、ロピタルの定理である。IEEE 754-2008 では、pow(1,qNaN) と pow(qNaN,0) はどちらも 1 を返すべきだとされている。
冪乗関数がより厳密な解釈に従うべきだという立場を考慮し、IEEE 754-2008 では他に2つの冪乗関数を定義している。pown(x, n) は冪指数として整数しか指定できない。powr(x, y) は引数のいずれかが NaN の場合や計算結果が不定形になる場合、常に NaN を返す。
isNaN(x) は渡された値がNaNかどうかを判定する関数であり、x が signaling NaN であっても例外を発生しない。
quiet NaN が演算を通して伝播していくため、計算途中で何度もチェックを入れる必要はなく、最終的に得られた値を調べればよい。ただし、言語や関数によっては NaN を渡されてもそれが計算結果に影響しない場合に黙って普通の浮動小数点数値を返すことがある。例えばどんな数でも0乗すれば1になるので、NaN^0 は 1 と定義することもできる。そのため一般に最終的な値を得るまでの過程で NaN が入り込んでいたかを示す INVALID フラグを調べる必要がある(詳しくは後述の関数定義における NaN節を参照)。
IEEE 754-2008 の6.2節に、引数のうち大きい方あるいは小さい方を返す maxnum と minnum という関数があるが、これらは引数の一方が NaN の場合は常にもう一方の引数を返す。
同様のコンセプトは GNU Octave と MATLAB のNaNツールボックスに実装されている。NaNツールボックスに含まれる統計関数群(平均、標準偏差などの関数)は、NaNを統計データがないことを示すものとみなし、単に NaN を無視して伝播させない。