* 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
This commit is contained in:
parent
d3f73f45d8
commit
c942417791
@ -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>
|
Thu Feb 25 00:43:57 2010 Koichi Sasada <ko1@atdot.net>
|
||||||
|
|
||||||
* insns.def: Change the operand type of setinlinecache
|
* insns.def: Change the operand type of setinlinecache
|
||||||
|
@ -825,14 +825,6 @@ m_exp(VALUE x)
|
|||||||
f_mul(ere, m_sin_bang(im)));
|
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
|
inline static VALUE
|
||||||
f_reciprocal(VALUE x)
|
f_reciprocal(VALUE x)
|
||||||
{
|
{
|
||||||
|
@ -901,8 +901,6 @@ nurat_fdiv(VALUE self, VALUE other)
|
|||||||
return f_to_f(f_div(self, other));
|
return f_to_f(f_div(self, other));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern VALUE rb_fexpt(VALUE x, VALUE y);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rat ** numeric -> numeric_result
|
* rat ** numeric -> numeric_result
|
||||||
@ -959,7 +957,7 @@ nurat_expt(VALUE self, VALUE other)
|
|||||||
/* fall through */
|
/* fall through */
|
||||||
case T_FLOAT:
|
case T_FLOAT:
|
||||||
case T_RATIONAL:
|
case T_RATIONAL:
|
||||||
return rb_fexpt(f_to_f(self), other);
|
return f_expt(f_to_f(self), other);
|
||||||
default:
|
default:
|
||||||
return rb_num_coerce_bin(self, other, id_expt);
|
return rb_num_coerce_bin(self, other, id_expt);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user