summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--complex.c8
-rw-r--r--rational.c4
3 files changed, 9 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 4583473..d0420d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/complex.c b/complex.c
index c6c9d37..214d3a2 100644
--- a/complex.c
+++ b/complex.c
@@ -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 43917bc..65d3cf4 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);
}