From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2008-09-25T00:24:34+09:00 Subject: [ruby-dev:36520] Re: {Complex,Rational}::Unify けいじゅ@いしつかです. In [ruby-dev :36487 ] the message: "[ruby-dev:36487] Re: {Complex,Rational}::Unify ", on Sep/23 23:07(JST) Tadayoshi Funaba writes: >> まず, Unifyなしで動作するように, mathn側で対応させてください. それから, >> Rational/Complex の方を変更していただけるとありがたいです. > >ああ、凍結も近いので少し前にコミットしてしまいました。大丈夫ですかね。 mathn動かなくなっていると思うので, あまり大丈夫ではありません. それは, ともかく, どう対応するかですが. いまの, rational.c complex.c の実装だと, mathnのほうでは, 四則演算その 他をすべて再定義する必要が出てきそうです. Rationalだと以下の関数: nurat_s_canonicalize_internal_no_reduce nurat_s_canonicalize_internal_no_reduce もしくは, nurat_s_new_internal を, Complex だと以下の関数: nucomp_s_canonicalize_internal もしくは, nucomp_s_new_internal を Rubyレベルで呼び出せるようにしていただけるとうれしいのですが? >可能性としては、sqrt は整数や有理数も返せるので、Math か CMath かという >分け方がどうかというのもありますね。 たしかに, それはいえますねぇ... >そういう方向性がはっきりしていれば、** の定義も変えてよかったかなと思い >ます。まがりなりにも CMath もありますし。 > >そういえば、python も 2 では、(-8)**(1.0/3) がエラーになりますが、3 で >は、(-8)**(1/3) で複素数が返るようになっています。 ふーん... 何となく不思議. __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<---