From: Yusuke ENDOH Date: 2007-06-23T23:57:11+09:00 Subject: [ruby-dev:31040] 0**2 causes division by zero 遠藤と申します。 ruby 1.9 で 0**2 を評価すると SIGFPE で落ちます。 $ ./ruby -e '0**2' 浮動小数点演算例外です こんな感じでしょうか。ついでに余計な最適化も入れてみましたが、 余計でしたらはずしてください。 Index: numeric.c =================================================================== --- numeric.c (revision 12589) +++ numeric.c (working copy) @@ -2280,6 +2280,9 @@ int neg = x < 0; long z = 1; + if (x == 0) return INT2FIX(0); + if (y == 0) return INT2FIX(1); + if (y == 1) return LONG2NUM(x); if (neg) x = -x; if (y & 1) z = x; y &= ~1; # そういえば 0**0 は 1 でいいんでしょうか。 -- Yusuke ENDOH