diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-02-25 02:26:22 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-02-25 02:26:22 +0000 |
commit | c942417791e74428fce1ed2a722c679fca5f131e (patch) | |
tree | 069d9468528c3ecea6b0a074c62f7be9477101f9 | |
parent | d3f73f45d8342e37a814eeb8c98e1d04f451a3b4 (diff) |
* rational.c (nurat_expt): use Float#** when Rational ** Float.
This fixes Rational(3,1)**3.0=>26.99999999999999 on FreeBSD.
* complex.c (rb_fexpt): removed.
Note that this function is not static but is private.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26760 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | complex.c | 8 | ||||
-rw-r--r-- | rational.c | 4 |
3 files changed, 9 insertions, 11 deletions
@@ -1,3 +1,11 @@ +Thu Feb 25 11:17:01 2010 NARUSE, Yui <naruse@ruby-lang.org> + + * rational.c (nurat_expt): use Float#** when Rational ** Float. + This fixes Rational(3,1)**3.0=>26.99999999999999 on FreeBSD. + + * complex.c (rb_fexpt): removed. + Note that this function is not static but is private. + Thu Feb 25 00:43:57 2010 Koichi Sasada <ko1@atdot.net> * insns.def: Change the operand type of setinlinecache @@ -825,14 +825,6 @@ m_exp(VALUE x) f_mul(ere, m_sin_bang(im))); } -VALUE -rb_fexpt(VALUE x, VALUE y) -{ - if (f_zero_p(x) || (!k_float_p(x) && !k_float_p(y))) - return f_expt(x, y); - return m_exp(f_mul(m_log(x), y)); -} - inline static VALUE f_reciprocal(VALUE x) { diff --git a/rational.c b/rational.c index 43917bc8da..65d3cf4a35 100644 --- a/rational.c +++ b/rational.c @@ -901,8 +901,6 @@ nurat_fdiv(VALUE self, VALUE other) return f_to_f(f_div(self, other)); } -extern VALUE rb_fexpt(VALUE x, VALUE y); - /* * call-seq: * rat ** numeric -> numeric_result @@ -959,7 +957,7 @@ nurat_expt(VALUE self, VALUE other) /* fall through */ case T_FLOAT: case T_RATIONAL: - return rb_fexpt(f_to_f(self), other); + return f_expt(f_to_f(self), other); default: return rb_num_coerce_bin(self, other, id_expt); } |