From: Shigeo Kobayashi Date: 2003-07-08T16:59:58+09:00 Subject: [ruby-dev:20550] Re: [BigDecimal] renaming proposal 小林です。 ----- Original Message ----- From: "Tadashi Saito" Subject: [ruby-dev:20547] Re: [BigDecimal] renaming proposal > 「現状のbigdecimal.cの数学関数の部分は削除して、Rubyで >  書き直し、それを標準添付の一部としたい」 > > ということだと思ったのですが、そうではない、ということでしょうか。 いや、そういうことを意味したかったんですが... > 数学関数を標準添付したくないということですか? 標準添付できたらいいなと思っています。 ただ、自分には荷が重いので、それなりの方が書いてくれると いいなということですね。 > はい。添付したスクリプトを走らせると、必ずNGになります。 > (もっとうまい書き方があるのかもしれませんが…) なるほど、私は「うまい書き方」と思います。 > > 数学関数に、n桁の精度での解 x とその倍の精度での解 y を > 計算させ、y の n桁までは正しいものと仮定します。 > そして、x と y のn桁までを比較すると、いずれかの > 関数で x == y が成り立たなくなります。 > 「unless s_ok.truncate(n) == s.truncate(n)」の truncate を > round にしても同様でした。 これはtruncate()やround()とは無関係です。 要するにBigDecimal::E(n)等が、正確に n 桁を保証できてい ないということだと思います。(計算内部の)中間変数の精度 をもう少し上げればましになるとは思いますが、x**n/(n!) のよう な計算を繰り返し実行する単純なテーラー展開では所詮こん なものかもしれませんね。 やはり、削除したくなってきた! > 手元で作ったスクリプトはもちろんそうしてありますが、 > BigDecimal自体について言っているつもりでした。 もちろん、 bigdecimal.c 内でより良いものがサポートできれば 申し分ないです。ただ、現状の関数は我ながらお粗末なので、 できれば bigdecimal.c から E や sincos 等を削除したいと思っ ているわけです。 ---- 小林 茂雄 shigeo@tinyforest.jp