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)); }