aboutsummaryrefslogtreecommitdiffstats
path: root/rational.c
diff options
context:
space:
mode:
authormrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-11-12 11:51:51 +0000
committermrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-11-12 11:51:51 +0000
commitce35f121872f5a7b3b0690f692792f52c554966d (patch)
tree31aa7b1762f198d5feff6fe8567e9192eac50614 /rational.c
parent765e7eec88b43b38829b1de31155471c36adeba8 (diff)
downloadruby-ce35f121872f5a7b3b0690f692792f52c554966d.tar.gz
rational.c: optimize Float#{numerator,denominator}
* rational.c (float_{numerator,denominator}): optimize Float#{numerator,denominator}. Author: Tadashi Saito <tad.a.digger@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'rational.c')
-rw-r--r--rational.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/rational.c b/rational.c
index 1e40841bee..67752ff961 100644
--- a/rational.c
+++ b/rational.c
@@ -1924,6 +1924,7 @@ integer_denominator(VALUE self)
return INT2FIX(1);
}
+static VALUE float_to_r(VALUE self);
/*
* call-seq:
* flo.numerator -> integer
@@ -1940,7 +1941,7 @@ float_numerator(VALUE self)
double d = RFLOAT_VALUE(self);
if (isinf(d) || isnan(d))
return self;
- return rb_call_super(0, 0);
+ return nurat_numerator(float_to_r(self));
}
/*
@@ -1958,7 +1959,7 @@ float_denominator(VALUE self)
double d = RFLOAT_VALUE(self);
if (isinf(d) || isnan(d))
return INT2FIX(1);
- return rb_call_super(0, 0);
+ return nurat_denominator(float_to_r(self));
}
/*