田中です。

>From: keiju / ishitsuka.com (石塚圭樹)
>Subject: [ruby-math:00550] Re: complex.rb problems
> ...
>   T op T -> T
> 
> ってのが基礎にあり、それプラスcoerceメカニズムによる、異タイプ間演算があ
> ります.
>
> ですので, require "complex" したからといって,
> 
>   float ** float -> complex
> 
> に変るのはおかしいでしょう. complexにしたければ、明示的に
> 
>   Comlex(value) ** float
> 
> って演算すればよい.

float**float -> complex が自然だと思う理由は他に、
もともと演算の結果が理屈上 Complex になるはずだが、Complex を
返すことができないので仕方なく NaN を返していた、というところを、
require "complex" により Complex を使うことを明示する、ならば
結果が Complex になるなら Complex で返せばよい、と考えるからです。

こう書くと何か拘っているように見えますが、そうではなく、ただ
考えを言っているだけなので、とりあえず定義しないでも構いません。
再定義は簡単なので。

田中昌宏