けいじゅ@日本ラショナルソフトウェアです.

In [ruby-math :00658 ] the message: "[ruby-math:00658] Re: Forward:
inconsistence in class complex ", on Mar/21 01:22(JST) Masahiro TANAKA
writes:

>> 2. Math.sqrt(z) の修正
>>
>> の件ですね. 了解です. 実装は, [ruby-math:00553]でよろしいですか?
>
>結構です。

はい.

>> 現状のrational.rb/complex.rbのFloat#**はオリジナルの振る舞いを変えてしま
>> う.
>> 
>> rational.rb
>>   2**(-2) -> 1/4
>> complex.rb
>>   -2**0.5 -> √2i
>> 
>> これはこれで納得していたのですが, mathn.rbならともかくオリジナルの振る舞
>> いを変えてしまうのは, 如何なものかと思うようになりました. 拡張した振る舞
>> いを持つメソッドrpower/cpowerを定義するようにし, オリジナルの**の振る舞
>> いは変更しないようにしたいと思いますが, いかがかしら?

>現状では Float#** でなくて Fixnum#** のほうが再定義されています。
>で、complex.rb の Fixnum#** の再定義には問題があるので取り消し、
>代わりに Float#** を再定義してはどうか、というのが
>[ruby-math:00543] の 1. の提案です。
>
>とりあえず complex.rb の Fixnum#** はやめましょう。

はい.

>Float#** の再定義については、あまり賛同されなかったのですが、
>私の意見は、
>・** に関しては T ** T -> T が必ずしも成り立つわけではない。

これは納得しました. 

>・もともと結果が Complex となる演算で、そのようにするだけ。
>・メソッドの意味が変わるわけではない。
>  int/int -> int から int/int -> rational への変更が
>  「商」から「除算」へと意味が変わるのとは違う。
>というところです。

Float#** の再定義が, int/int->rational よりは影響が少ないことはたしかで
すが, 影響が全くないわけではないので, 標準の振る舞いとしては採用しないこ
とにして, XX#cpowerをXX#**にaliasするメソッドを別に用意するという方向に
したいのですが?

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---