田中です。

>From: keiju / ishitsuka.com (石塚圭樹)
>Subject: [ruby-math:00546] Re: complex.rb problems

> >1. Fixnum#**の再定義取消と、Float#**の再定義追加
> ...
> その前に, 議論したいことが... Rubyでは
> 
>   int op int -> int
> 
> にすると言う方針があると思いますが, ** に関しては成立していませんね. い
> まは,
> 
>   2 ** (-2) -> 0.25
> 
> となっていますが、0 にすべきだと思うようになりました.
> 
> つぎに, 今のComplexは(新提案のも)堂々と動作を変更していますが, それはよ
> くないとおもうようになりました.
> 私の案は.
> 
> 1. 2 ** (-2) -> 0 に仕様変更

Integer#/ との整合性もあるので、それでもよいかと思います。

> 3. complexでは, IntegerやFloatなどの**を再定義しなくする
> 4. 田中さんの新提案は mathn に導入する
> 
> いかがでしょう?

complex.rbで Float仕様の Math.sqrt等を Complex仕様に再定義してい
るので、Math.pow 相当の Float#** を Complex仕様にするのは自然だ
と思いますが、いかがでしょう。

mathn って、副作用が多くてちょっと使いづらいというのもあります。
Rationalは使いたくないけど、Float#** を Complex仕様にしたい、と
いう場合がしばしばあります。この場合にどこで再定義するべきかとい
うと、やはり complex ではないかしら。

> >2. Math.sqrt(z) の修正
> ...
> こちらは田中さんの案にしましょう.

どうもありがとうございます。

> >3. imag
> ...
>   @image -> @imag に変更
> 
> 過去の互換性のため
> 
>   alias image imag
> 
> にしましょうか?

そうしていただけると、realとimagで4文字でそろうので、
コードが見やすくなってよいのではと思います。

田中昌宏