From: Tadashi Saito Date: 2003-07-26T18:07:44+09:00 Subject: [ruby-dev:20916] Re: 0**(-1) with rational 斎藤です。 ----- Original Message ----- From: "石塚圭樹" Sent: Saturday, July 26, 2003 7:47 AM Subject: [ruby-dev:20907] Re: 0**(-1) with rational > 0**-1 => Infinity(Floatの) > 0.0**-1 => Infinity(Floatの) > Ratinal(0)**-1 => Rational(1,0) > BigDecimal.new("0")**-1 => 0.0 BigDecimalについてですが、手元で試したところ、 % ruby -rbigdecimal -ve 'puts BigDecimal.new("0")**-1' ruby 1.8.0 (2003-07-25) [i686-linux] Infinity となりました。「=> 0.0」は間違いではないでしょうか。 > 0**0 => 1 > 0.0**0 => 1 > Rational(0)**0 => Rational(1,1) > BigDecimal.new("0")**0 => -0.0 こっちはやはりBigDecimalのバグでしょうか? Index: bigdecimal.c =================================================================== RCS file: /src/ruby/ext/bigdecimal/bigdecimal.c,v retrieving revision 1.13 diff -u -p -r1.13 bigdecimal.c --- bigdecimal.c 25 Jul 2003 02:26:56 -0000 1.13 +++ bigdecimal.c 26 Jul 2003 09:01:56 -0000 @@ -3837,6 +3837,8 @@ VpPower(Real *y, Real *x, S_INT n) n = -n; if(sign<0) sign = (n%2)?(-1):(1); VpSetInf (y,sign); + } else if(n==0) { + VpSetOne(y); } else { if(sign<0) sign = (n%2)?(-1):(1); VpSetZero(y,sign); -- 斎藤ただし