ごとけんです

In message "[ruby-math:00057] Re: NaN again"
    on 00/01/18, "Shigeo Kobayashi" <shigeo / tinyforest.gr.jp> writes:
>> >p b<=>a  #               1   -1   0?  (should be NaN?)
>> >p a<=>b  #              -1    1   0?  (should be NaN?)

>ただ、ここだけ FloatDomainError になるのも妙な気がします。

>> >p a<b    #                T    F   T?
>> >p b<a    #                F    T   T?
>> >p a<=b   #                T    F   T?
>> >p b<=a   #                F    T   T?

>こここそ FloatDomainError になるほうがよい気がします。

そうですね。IEEE754では決められてませんし、NaNとの大小比較は
すべて FloatDomainError にするのはもっともな選択だと思います。

>> >p a==b   #                F    F   T?
>> >p b==a   #                F    F   T?
>> >p a!=b   #                T    T   F?
>> >p b!=a   #                T    T   F?
>> 
>> この4つの NaN との比較は間違っています。
>> 
>「比較するのが間違い」、「比較の結果が間違い」
>のどちらでしょうか?

比較の結果がまちがいです。NaN はいかなるモノとも等しくないと
いうことになってますので。

>> ># BigFloat にInfやNaNをいれようとしています(未完)。
>> ># これは、Floatに合わそうと思います。
>> 
>> 合わせるということの意味は上のテストの結果と揃えるという意味
>> ですか??
>できるだけ「結果を揃える」ようにしようと思っています。
>前にnumeric.cを見た時の記憶として、なるべくコンパイラーに
>処理を任せようとしている印象を受けました。これは Float の
>性質上(スピード上)仕方がないと思います。逆にBigFloatは
>コンパイラー任せにできません。この点で、差異が出てくると
>は思います。

なるほど。Floatの処理系依存性がないように注意すれば完全に挙
動をそろえることも出来ますね。

>> なんとなく Inf はそれではいけないような気がするんで
>> すが。ただどうあるべきかはよく分かりません。
>> 
>「あり得る」ものとして、どのようなことが想定できますか?

いえ、とくにアイデアがあるわけではないですが、たとえば、

f = 1.0e+308; 
f   #=> 1.0e+308
f*2 #=> Infinity

みたいなことに対して結果を揃えるか否かというのは考える必要が
あるとおもいます。

-- gotoken