diff options
author | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-12 11:51:51 +0000 |
---|---|---|
committer | mrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-11-12 11:51:51 +0000 |
commit | ffa2b0061fa87df8010dcc8f5be7d30dc99e4d3f (patch) | |
tree | 31aa7b1762f198d5feff6fe8567e9192eac50614 /rational.c | |
parent | ea5b76a079c95535bdaf14824e48c9387fa947a6 (diff) |
rational.c: optimize Float#{numerator,denominator}
* rational.c (float_{numerator,denominator}): optimize
Float#{numerator,denominator}.
Author: Tadashi Saito <[email protected]>
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.c | 5 |
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)); } /* |