From: Kenta Murata Date: 2008-04-16T05:20:57+09:00 Subject: [ruby-dev:34415] Re: ComplexFloat むらたです. 2008/4/14 Yukihiro Matsumoto : > |二点目は,いまの Complex が Float と Integer/Rational を同時に持てる事です. > |実部か虚部のどちらか Float になったときは,もう一方も Float にすることを > |提案します (∵ 複素数は実部と虚部を合わせて一つの値だから). > > えーと、これは具体的にはどこをどうすることを考えていらっしゃ > いますか? 計算結果であれば自動的にそうなりますよね。生成時に > 明示的に指定したのであれば、それはそれで意図通りという気もし > ますし。 例えば,現在では以下のように振舞います. muraken:~/src/ruby$ ./miniruby -e 'p Complex(1, Rational(1, 2)) - 0.5' Complex(0.5, Rational(1, 2)) これを Complex(0.5, 0.5) にしなくても良いかどうかという事です. 悪いとまでは言えませんが,なんだか気持ち悪いです. 加えて,せっかく Rational が組込まれているのだから,次の結果は Complex(Rational(1, 2), Rational(1, 4)) のほうが良いと思います. muraken:~/src/ruby$ ./miniruby -e 'p Complex(1, Rational(1, 2)) / 2' Complex(0, Rational(1, 4)) これらは,Complex の実装が成分毎に Ruby の規則で演算していることによって 生じた結果なんだと思います. -- Kenta Murata OpenPGP FP = FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC