From: GOTO Kentaro Date: 2008-04-30T23:41:40+09:00 Subject: [ruby-dev:34548] Re: 0**-1 == 0 ? x→+0 のとき 1/x→+∞ なので、 2**-1 == 0.5 ならば 0**-1 == 1.0/0.0 は候補でしょうね。 ただし無限大を表現する方法が現状では Float以外に存在しないのは気がかりです。 私の記憶が確かなら mathematicaやmaximaは定数として無限大を持っていて、 0**-1は0/1と同じ無限大に簡約されます。 これらの言語で無限大に精度があるのかは知りません。 ごとけん On 4/30/08, Yukihiro Matsumoto wrote: > まつもと ゆきひろです > > In message "Re: [ruby-dev:34543] Re: 0**-1 == 0 ?" > on Wed, 30 Apr 2008 21:26:05 +0900, SASADA Koichi > writes: > > |Yukihiro Matsumoto wrote: > |> 14005 ko1 assert_equal(0**-1 == 0, false) > |> > |> というテストが加えられていますが、0**-1って本当にゼロなんでしょ > |> うか? 手元の処理系で0になるものはないようですが。 > | > | 0 ** -1 == 0 は false、というテストのようです。今 1.9 で試したら > | > |./ruby -ve 'p 0**-1' > |ruby 1.9.0 (2008-04-27 revision 0) [i686-linux] > |Rational(1, 0) > | > |となりました。Rational は意外だった。 > > いずれにしても、0 ** -1 が「0でない値を持つ」は自明ではない > のでテストから削りませんか? あるいは「Rubyではどうあるべき > か」を議論してテストを書き換えるか。 > >