From fff1183ffefc1cc29860672eb39992a942c33dfb Mon Sep 17 00:00:00 2001 From: tadf Date: Sun, 12 Jul 2009 11:46:40 +0000 Subject: * numeric.c (fix_divide): added an entry to rational. * rational.c (rb_rational_reciprocal): added. * complex.c (f_reciprocal): added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- numeric.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'numeric.c') diff --git a/numeric.c b/numeric.c index 5846610c71..53da949609 100644 --- a/numeric.c +++ b/numeric.c @@ -2268,6 +2268,8 @@ fix_fdiv(VALUE x, VALUE y) } } +VALUE rb_rational_reciprocal(VALUE x); + static VALUE fix_divide(VALUE x, VALUE y, ID op) { @@ -2295,6 +2297,10 @@ fix_divide(VALUE x, VALUE y, ID op) return rb_dbl2big(floor(div)); } } + case T_RATIONAL: + if (op == '/' && FIX2LONG(x) == 1) + return rb_rational_reciprocal(y); + return rb_funcall(rb_rational_new1(x), op, 1, y); default: return rb_num_coerce_bin(x, y, op); } -- cgit v1.2.3