summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-12 11:46:40 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-07-12 11:46:40 +0000
commitfff1183ffefc1cc29860672eb39992a942c33dfb (patch)
tree372546bcea5a90bcd1aba0d556742ee09f20add7 /numeric.c
parent17c1e454055eaa8e6884e23a195a5fc65ed4277f (diff)
* 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
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c6
1 files changed, 6 insertions, 0 deletions
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);
}