diff options
author | gogotanaka <gogotanaka@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-02-24 23:53:21 +0000 |
---|---|---|
committer | gogotanaka <gogotanaka@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-02-24 23:53:21 +0000 |
commit | 0c3a0d6588c6fe44d43edbc54d3f92553a5a1705 (patch) | |
tree | 61e19adcc91bd07698c23b41e970fa9d6bef4741 | |
parent | 0c4631b88013e159a9a13bad158911aad59408c1 (diff) | |
download | ruby-0c3a0d6588c6fe44d43edbc54d3f92553a5a1705.tar.gz |
* lib/cmath.rb (log): raise ArgumentError when more than 2 arguments
are passed. [ruby-core:66143] [Bug #10487]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49729 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/cmath.rb | 17 | ||||
-rw-r--r-- | test/ruby/test_complex.rb | 6 |
3 files changed, 12 insertions, 16 deletions
@@ -1,3 +1,8 @@ +Tue Feb 25 08:49:12 2015 Kazuki Tanaka <gogotanaka@ruby-lang.org> + + * lib/cmath.rb (log): raise ArgumentError when more than 2 arguments + are passed. [ruby-core:66143] [Bug #10487] + Tue Feb 25 02:15:17 2015 Kazuki Tanaka <gogotanaka@ruby-lang.org> * test/ruby/test_math.rb: Use assert_infinity instead of assert_equal(1.0/0, ...). diff --git a/lib/cmath.rb b/lib/cmath.rb index aee577c97c..e0c9139f8f 100644 --- a/lib/cmath.rb +++ b/lib/cmath.rb @@ -66,20 +66,12 @@ module CMath # it will be the base of logarithm. # # log(Complex(0,0)) #=> -Infinity+0.0i - def log(*args) + def log(z, b=::Math::E) begin - z, b = args - unless b.nil? || b.kind_of?(Numeric) - raise TypeError, "Numeric Number required" - end - if z.real? and z >= 0 and (b.nil? or b >= 0) - log!(*args) + if z.real? && z >= 0 && b >= 0 + log!(z, b) else - a = Complex(log!(z.abs), z.arg) - if b - a /= log(b) - end - a + Complex(log!(z.abs), z.arg) / log(b) end rescue NoMethodError handle_no_method_error @@ -397,4 +389,3 @@ module CMath module_function :handle_no_method_error end - diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb index 3625eb97a5..beccc8e4f3 100644 --- a/test/ruby/test_complex.rb +++ b/test/ruby/test_complex.rb @@ -950,9 +950,9 @@ class Complex_Test < Test::Unit::TestCase assert_in_delta(0.804, c.real, 0.001) assert_in_delta(1.107, c.imag, 0.001) - c = CMath.log(Complex(1, 2), Math::E) - assert_in_delta(0.804, c.real, 0.001) - assert_in_delta(1.107, c.imag, 0.001) + c = CMath.log(Complex(1, 2), Math::E**2) + assert_in_delta(0.402, c.real, 0.001) + assert_in_delta(0.5535, c.imag, 0.001) c = CMath.log(-1) assert_in_delta(0.0, c.real, 0.001) |