けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :07041 ] the message: "[ruby-list:7041] Re: infinity ",
on Mar/10 10:37(JST) Kazuhisa YANAGAWA writes:

>  どうせなら Numeric.... と思ったら Complex < Numeric だった. それじゃ
>  実数で.... と思ったら実は ruby には実数の Bignum は無かった (^^;

実数のBignumってBigなFloatのことですよね?

>> または, 上記の数の大小関係(演算関係)を適当につけて,
>>   +0 * +∞ == +0
>>   +∞ + -∞ == +0
>>   0 == +0
>> などとすればいらなくなるかな?
>
>  謎の定義を与えると謎のバグに悩まされそうな. 少なくとも +0|-0 を無限
>  小の意味で使うのだとすると -0 = 0 = +0 では「いけません」よね?

ですね... やはりNanなんでしょうね...

>> むりせずNanかなあ... Nanが一番強い数になるのが気に入りませんが...
>
>  考え方でしょうね. IEEE の浮動小数点数表現での無限大/無限小/非数値を
>  表すのなら Float の定数であるべきで, NaN も存在するべきでしょう. 多
>  分. 存在しているからにはそれを使っていることもあり得るわけで.

NaNの存在はよいとしても, 無限大/無限小がFloatになるというのが納得いか
ないですよねえ... 例えば, Bigfloatの様なものを誰かが作ったとして, その
結果が無限大とかになるとFloatになるのは...

無限大/無限小はある意味で精度が無限にあるわけですから, Floatとは別クラ
スにした方が良いと思うのですが...

あ, でも, Floatの表現できる範囲を越えると無限大/小になってしまうんでし
たよね? そうすると精度が無限にあるわけではないくて, Floatとしての無限
大なんですね...

そうすると, BigFloatにはBigFloat::Infinitを用意することになるのかな...
それもって気もしますけどね...

>  一般に数値の話をするんだと.... どうなるんでしょうか? クラスが存在す
>  るのは便利そうですが. そもそも無限大/無限小との演算の意味を考えなく
>  ちゃならない. 足し算, 引き算, 掛け算はどうにでもなるとして, 割算です
>  か. まさかまじめに極限を計算するわけにもいくまいし.

そういうのはNaNにすれば良いでしょう. 演算の関係は以下のようになるんじゃ
ないかしら?

  +∞ - +∞ => nan

ように普通に考えて結果が不定なものはnan,

  nan op Numeric => nan

Nanとの演算はすべてNan.

>  # NaN については学部の時の先生が「数値表現といっているのに数値じゃな
>  # いものが入っているなんて, 気持ち悪い」といってましたが (^^;

その気持ちは非常に良く分かります(^^;;;

__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju / rational.com <<---