小林です。

----- Original Message -----
送信者 : Shigeo Kobayashi <shigeo / tinyforest.gr.jp>
件名 : [ruby-math:00057] Re: NaN again


> > 手元ではちゃんと FloatDomainError になります
> >
> ありゃ?
> たぶん、またコンパイラーの差ですね。帰ったら調べてみます。
で、調べてみました。
numeric.c の flo_cmp(x, y) の最後で比較していますが、
ここが、VC++6.0ではだめです。
因みに、a=NaN、b=Finite(たぶん)とすると、VC++6.0では以下
のようになります。
  a == b  --> True
  a>b     --> False
  a<b     --> True
すべて fcomp を使用しているせいです。
VC環境で、正確に評価するには _isnan() を使用する必要が
あるようです。

小林 茂雄
E-Mail: shigeo / tinyforest.gr.jp
Home Page: http://www.tinyforest.gr.jp