From: Shigeo Kobayashi Date: 2003-07-10T16:55:44+09:00 Subject: [ruby-dev:20598] Re: [BigDecimal] renaming proposal 小林です、またまたまとめて。 From: "Tadashi Saito" Subject: [ruby-dev:20592] Re: [BigDecimal] renaming proposal > 標準添付(ライブラリとRuby本体は一体)なので、その心配はないと 前に「配布」と言ったのは「一体」でない場合も想定しています。 > 思います。また必要ならば、bigdecimal-rational.rb が存在するとき > のみにbigdecimal.c 内で読み込んで、エラーを回避する方式にも > できると思います。 もちろんです。しかし、たかだか30行に満たない、かつ、Ratinal と BigDecimal を同時に扱う人にとっては自明なものにそれだけの労 力を割く気はありません。単なるサンプルです(だったら sample ディレクトリに移したら? という提案ならば考慮します。)。 # 将来、Rational がビルトインされれば、bigdecimal.c 中に同等な # ものを(Cコードで)組み込むべきでしょうけど。 それと、 [ruby-dev:20581]のパッチありがとうございました。 ただ、ソースは既に自分で修正していましたので現状ので、そのうち コミットします。 もうひとつ、bigdecimal-math.rb ですがざっと見させていただきました。 まず maxnr の値が固定というのは?です。 sqrt なら 2次の収束がある程度得られるので maxnr = n + ? のようなことが考えられます。 割り算 / や掛け算 * は、 BigDecimal::limit である程度桁をしぼるか、 div や mult メソッド を利用したほうが効率的と思います。 to_f は Float::DIG 等を考慮して無駄なことはをしないほうがベター です(って split の説明に入れてないか...)。 あと NaN は BigDecimal("NaN") で得られます。 もっとも、一番の問題は  級数展開でいいの?  誤差判定をどうするの? です。 sqrt は正確に判定できるので残しますが、E、PI、sincos 等は 取りあえず C からは削除して、今後の検討課題ということにし たいと思います。 From: "Tadashi Saito" Subject: [ruby-dev:20595] Re: [BigDecimal] changing rule of coerce > (「驚き」の事例は、ruby-listで何回も出てますね) FAQですね。 ^.^;; > それでつなぎとして、String#to_d でも用意しませんか? 悪くはないですね。でも、内容がよく見えるスクリプト以外で他人(?) のクラスにメソッドを追加するのはちょっと抵抗感が... 自身のスクリプトに追加するだけで十分では? それと、Fixnum#to_d とかは、やりすぎかなぁ? 私は、やはり「Float から文字列を参照(Float#text?)」がいいですね。 これは、BigDecimal だけでなく、Float に誤差がある以上、元の文字 列を見たいという欲求はあると思うからです。 ---- 小林 茂雄 shigeo@tinyforest.jp