From e0d427e855e514c758ffc8f776539abe70ad12d4 Mon Sep 17 00:00:00 2001 From: tadf Date: Fri, 13 Jun 2008 12:59:22 +0000 Subject: [PATCH] * rational.c (nurat_equal_p): Rational(0,x) and 0 are equivalent, anyway. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ rational.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index 1c041a0ca7..44ae5b4d48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Jun 13 21:55:48 2008 Tadayoshi Funaba + + * rational.c (nurat_equal_p): Rational(0,x) and 0 are equivalent, + anyway. + Fri Jun 13 21:26:39 2008 Tadayoshi Funaba * complex.c (string_to_c, nucomp_s_convert): preserve the current diff --git a/rational.c b/rational.c index d24195ac14..c81b89a4a7 100644 --- a/rational.c +++ b/rational.c @@ -865,6 +865,9 @@ nurat_equal_p(VALUE self, VALUE other) { get_dat1(self); + if (f_zero_p(dat->num) && f_zero_p(other)) + return Qtrue; + if (!FIXNUM_P(dat->den)) return Qfalse; if (FIX2LONG(dat->den) != 1) @@ -879,6 +882,9 @@ nurat_equal_p(VALUE self, VALUE other) { get_dat2(self, other); + if (f_zero_p(adat->num) && f_zero_p(bdat->num)) + return Qtrue; + return f_boolcast(f_equal_p(adat->num, bdat->num) && f_equal_p(adat->den, bdat->den)); }