From: Tadayoshi Funaba Date: 2008-03-28T20:54:49+09:00 Subject: [ruby-dev:34166] Re: Complex組み込み > となるようですが、別の実装として、 > > (2) CやFORTRANの複素数型をラップした、実部・虚部がdouble型の複素数クラス > > とすることも考えられます。(2)の利点として、 それは考えましたが、あくまで実装の都合ですね。浮動小数点数のみからなる 場合、そのようなことをすれば若干速くなるかもしれないとは思いました。実 装の都合のみで仕様を決めることはないと思います。それに C99 ですよね。 > a. 速度で格段に有利。(組み込みを要望する理由の1つに速度があると思います) そういう要望があって組み込みにしたわけではないです。rational を組み込み にする一貫としてやりました。また、rational、complex の仕様や実装で都合 の悪いところを直すためでもあります。 仮にそうだとしても、rational の扱いを直ちに捨てる必要もないと思っていま す。遅くて困る、ということも聞いたことがないし、どれくらい速ければいい のかもわかりませんが、ちなみに格段に有利というのは、どのくらい有利なん ですか? これまでのところ、僕には田中さんのいわれることは、Bignum をなくせば ruby は速くなる、という主張と大差ないように感じます。 > b. C,FORTRANと同じであり、Pythonでも後者で実装されているので、 > 仕様を参考にできる。 python は有理数もないし、他にも参考になるものはあるので。 > c. 拡張ライブラリからアクセスしやすい。 > > などがあります。複素数は科学技術計算でよく使う型で、 > そういう使い方からすれば(2)の方が求められます。 > 逆に、(1)を組み込みにする利点が思い浮かばないのですが、 > (2)でなく(1)を組み込みにする理由とは何でしょうか? それは了見が狭いですね。 だったら、ruby は浮動小数点数だけにすればいいんじゃないですかね。ただ、 ruby の場合、既存の数値演算もそんなに速くないと思うので、複素数のあつか いを変えたからといって、科学技術計算一般でどれだけ役立てられるのか知り ませんけど。 逆に、rational が組み込みで、複素数でつかえなくする理由はなんですか? Common Lisp、Scheme、Factor、Squeak などでも普通につかえますが、このあ たりの言語はちょっとおかしいってことなんですかね。 もし、田中さんの主張がもっともだとしても、やはり、Complex は、より一般 的な仕様であるべきで、田中さんのいわれるようなものは、Complex の内にあ るにせよ、外にあるにせよ、特殊なものとして扱われるべきじゃないでしょう か。 今回は、よりよい実装で置き換える、ことが目標だったこともありますが、僕 は、誰も速くしてくれといってないのに、速くないとダメだ、仕様を曲げてで も速くしよう、などとは考えもしませんでした。