ごとけんです

In message "[ruby-dev:6510] Re: Bigfloat"
    on 99/03/25, 石塚圭樹 <keiju / Rational.Com> writes:

>オーバフローに関しては, 指数部が桁溢れする場合は Bigfloatのdouble相当
>を用いれば良いかと思います(FixnumとBignumの関係ですね)

あ,よく考えてみると,Bigfloat では,指数部を Integer に
するんですよね.ということは,Bigfloat は決してオーバーフローも
アンダーフローもしないのか (^^;;;

>私は, B1でもB2でもよいと感じています. ただ, B2は計算コストが高いのかなっ
>て程度です. ただ, B2で嬉しいのは関数を四則演算で近似する場合に自動的に
>有効桁数が保証されるのでそういった意味では嬉しいかなとも思います.
>
>ですので, コストがそれほど高くないならB2のほうが良いのかなって感じです
>ね.

んじゃ B1 でまず考えてみましょう.
この場合,引き算による桁落ちは問題にならないので,
divmod 系の仕様と,丸めの方向を決めればいいわけです.
まず,

3.4 % 1.23   # 面倒なので Float の範囲で書いてます

の値はどうしますか?? 
石塚案では 3.4 % 1.2 とするわけですが,ほんとにこれで
構いませんか??

それから,丸めの方向はどうしますか?? 例えば IEEE754 では
4つの丸めの方向(最近,+Inf方向,-Inf方向,切捨て)を
規定していますが,あまり使われていないような気がするので,
どれか1つだけだけにするのも一法です.

>># 結局,実用性という問題を考えないといけないわけですが,
>># Bigfloat 自体は誰も実用しないのではないかという気もしています.
>
>それは(^^;;;

Bigfloat を使う機会で僕が思い付くのは,保存系のカオスみたいな
誤差に敏感な対象と,singularity の高い系の零点を探す場合と,
将来できるであろう数式処理システムで実数をシンボルとして扱った
場合の最終的な数値表現かなぁ.

例えば数論屋さんに UBASIC を愛好している人が結構いるように
うまく作ると特殊な分野で好まれる可能性はありますね.

>私としては, FixnumのBignumのようにRubyに完全に組み込んでもらっても良い
>かなと思っていますが... ただ, こうなると B1, B2どちらがふさわしいかと
>いう議論も変わってきますが...

そうなんですよね.Bigfloat を将来的に C で実装して Ruby の
一部にするとなると,是非 B2 相当にして欲しい気がします.

-- gotoken