summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-22 11:57:43 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-05-22 11:57:43 +0000
commitb53d547f38894962f299442219c2ed5814e63715 (patch)
tree2b5fd1f4f1fc416d2fd64f1d4a7b3a384c77ca5e
parent46c64caff68dd536eeeaa1c945eb66b886a0721d (diff)
* 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--ChangeLog5
-rw-r--r--complex.c2
-rw-r--r--test/ruby/test_complex.rb1
3 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fd7604..bf9c72c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/complex.c b/complex.c
index 365fb7a..50d53af 100644
--- a/complex.c
+++ b/complex.c
@@ -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 beccc8e..3205329 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