けいじゅ@日本ラショナルソフトウェアです. 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 <<---