COMMON LISP JP > Archives > 2011/05/16

2011/05/16 19:17:43 UTCshiro
#
ふーむ、Allegro CLではNaN絡みの比較がIEEE式 (NaNは何とどう比較しても偽) ではなく、独自の解釈をしていることを知った。(1) NaN同士は等しい (= *nan-double* *nan-double*) => t。(2) NaNは他のいかなる数よりも大きい (> *nan-double* 1) => t, (> *nan-double* *infinity-double*) => t etc.
#
これだと全順序関係が保たれるのでNaN絡みの面倒くさい話がなくなる (例えばIEEE754のNaNの流儀では、a != bが真だからといってa < b || a > bとは言えなくなるし、!(a < b) ならば a >= b とも言えなくなる)。
#
唯一の妥協点は*infinity-double*がいかなる数よりも大きいということではなくなってしまうってとこだけど。それで不便が生じそうなケースってすぐには思い当たらないなあ。