diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-22 11:57:43 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-22 11:57:43 +0000 |
commit | b53d547f38894962f299442219c2ed5814e63715 (patch) | |
tree | 2b5fd1f4f1fc416d2fd64f1d4a7b3a384c77ca5e | |
parent | 46c64caff68dd536eeeaa1c945eb66b886a0721d (diff) | |
download | ruby-b53d547f38894962f299442219c2ed5814e63715.tar.gz |
* complex.c (f_complex_polar): simple bug reproduced only when y is
a float but x is not a float.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50601 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | complex.c | 2 | ||||
-rw-r--r-- | test/ruby/test_complex.rb | 1 |
3 files changed, 7 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Fri May 22 20:56:33 2015 NAKAMURA Usaku <usa@ruby-lang.org> + + * complex.c (f_complex_polar): simple bug reproduced only when y is + a float but x is not a float. + Fri May 22 19:42:06 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> * process.c (rb_spawn_process): do not discard global escape @@ -592,8 +592,8 @@ f_complex_polar(VALUE klass, VALUE x, VALUE y) y = DBL2NUM(imag); } else { + y = f_mul(x, DBL2NUM(sin(arg))); x = f_mul(x, DBL2NUM(cos(arg))); - y = f_mul(y, DBL2NUM(sin(arg))); if (canonicalization && f_zero_p(y)) return x; } return nucomp_s_new_internal(klass, x, y); diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb index beccc8e4f3..3205329a87 100644 --- a/test/ruby/test_complex.rb +++ b/test/ruby/test_complex.rb @@ -212,6 +212,7 @@ class Complex_Test < Test::Unit::TestCase def test_polar assert_equal([1,2], Complex.polar(1,2).polar) + assert_equal(Complex.polar(1.0, Math::PI * 2 / 3), Complex.polar(1, Math::PI * 2 / 3)) end def test_uplus |