まつもと ゆきひろです

In message "[ruby-math:00736] $BBjL>K:$l$G$9 (^^;"
    on 02/04/29, 正木 功 <GEC01122 / nifty.ne.jp> writes:

|Float では数学的な整合性がとれないから、まともな method は提供
|できないので、標準で用意するのは必要最小限にとどめて、それ以外は
|user にまかせたら?と言っているだけです。
|
|step が必要な場合でも
|(0.0).step(12,0.3)
|がちゃんと動かなくてもかまわないという level から
|(0.0).step(0.9999999999999999, 1.0/103)
|が正しく動作しなくては困るという level まで目的に応じて要求水準
|が違うでしょうから、user がそれに応じて自分で作ればいいのでは
|ないですか?

そうなんでしょうか。naiveな実装では大きな誤差が出てしまう
Floatに対しては逆に積極的にマシな実装を提供してやるというの
もありえるポリシーだと思います。

|要するに言いたかったことは:
|「Floatには誤差は付きもの」だから完全なものはできないけれども
|実装の仕方で誤差の出方は異なるということです。

という点から自分に都合よく正木さんの主張を解釈すると

  * Floatに対してstepを定義することに反対はしない
    (賛成もしない)
  * しかし、step0のようなnaiveな実装では使いものにならないだ
    ろう
  * step2でもまずい場合がありそう

ということではないかと。実際、田中さんからstep2でまずい例が
提示されました。

ということで、田中さん提案のstep1のアルゴリズムでFloatに対す
るstepを定義しようと思います。

                                まつもと ゆきひろ /:|)