前田です。

In message "[ruby-list:7074] Re: MP [Re: infinity]"
石塚圭樹 <keiju / rational.com> wrote:

|# でも, Float::Infの比較回りはBUGっているけど..

なぜかわかりました。
Rubyだと<=>で比較していますが、NaNなどの場合にはまずいですね。

static VALUE
flo_cmp(x, y)
    VALUE x, y;
{
    double a, b;
    ...
    if (a == b) return INT2FIX(0);
    if (a > b) return INT2FIX(1);
    return INT2FIX(-1);
}

これだと1 < NaN,1 == NaN,1 > NaNのすべてをfalseにするのは無理ですね。
演算ごとに全部定義するしかないのかな...。

-- 
前田 修吾