ruby-changes:16891
From: nobu <ko1@a...>
Date: Fri, 6 Aug 2010 20:14:03 +0900 (JST)
Subject: [ruby-changes:16891] Ruby:r28887 (trunk): * rational.c (nurat_div): divided by infinity should be zero.
nobu 2010-08-06 20:13:48 +0900 (Fri, 06 Aug 2010) New Revision: 28887 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28887 Log: * rational.c (nurat_div): divided by infinity should be zero. Modified files: trunk/ChangeLog trunk/rational.c trunk/test/ruby/test_rational.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 28886) +++ ChangeLog (revision 28887) @@ -1,5 +1,7 @@ -Fri Aug 6 20:12:28 2010 Nobuyoshi Nakada <nobu@r...> +Fri Aug 6 20:13:42 2010 Nobuyoshi Nakada <nobu@r...> + * rational.c (nurat_div): divided by infinity should be zero. + * rational.c (nurat_div): divided by float zero should be infinity. [ruby-core:31626] Index: test/ruby/test_rational.rb =================================================================== --- test/ruby/test_rational.rb (revision 28886) +++ test/ruby/test_rational.rb (revision 28887) @@ -298,6 +298,7 @@ assert_raise(ZeroDivisionError){Rational(1, 3) / 0} assert_raise(ZeroDivisionError){Rational(1, 3) / Rational(0)} + assert_equal(0, Rational(1, 3) / Float::INFINITY) assert((Rational(1, 3) / 0.0).infinite?, '[ruby-core:31626]') end @@ -548,6 +549,7 @@ assert_equal(0.25, c.fdiv(2)) assert_equal(0.25, c.fdiv(2.0)) + assert_equal(0, c.fdiv(Float::INFINITY)) assert(c.fdiv(0).infinite?, '[ruby-core:31626]') end @@ -1070,6 +1072,7 @@ assert_equal(Rational(5000000000), 10000000000.quo(2)) assert_equal(0.5, 1.0.quo(2)) assert_equal(Rational(1,4), Rational(1,2).quo(2)) + assert_equal(0, Rational(1,2).quo(Float::INFINITY)) assert(Rational(1,2).quo(0.0).infinite?, '[ruby-core:31626]') assert_equal(0.5, 1.fdiv(2)) Index: rational.c =================================================================== --- rational.c (revision 28886) +++ rational.c (revision 28887) @@ -874,14 +874,7 @@ get_dat1(self); if (isnan(x)) return DBL2NUM(NAN); - if (isinf(x)) { - if (RTEST(f_negative_p(dat->num)) == (x < 0)) { - return DBL2NUM(INFINITY); - } - else { - return DBL2NUM(-INFINITY); - } - } + if (isinf(x)) return INT2FIX(0); if (x != 0.0 && modf(x, &den) == 0.0) { return rb_rational_raw2(dat->num, f_mul(rb_dbl2big(den), dat->den)); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/