えぐち@エスアンドイー です。

>>> In message [ruby-math:00266] Re: Infinity(was Polynomial.rb and floating point exception)
    On Thu, 20 Apr 2000 09:03:47 +0900 (JST), gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) said:

> In message "[ruby-math:00265] Re: Infinity(was Polynomial.rb and floating point exception)"
>     on 00/04/20, "K.Kodama" <kdm / kobe-kosen.ac.jp> writes:
> >[問い] 不定値との比較 <=> や
> >       ∞<=>∞ の扱いはどうしましょうか?
> >      -1,0,1 を返すっていうのは, 結構つらいものがあります.
> 
> この件はむかしえぐちさん議論しましたね…確か NaN を返すのが
> 良いということになったと思います。

この時の ∞ は Float::Infinity 的な(IEE754 の)浮動小数点演算での
無限大でしたが、今回の無限大はより数学的な方(Math::Infinity?)で
関連はあるけど別個の問題だと思います。

> ただ、Mathematica と同じようにInfinity には Directed (実) と 
> Undirected (虚) があるので、必ずしも Comparable とは限らない
> 気がします。複素無限大は<=> を削除した方が良いでしょう。ただ

この場合は、例外を挙げるのが良いように思えます。

> 複素無限大は Complex のインスタンスのような気もしますね…

同感。

> >これで, (1) と (2) はまあ良いとして,
> >勝手に InfinityClass なんて作りましたが,
> >(3) の Float で出る Inf や NaN との整合性をどうとりましょうか?
> >うまくこれを拾って, InfinityClass の方に持ってゆけるか?
> 
> Float の Inf と NaN はどう頑張っても整合しないので、もしやる
> なら IEEE754_NaN IEEE754_Inf といった InfinityClass の定数を
> 持つのがいいと思います。この件はむかし石塚さんと議論したので
> 探してみて下さい。

NaN が返るような演算は、数学的には無効や不定な場合ですので
IEE754 な文脈以外(数学的な文脈)では、基本的に NaN は不要では?

> それとクラス名は InfinityClass より NaNClass とかいうクラス
> にした方がいい気がします。無限大は数でないが、数でないものは
> 無限大とは限らないので。どちらかと言うと Inf と NaN をまとめ
> ない方が良いような気もします。というか、NaN は計算をとめない
> ために IEEE754 で定義されたプラグマティックな概念なので、整
> 数などに馴染むかどうかは不明です。

というわけで、 NaN は IEEE754 に閉じていた方がいいと思います。

あと無限大に、IEEE754 な無限大、スケーラな無限大、復素な無限大
の3つがあると言う感じでしょうか?

	えぐち