けいじゅ@日本ラショナルソフトウェアです. これも ruby-devに引っ越します. In [ruby-list :07060 ] the message: "[ruby-list:7060] Re: infinity ", on Mar/10 19:30(JST) Kazuhisa YANAGAWA writes: >> とすれば今のままで, 表現をちゃんとした対応を行なった方が良さそうですね. >> # Math.exp(inf)以外はちゃんとした結果になっているところがこわい... と思いましたが, ちゃんとしていませんでした. rbc0> Inf = 2.0**100**100 Inf rbc0> Inf <= Inf true rbc0> Nan = Inf - Inf NaN rbc0> Nan <= Inf true rbc0> Nan <= Nan true rbc0> 1 < Nan true rbc0> Nan > 1 false rbc0> Inf > 1 true rbc0> Inf < 1 false rbc0> Inf >= Nan false どうなっているんだ... > もっともこれだと最初の話にあった, 「改歴日を無限大にしておいて....」 > というのはできないかもしれませんが. > # いや, 問題ないか? 不等号さえちゃんとすれば問題ないのかな? ただ, そういう使い方をするとなるとFloat::Infinityは気分が悪いような... >> そうですね. RealがあるならRealが良いですが, きっとRealは採用されること >> はないでしょう(^^;;; > いまから突っ込むのはちょっと辛いでしょうね.... 辛くないと思いますが, 今のところ, カテゴリ分けのためのクラスになって機 能的にはほとんど意味のないクラスになりますので... >> > # たぶん Float で表現できる範囲を超えても無限大/無限小になることはな >> > # いと思いますが. オーバフローするだけですね >> そうですね. オーバフローした状態がInfなんですね. > いや, 整数でオーバフローした時と扱いは同じではないかと思いますが. オー > バフローを検出して値を無限大/無限小にするというのはありでしょうが. rubyの整数はオーバフローすることはないと思います. する時はメモリを食い 潰した時ですから別の例外が出ると思います. 試した結果: rbc0> 2**100000000000000000000000000000000000000 /home/keiju/var/bin/rbc:127:in `**': failed to allocate memory (fatal) それはともかく, 言葉の使い方が食い違っているのかな? >|rbc0> _**2 >|1.0e+168 >|rbc0> _**2 >|Inf.0 このように, Floatの扱える範囲を越えた時をオーバフローと言っているのか と思ったのですが? そうすると, その時の結果がInfになっているのかな? と. >> 結論としては, Floatの定数とした方が良いかなって思うようになりました. > 実用で閉じるとこっちでしょうかね. 大本の話は実数の数学的な無限大/無 > 限小を扱いたい, という要求だと思ってました. ですね... いろいろなことがあってコンガラがってしまいました(^^;;; 別メイルで整理します. > # とはいえそれも Float--Integer 間の適当な型変換で実用的に問題なく処 > # 理できそうだ, と. まあ, そうなんですが, そういう使い方を考えるとFloat::Infは気分が... >> どんな提案をされていたのでしょう? > > URR(Universal Real-number Representation?)という浮動小数点数表現で, > 指数部のビット数を値のオーダで変えてしまうというものです. 適当にやれ > ばメモリの許す限りどんなに大きな数でも表現できるという特徴があります. > ただし仮数部の精度は 0 から離れるにつれてどんどん落ちます. 浮動小数点数としては, 常に同じサイズなんですね? それで, 数値が大きくな るにしたがって, 指数部のサイズを大きくする... 精度が一定でないのが実用的でないような気もしますが... そうでもないのか な... > 「充分に効率的な演算ができる, 大きな数も扱える, 0 付近での精度は > IEEE のものより良い, 数の表現に数以外の変なものは入っていない (^^)」 > というのが宣伝文句. 0/0とかはどうなるんでしょうね? やはりNaNのような... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju / rational.com <<---