まつもと ゆきひろです

In message "[ruby-math:00169] Re: (summary) SingleFloat, DoubleFloat < Float"
    on 00/01/29, GOTO Kentaro <gotoken / math.sci.hokudai.ac.jp> writes:

|>[ruby-dev:8879]はそういう意味ではないかと。ああ、でも古いCの
|>話なのかなあ。
|
|そうかも知れません。下を試してみてはどうでしょう。

えぐちさんもそうおっしゃってますし、そうなんでしょう。
ただ、Ruby自身が古いCでコンパイルされてないことを保証する方
法はありませんから、この辺にどこまでこだわれるかは疑問です。

|またリテラルの違いもあるともいます。Rubyのリテラル0.1はCの
|doubleリテラルと同じなんだけど、Cのfloatリテラル相当の値は作
|れないですね。まぁpack/unpackを駆使すれば出来るけど、そんな
|ことがしたいのでなくてNumPyのように電卓としても使いたいわけ
|で。もちろん浮動小数点数に絶対的な正しさはないのでこの電卓は
|検証のために使うわけです。

つまり、CなりFORTRANなりのfloatの演算結果と同一の結果を得る
ためにはdoubleの計算しかないRubyではまずいことがあるというこ
とでよろしいでしょうか?

これについて考えるとき、以下の点が気になります。

  * Rubyは(Javaと違って)浮動小数点数の演算結果はそのコンパイ
    ルされた処理系にまったく依存する。

  * floatとしての挙動を保証するクラスが必要であれば、それな
    りの苦労と工夫を凝らした実装が必要だろうが、それは組み込
    みであるべきだろうか。

  * 通常は数値計算に用いられない言語にfloatとdoubleの両方の
    浮動小数点数リテラルが必要だろうか。

まあ、トレードオフということになるのでしょうが。

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