From: Yukihiro Matsumoto Date: 2006-10-30T18:54:48+09:00 Subject: [ruby-dev:29713] Re: Bignum#to_s(10) broken まつもと ゆきひろです In message "Re: [ruby-dev:29712] Re: Bignum#to_s(10) broken" on Mon, 30 Oct 2006 18:43:40 +0900, "U.Nakamura" writes: |In message "[ruby-dev:29710] Bignum#to_s(10) broken" | on Oct.30,2006 17:44:19, wrote: || - j = j * 241L / 800; | |ところで、この 241/800 はlog10(2)の近似値だと思うのですが、こ |の値であるのには何か深い理由があるのでしょうか? |この式だけ見て考えると、要求される近似値としては、 | * log10(2) よりは大きくて、 | * オーバーフローを遅らせるため分子が小さいほうがよい |のように思えます。 | |この観点から考えると、例えば 146/485 の方が近似値としては優れ |ている上に分子が小さいですし、87/289 や 28/93 なども、近似度 |は 146/485 にわずかに及ばないながらも 241/800 よりはマシです |し、分子もぐっと小さくなります。 えーと、全然覚えていないんでが、どこかからそのまま持ってきた 数値のように思います。でも、Google CodeSearchでもRubyのソー スしか見つからないな。よければ、うささんの方で置き換えていた だけませんか? # できるものならbignum.cとnumeric.cには触りたくない。 まつもと ゆきひろ /:|)