原です。

Tadayoshi Funaba さんは書きました:

>>> ただ, 今までの互換性が気にならないわけでもないですが, 今まで例外が起こっ
>>> ていた場面でComplexが帰ってくることになりますので... 互換モードにする
>>> 何かを用意した方が良いかも.
>> 難しいですね。やっぱりデフォルトでは、sqrt(-1) は例外じゃないかな。
>
> 何故なんですかね。具体的に困ることがよくわからないんですが。

いえ単純に、ルートの中身が負になるなるのは、ユーザが意図してない
操作のはずでエラーだと。Complex が組み込みになれば、「はず」が
「はず」でなくなるのかもしれませんが。

> Common Lisp では、複素数になりますし、Scheme でも、ちゃんとした実装なら
> 同じになります。factor や J でもそうなります。ocaml にみたな仕様だと難
> しそうですが、ruby では問題ないように思います。

これらの処理系では、(-1)**(1/2) は厳密に i になるんでしょうか?
それとも、少しずれるのかな。

> (expt -8 1/3) ;=> #C(1.0 1.7320508)

ああ、なるほど。-8 の3乗根は、1+√3i ですか。

そうすると、3乗根を取ることが3乗することの逆関数
でなくなるけど、その方がいいのかな。