ruby-changes:2295
From: ko1@a...
Date: 26 Oct 2007 17:14:42 +0900
Subject: [ruby-changes:2295] nobu - Ruby:r13786 (trunk, ruby_1_8): * numeric.c (fix_pow): returns 1.0 for 0**0.0.
nobu 2007-10-26 17:14:14 +0900 (Fri, 26 Oct 2007) New Revision: 13786 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/numeric.c trunk/ChangeLog trunk/numeric.c Log: * numeric.c (fix_pow): returns 1.0 for 0**0.0. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/numeric.c?r1=13786&r2=13785 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=13786&r2=13785 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13786&r2=13785 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/numeric.c?r1=13786&r2=13785 Index: ChangeLog =================================================================== --- ChangeLog (revision 13785) +++ ChangeLog (revision 13786) @@ -1,5 +1,7 @@ -Fri Oct 26 17:01:34 2007 Nobuyoshi Nakada <nobu@r...> +Fri Oct 26 17:14:14 2007 Nobuyoshi Nakada <nobu@r...> + * numeric.c (fix_pow): returns 1.0 for 0**0.0. + * numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084] Fri Oct 26 15:00:52 2007 Nobuyoshi Nakada <nobu@r...> Index: numeric.c =================================================================== --- numeric.c (revision 13785) +++ numeric.c (revision 13786) @@ -2361,6 +2361,7 @@ x = rb_int2big(FIX2LONG(x)); return rb_big_pow(x, y); case T_FLOAT: + if (RFLOAT(y)->value == 0.0) return rb_float_new(1.0); if (a == 0) { return rb_float_new(RFLOAT(y)->value < 0 ? (1.0 / zero) : 0.0); } Index: ruby_1_8/numeric.c =================================================================== --- ruby_1_8/numeric.c (revision 13785) +++ ruby_1_8/numeric.c (revision 13786) @@ -2247,12 +2247,10 @@ long a = FIX2LONG(x); if (FIXNUM_P(y)) { - long b; + long b = FIX2LONG(y); - b = FIX2LONG(y); if (b == 0) return INT2FIX(1); if (b == 1) return x; - a = FIX2LONG(x); if (a == 0) { if (b > 0) return INT2FIX(0); return rb_float_new(1.0 / zero); @@ -2280,6 +2278,7 @@ x = rb_int2big(FIX2LONG(x)); return rb_big_pow(x, y); case T_FLOAT: + if (RFLOAT(y)->value == 0.0) return rb_float_new(1.0); if (a == 0) { return rb_float_new(RFLOAT(y)->value < 0 ? (1.0 / zero) : 0.0); } Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 13785) +++ ruby_1_8/ChangeLog (revision 13786) @@ -1,5 +1,7 @@ -Fri Oct 26 17:01:34 2007 Nobuyoshi Nakada <nobu@r...> +Fri Oct 26 17:14:14 2007 Nobuyoshi Nakada <nobu@r...> + * numeric.c (fix_pow): returns 1.0 for 0**0.0. + * numeric.c (fix_pow): returns infinity for 0**-1. [ruby-dev:32084] Wed Oct 25 07:18:09 2007 James Edward Gray II <jeg2@r...> -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml