mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* complex.c (nucomp_expt): do not use rb_fexpt.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8bacaf1f5c
commit
59a9da6443
3 changed files with 29 additions and 11 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Tue Jun 30 01:19:53 2009 Tadayoshi Funaba <tadf@dotrb.org>
|
||||||
|
|
||||||
|
* complex.c (nucomp_expt): do not use rb_fexpt.
|
||||||
|
|
||||||
Mon Jun 29 22:50:10 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
|
Mon Jun 29 22:50:10 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp>
|
||||||
|
|
||||||
* Doxyfile.in: removed. merged into template/Doxyfile.template
|
* Doxyfile.in: removed. merged into template/Doxyfile.template
|
||||||
|
|
11
complex.c
11
complex.c
|
@ -825,14 +825,6 @@ nucomp_expt(VALUE self, VALUE other)
|
||||||
other = dat->real; /* c14n */
|
other = dat->real; /* c14n */
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
get_dat1(self);
|
|
||||||
|
|
||||||
if (k_exact_p(dat->imag) && f_zero_p(dat->imag) && f_real_p(other))
|
|
||||||
return f_complex_new1(CLASS_OF(self),
|
|
||||||
rb_fexpt(dat->real, other)); /* c14n */
|
|
||||||
}
|
|
||||||
|
|
||||||
if (k_complex_p(other)) {
|
if (k_complex_p(other)) {
|
||||||
VALUE r, theta, nr, ntheta;
|
VALUE r, theta, nr, ntheta;
|
||||||
|
|
||||||
|
@ -883,7 +875,8 @@ nucomp_expt(VALUE self, VALUE other)
|
||||||
|
|
||||||
r = f_abs(self);
|
r = f_abs(self);
|
||||||
theta = f_arg(self);
|
theta = f_arg(self);
|
||||||
return f_complex_polar(CLASS_OF(self), rb_fexpt(r, other),
|
|
||||||
|
return f_complex_polar(CLASS_OF(self), f_expt(r, other),
|
||||||
f_mul(theta, other));
|
f_mul(theta, other));
|
||||||
}
|
}
|
||||||
return rb_num_coerce_bin(self, other, id_expt);
|
return rb_num_coerce_bin(self, other, id_expt);
|
||||||
|
|
25
lib/cmath.rb
25
lib/cmath.rb
|
@ -4,8 +4,10 @@ module CMath
|
||||||
|
|
||||||
alias exp! exp
|
alias exp! exp
|
||||||
alias log! log
|
alias log! log
|
||||||
|
alias log2! log2
|
||||||
alias log10! log10
|
alias log10! log10
|
||||||
alias sqrt! sqrt
|
alias sqrt! sqrt
|
||||||
|
alias cbrt! cbrt
|
||||||
|
|
||||||
alias sin! sin
|
alias sin! sin
|
||||||
alias cos! cos
|
alias cos! cos
|
||||||
|
@ -47,6 +49,14 @@ module CMath
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def log2(z)
|
||||||
|
if z.real? and z >= 0
|
||||||
|
log2!(z)
|
||||||
|
else
|
||||||
|
log(z) / log!(2)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def log10(z)
|
def log10(z)
|
||||||
if z.real? and z >= 0
|
if z.real? and z >= 0
|
||||||
log10!(z)
|
log10!(z)
|
||||||
|
@ -74,6 +84,15 @@ module CMath
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cbrt(z)
|
||||||
|
if z.real? and z >= 0
|
||||||
|
cbrt!(z)
|
||||||
|
else
|
||||||
|
# exp(log(z) * (1.0/3))
|
||||||
|
Complex(z) ** (1.0/3)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def sin(z)
|
def sin(z)
|
||||||
if z.real?
|
if z.real?
|
||||||
sin!(z)
|
sin!(z)
|
||||||
|
@ -186,10 +205,14 @@ module CMath
|
||||||
module_function :exp
|
module_function :exp
|
||||||
module_function :log!
|
module_function :log!
|
||||||
module_function :log
|
module_function :log
|
||||||
|
module_function :log2!
|
||||||
|
module_function :log2
|
||||||
module_function :log10!
|
module_function :log10!
|
||||||
module_function :log10
|
module_function :log10
|
||||||
module_function :sqrt!
|
module_function :sqrt!
|
||||||
module_function :sqrt
|
module_function :sqrt
|
||||||
|
module_function :cbrt!
|
||||||
|
module_function :cbrt
|
||||||
|
|
||||||
module_function :sin!
|
module_function :sin!
|
||||||
module_function :sin
|
module_function :sin
|
||||||
|
@ -221,8 +244,6 @@ module CMath
|
||||||
module_function :atanh!
|
module_function :atanh!
|
||||||
module_function :atanh
|
module_function :atanh
|
||||||
|
|
||||||
module_function :log2
|
|
||||||
module_function :cbrt
|
|
||||||
module_function :frexp
|
module_function :frexp
|
||||||
module_function :ldexp
|
module_function :ldexp
|
||||||
module_function :hypot
|
module_function :hypot
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue