From: EGUCHI Osamu Date: 1999-02-09T01:48:42+09:00 Subject: [ruby-dev:4857] Re: compare to NaN (Re: Re: call for finite/isnan testers) えぐち@エスアンドイー です。 >>> On Mon, 8 Feb 1999 23:20:56 +0900, keiju@rational.com (石塚圭樹 ) said: keiju> けいじゅ@日本ラショナルソフトウェアです. keiju> keiju> In [ruby-dev :4824 ] the message: "[ruby-dev:4824] Re: compare to NaN keiju> (Re: Re: call for finite/isnan testers) ", on Feb/07 19:32(JST) EGUCHI keiju> Osamu writes: keiju> keiju> >えぐち@エスアンドイー です。 keiju> keiju> >keiju> あと, Bigfloat(prec) の用にまず固定精度のBigfloatクラスを生成してその keiju> >keiju> 中では固定精度で計算するというアプローチもありますね. こちらの方が, keiju> >keiju> Floatなどの既存Floatの考えに馴染むかも知れません. keiju> > keiju> >これは、しかし精度の上限を導入しませんか? keiju> keiju> 何故でしょう? この件、完全に理解してませんでした。 『固定精度のBigfloatクラス』の文字に反応してしまい それが『生成される』存在だと認識できていませんでした。 (単純に先入観と読解力の問題です ;-) その『クラスの生成』については、ruby-dev:4842 の 続きと言う事で、、 keiju> >coerece と精度の折り合いは別スレッドで話題となっていますね。 keiju> >#どうも、無限/非数問題と精度の問題は単離不能なきがします keiju> keiju> あっちでいっている精度っていうのは, こっちでいっている精度とはちょっと keiju> 違っていると思いますけど... 有効数字とダイナミックレンジ/分解能の違いですね。 浮動小数点の Inf と数学の無限も違う問題だし、 こうなってくると、相手と同じ問題を議論している事の 確認がとりづらきなって辛いなぁ、、 で、上の話は無限を受け入れ得るクラスを coerece や prec の 枠組で扱うと、整数への無限の代入のような、いぢわるなケースの 問題に出くわす事を意識していました。 (NaN も同じ) fail() if (num == num + 1) # for infinity fail() if (num != num) # for not a number みたいなコードが散りばめられるのかと、、 keiju> >keiju> >四則で既に問題なので、Math 相当の関数全てについて値の精度に keiju> >keiju> >配慮するのは、かなり厄介ですね。 keiju> >keiju> keiju> >keiju> うーん... 超越関数の精度を自動的に調整するのは難しいですよね. keiju> >keiju> keiju> >keiju> sin(val, prec) 見たいにユーザにまかせるのかなって考えていました. keiju> > keiju> >で prec が省略されたらクラスの(既定の)精度が暗黙に使われると! keiju> >いいかんじですね。 keiju> keiju> 通常のFloatとの類推からだとvalの精度が引き継がれていいんじゃないかと... keiju> もしかしたら, precを引数で渡すのはなしでよいかも知れません. keiju> keiju> ちょっと新しいモデルを考えたのでもうひとつのスレッドで. 了解です。 えぐち