From: keiju@... (Keiju ISHITSUKA) Date: 1999-02-18T13:52:07+09:00 Subject: [ruby-dev:5238] Re: Bigfloat [compare to NaN] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :5207 ] the message: "[ruby-dev:5207] Re: Bigfloat [compare to NaN] ", on Feb/17 18:38(JST) EGUCHI Osamu writes: >えぐち@エスアンドイー です。 >keiju> >まだ、ゼロの符合に関する配慮が欠けています。 >keiju> +1 0 0 と -1 0 0 ってことですかね? > >そうです、これ結構面倒です。 >いちど @sign * @prov すると、-0 が +0 になってしまう。^^;;;; なるほどね. >keiju> >隠蔽しても良いのですが、 def + とかで、楽しちゃったもので、、 >keiju> なるなる. protectedにするか, >keiju> @sign, @prov, @exp = num.instace_eval{[@sign, @prov, @exp]} >keiju> を用いるというてもありますね. > >結局、instace_eval が便利なので、これにします。 あまり, こういうことに使うのは推薦していないんですけどね(^^;;; まあ, 同じクラスのインスタンスということで... >keiju> >有効数字だけ仮数を充填しておく事で正規化してます。 >keiju> ですね. 気がつかなかったなあ... > >2進数でこれをやると、MSBは常に立つのでそれは >立っているものとして扱い、記憶スペースを1ビット節約します。 うーん. なるほど... >keiju> >2進数は考えましたが、 to_s があまりにややこしかったので挫折しました。;_; >keiju> そうです? 変わらないと思うんですが... > >10進数にする時に仮数だけでなく指数を繰り込まないと >駄目です(ってあたりまえかぁ)、これと負の指数などを一緒に考えたら >表駆動とかアイディアは出るのですが、何か Ruby で書くのが >自然でない様に思えたからです。(負け惜しみモード) (^^;;; >使ってみました。 > > right, @exp = num.instace_eval{[@sign * @prov, @exp]} > >文字列でなく式を、そのインスタンスのコンテキストで >評価するのかぁ、、、、すげーぇ。 >#これもいてれたーなのかなぁ そうなんですね(^^;;; >keiju> >そうなんです。 >keiju> >実は、prov の大きい方に合わせるというアイディアを持っていてのですが、 >keiju> >実装には移ってないです。 >keiju> >keiju> provですか?? > >この実装では(正規化されてるので)精度はおおむね prov.size ですので。。。 >って Bignum に完全に依存していますが。。 そうかそうか. >keiju> Bigfloat間でも PRECの低い方にあわせた方が良いと思っているんですが. > >これだと、明示的に精度向上の為の型変換をしないと、どんどん >精度が計算を繰り返すと低くなりませんか? > >私は C の > > double + float => double > >の様なイメージをもっています。 ここいらの意見は別メイルでもいったように撤回しますです. >さきほどの、平方根などはモジュール向きですね。 >でも、四則はや変換はモジュールにはなりにくいかなぁ、、 >早めに分けないとだめ? そんなことないでしょう. >keiju> >自由な精度(と基数?)の浮動小数点クラスが簡単に作れると良いですね。 >keiju> これは, どちらでも可能です. > >精度と基数をクラス持ちにするか、インスタンス持ちにするか >あるいは、どちらも選択できるようにするかを含めて、 >まだ悩む余地がありますね。 使い方として, そんなに複数の精度や基数を使うこともないと思うので, クラ スで良いのではと思っています. >keiju> でも, 最後の案は, Presicionと相性がすごく悪いのでやめましょう. >keiju> Presicionはクラスが1つの確定した精度を持たないと困るみたいです. >keiju> >keiju> # ですよね? >> ごとけんさん > >とすると、クラスの定数と言う事ですね。 > >うむうむ。。。。 と私は思うんですけどね. その方が余分な変数を持たなくてすむし... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---