From: Shin-ichiro HARA Date: 2008-03-26T02:17:39+09:00 Subject: [ruby-dev:34134] Re: rational.rb, complex.rb and mathn.rb 原です。 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乗することの逆関数 でなくなるけど、その方がいいのかな。