From: Yukihiro Matsumoto Date: 2008-05-07T22:31:43+09:00 Subject: [ruby-dev:34601] Re: ComplexFloat まつもと ゆきひろです In message "Re: [ruby-dev:34502] Re: ComplexFloat" on Thu, 24 Apr 2008 09:00:43 +0900, sheepman writes: |複素数の除算で問題があります。Scheme では | (/ 1 1+1i) |は 1/2 - 1/2i か 0.5 - 0.5i のどちらかです。 |しかし、 Ruby の Complex では mathn を require しない場合 |-i になります。 | |$ ruby-1.9 -ve 'p 1/(1+Complex::I)' |ruby 1.9.0 (2008-04-24 revision 15721) [i686-linux] |Complex(0, -1) | |複素数を使う場合に求められる除算の動作は、Scheme のそれのどちらかだと思います。 |なので、現在の Ruby の Complex の「/ の意味は自身の実部と虚部に任せる」という |方針は変えるべきだと思います。 同意します。 |選択肢としては、 | |1. 実部と虚部が整数の複素数の除算は、実部と虚部を Rational に変換してから行う。 |2. Complex を捨てて ComplexFloat のみ。 |3. Scheme の exact complex に相当する ComplexRational を導入する。 |4. complex が常に mathn を require する。 | |があろうかと思います。 が、どれが正しい選択であるか判断するのは私だけでは困難なので どなたか意見(or 情報)をいただけませんか?