IEEE 754-1985では,以下の演算(operation)を不正演算と定義している.
# | 不正演算の内容 |
---|---|
1 | Signaling NaNに対する任意の演算 |
2 | +Inf + -Infなどの無限大に対する加減算 |
3 | 0×Inf |
4 | 0/0およびInf/Inf |
5 | x % 0,Inf % y |
6 | 0より小さい数(負の数)に対する平方根. [IEEE754-1985では,-0の平方根は-0と定義されている([1] 5.2 Square Root,6.3 The Sign Bit).+0の平方根は+0.これは普通の数学の定義.] |
7 | 浮動小数から整数および10進固定小数点数への変換において,オーバフローが起こる場合,浮動小数がInfまたはNaNの場合. つまり変換先の型で適切な表現がない浮動小数に変換しようとした場合.このような場合には例外を発生できない. |
8 | “?”なしの“<”または“>”を含む比較演算で, オペランドが順序付けできない場合(when the operands are unordered). [IEEE754-1985では,比較演算において片方または両方のオペランドがNaNだった場合に,“unordered”という結果になると定義している([1] 5.7 Comparision). 接頭辞“?”がついた比較演算子(例えば“?<”や“?>”など)は,unorderedの状態になっているときには真になると定義されている. 対して“?”なしの比較(例えば“<”や“>”など)はunorderdの状態だと偽となる. ここでは,“<”と“>”を含む比較演算子---つまり“<”“<=”“>=”“>”“<>”“<=>”の6個について 両方のオペランドがNaNだった場合には不正演算とすると定義している.] |