From: Tadashi Saito Date: 2008-05-01T01:48:39+09:00 Subject: [ruby-dev:34552] Re: 0**-1 == 0 ? 斎藤と申します。 On Wed, 30 Apr 2008 15:14:50 +0900 Yukihiro Matsumoto wrote: > というテストが加えられていますが、0**-1って本当にゼロなんでしょ > うか? 手元の処理系で0になるものはないようですが。 単なる参考情報ですが、(未だに議論が続いている)IEEE 754rの、今年3/16時点でのドラフト http://grouper.ieee.org/groups/754/email/msg03826.html では「pown」「pow」「powr」という三種類の累乗操作が定義されています。しかし > pown (±0, n) is ±∞ and signals the divideByZero exception for odd integral n < 0 ... > pow (±0, y) is ±∞ and signals the divideByZero exception for y an odd integer < 0 ... > powr (±0, y) is +∞ and signals the divideByZero exception for finite y < 0 ということで、いづれの場合も 0**-1は「+∞を返し、divideByZero例外を発する」という ことになっているようです。また上記の振る舞いについて(ざっと見た限りではですが)その後の 議論では触れられていないようです。 これを真似るならば、Ruby的には(デフォルトでは)例外として実装しそうです。 -- 斎藤ただし