From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1999-02-08T23:20:54+09:00 Subject: [ruby-dev:4842] Re: compare to NaN (Re: Re: call for finite/isnan testers) けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :4826 ] the message: "[ruby-dev:4826] Re: compare to NaN (Re: Re: call for finite/isnan testers) ", on Feb/08 01:28(JST) EGUCHI Osamu writes: >えぐち@エスアンドイー です。 >地球の上にいる系の人を除けば、 >おうちで接続、あるいはSOHOな人が多いのでは? >私は、SOHOな部類です。 おぉ!!! SOHOな人ってそんなに多いですかね? >休日出勤ごくろうさまでした。/ (^^;;; >keiju> あと, Bigfloatを >keiju> 仮数 * 10 ^ 指数 >keiju> で表現するか, >keiju> 仮数 * 256 ^ 指数 >keiju> で表現するか, はたまた他にするかが問題だと思いますが, たぶん10を用いて >keiju> いたと思います. > >おっしゃる通り、指数の底は 10 でした。 最初は256にしていたんですが, 文字列に変換するのがえらい手間(コストがか かりそう)だったので10に変えた覚えがあります. >で、前のメールの四則の精度に関する考えが一部 >誤りだったので、まとめて見ました。 > >****** >加算と精度の考察 (中略) やはり, 厳密に考えるといろいろと面倒ですね. >また変換時の精度は > 整数を Bigfloat に変換すると無限精度になる > 浮動小数を Bigfloat に変換すると仮数の精度になる > >べきだと思います。無限精度と言うのはいいすぎですが、 >整数の値は、誤差なしと考えるべきでしょう。 本来の整数の値はそうだと思いますが.... >これの延長に文字列からの Bigfloat も生成がありますが。 >1.0000 で有効数字 5 桁なのかなぁ? 文字列は難しいですよね. 私のBigfloatも変かも知れませんです. ということで新しいBogfloatのモデル案: 結局は前のメイルにあった. 動的に固定精度のBigfloatを生成するモデルです. Bigfloat_128 = Bigfloat(128) # 精度128のBigfloatを生成 v1 = Bigfloat_128(1) # 精度128の1.00...0 v2 = Bigfloat_128(2) # 精度128の2.00...0 v1*v2 => 1.0 # 精度128の2.0...0 sin(v1) # 精度128 sin(1.0) つまり, Bigfloat(XXX)は今のFloatの有効桁数が多いものとみなして精度の考 えもみな真似する. つまり, 全ての演算, 関数で固定精度ですね. で実際の有 効桁数に関する評価はユーザにまかせると. これだと, Floatとの類推が可能ですのでより馴染みやすいと思います. で, 精度の違うものどうしの演算はcoerceを用いると. v1 = Bigfloat_128(1) v2 = Bigfloat_256(2) v1 * v2 -> Bigfloat_128(v1) * Bigfloat_128(v2) # 精度情報が固定でクラスにあるとPrecisionにも馴染みます. きっと. いかがでしょう? __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---