aboutsummaryrefslogtreecommitdiffstats
path: root/rational.c
diff options
context:
space:
mode:
authormrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-11-12 06:58:35 +0000
committermrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-11-12 06:58:35 +0000
commit12c76564dd6f31546dfc4f64b2be2435bb5bd938 (patch)
treea1adbafa2045fe30503cffbe098834fd5ce251aa /rational.c
parent7e333ebc4afd7c0edbafe001ecf3d1654577cc26 (diff)
downloadruby-12c76564dd6f31546dfc4f64b2be2435bb5bd938.tar.gz
rational.c: optimize Rational#to_i
* rational.c (nurat_truncate): optimize Rational#to_i. Author: Tadashi Saito <tad.a.digger@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'rational.c')
-rw-r--r--rational.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/rational.c b/rational.c
index d9363a2e5f..72a323353d 100644
--- a/rational.c
+++ b/rational.c
@@ -1243,9 +1243,9 @@ static VALUE
nurat_truncate(VALUE self)
{
get_dat1(self);
- if (f_negative_p(dat->num))
- return f_negate(f_idiv(f_negate(dat->num), dat->den));
- return f_idiv(dat->num, dat->den);
+ if (INT_NEGATIVE_P(dat->num))
+ return rb_int_uminus(rb_int_idiv(rb_int_uminus(dat->num), dat->den));
+ return rb_int_idiv(dat->num, dat->den);
}
static VALUE