From: Shin-ichiro HARA Date: 2008-04-20T15:19:55+09:00 Subject: [ruby-dev:34457] Re: ComplexFloat 原です。 Tadayoshi Funaba さんは書きました: >> 1. ComplexFloat を組込みにし、Complex を標準ライブラリとして提供する。 > > とりあえず、ひとつに絞ると同意できたとして、ComplexFloat が組み込みに > なる理由はなんでしょうか。 これは、「なぜ Complex が組込みにならずに、ComplexFloat がなるのか?」 という質問ですね? それは、ComplexFloat の方が扱いやすく、利用する人も多いだろうと思われる からです。 >> この線で行くと、require "complex" してもしなくても、 >> >> (-2) ** Rational(1, 2) は ComplexFloat(0.0, 1.414213...) >> >> になるでしょう。 > > よくわからないのですが、たぶん、ComplexFloat がどうのというのと関係な > いですよね。 分かりににくかったですが、これは、ComplexFloat を含めた組込みの数体系が 閉じており、require "complex" 後もそれは変わらないことを言いたかっただ けです。 > 僕からすると、これまでの議論をみた限り、C の Complex 型をつかう、 > ComplexFloat を導入する、といったことは、実装方法から発想した (少し変っ > た?) 主張でしかなく、仕様の本質的な事とは殆ど関係がない、という風にし > か見えません。あるのかもしれませんが、これ迄の所、それは示されていない > ように思います。 むらたさんの提案と私の提案にはずれがあり、私自身の提案も変遷しているの で、分かりにくいかもしれません。私の提案は、実装の事も気にしていますが、 基本的には仕様を問題にしています。ふなばさんは、Complex がコンテナであ るということに起因する問題([ruby-dev:34439])に対してどう考えていますか? もう一度少し違う例を挙げると、Complex を導入すると x.class == y.class かつ x == y だが、x - z != y - z となる例があります。x = Complex(0, 1.6), y = Complex(0, Rational(16, 10)), z = Complex(0, 1) です。 数値 x の振舞いは x の属するクラスで決まって欲しい、そのようなものが組 み込みではより望ましい、のではないでしょうか?