From: EGUCHI Osamu Date: 1999-03-01T19:55:20+09:00 Subject: [ruby-dev:5843] Re: Precision in Mathematica (Re: Bigfloat) えぐち@エスアンドイー です。 >>> In message [ruby-dev:5842] Re: Precision in Mathematica (Re: Bigfloat) On Mon, 1 Mar 1999 19:34:40 +0900, gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) said: gotoken> ごとけんです gotoken> gotoken> In message "[ruby-dev:5839] Re: Precision in Mathematica (Re: Bigfloat)" gotoken> on 99/03/01, EGUCHI Osamu writes: gotoken> ... gotoken> >keiju> >1. についてですが、これは『関数は引数の精度と同等の精度を gotoken> >keiju> >得られる事が期待できるアルゴリズムを使用せよ』 gotoken> >keiju> >と読み取って良いのでしょうか?(物によってはメチャ厳しい ^^;;) gotoken> >keiju> gotoken> >keiju> そうじゃなくて, 大変なんであきらめるってことです(^^;;; gotoken> > gotoken> >永久に返って来ないより、なんぼかましですね ^^;; gotoken> > gotoken> >既に Bignum ** Bignum のように、時間に対する問題に関しては gotoken> >なにがなんでも値を求めるのでなく、実行時間配慮する方向で gotoken> >態度が決まってると考えています。 gotoken> >#どのへんで、あきらめるかは問題ですが、 gotoken> gotoken> いや,Bignum は時間がかかっても計算させたほうが gotoken> いいんではないかと思ってます.実装の仕方によるけど gotoken> そんなに時間かからないんじゃないかなぁ. Bignum ** Bignum の一番小さな組合せは、 (2 ** 30) ** (2 ** 30) だと思いますが、これでも時間の問題と記憶容量の問題で 実際に評価すると 'failed to allocate memory' でしょう。 、、、例が悪かったなあ ^^;;; gotoken> 四則演算は最大誤差を別個に評価して,仮の結果と最大誤差を gotoken> 足して変化しない桁を調べればいいんではないかと. gotoken> 関数と言っても,四則演算の級数か,ニュートン法でであらわ gotoken> すんだから,引数の精度のうちで最小のものを使って必要な gotoken> 項や収束条件は求まるから問題ないような. gotoken> あ,ニュートン法は危険かも. これも時間が問題? 正面突破がニュートン法より早い関数もあるだろし、、 #libm のソース読も ^^;; <- きっとビット操作の塊だ! gotoken> >keiju> >案外 3. が上の解釈の 1. そのものだったりして、、、 gotoken> >keiju> gotoken> >keiju> うーん. どうなんでしょう? >> ごとけんさん? gotoken> gotoken> ぼくは,1. をいまいち理解してなかったけど, gotoken> とりあえずは Math モジュールの関数は prec(Float) を呼ぶと gotoken> 言うことでいいんではないでしょうか?? その精度で満足できない人は、自分で書きましょう ^^)l でもって、順次公開しましょう。 (^^) gotoken> >keiju> expの精度がどのように変化するのか興味ありますね. gotoken> > gotoken> >exp がそうだかわかりませんが、機械の浮動小数点で同じ関数を gotoken> >実行して、第一近似を得て適当な精度になるまでトライする gotoken> >という手法が使えそうです。 gotoken> gotoken> exp って,指数関数のことですか?? そぅです(ょね ^^;) えぐち