Author: Jasper Schulz <jasper.sch...@student.hpi.uni-potsdam.de> Branch: numpypy-complex2 Changeset: r55796:d97ef3a2ab10 Date: 2012-06-23 15:22 +0200 http://bitbucket.org/pypy/pypy/changeset/d97ef3a2ab10/
Log: Complex numbers with negative imag are now formatted correctly. ``complex(1, -2)`` => ``(1-2j`` diff --git a/pypy/module/micronumpy/test/test_dtypes.py b/pypy/module/micronumpy/test/test_dtypes.py --- a/pypy/module/micronumpy/test/test_dtypes.py +++ b/pypy/module/micronumpy/test/test_dtypes.py @@ -434,20 +434,17 @@ numpy.complexfloating, numpy.inexact, numpy.number, numpy.generic, complex, object) - c = numpy.complex128(complex(1, 2)) - assert c.real == 1 - assert c.imag == 2 - assert repr(c) == '(1+2j)' + for real, imag, should in [ + (1, 2, '(1+2j)'), + (0, 1, '1j'), + (1, 0, '(1+0j)'), + (-1, -2, '(-1-2j)') + ]: - c = numpy.complex128(complex(0, 1)) - assert c.real == 0 - assert c.imag == 1 - assert repr(c) == '1j' - - c = numpy.complex128(complex(1, 0)) - assert c.real == 1 - assert c.imag == 0 - assert repr(c) == '(1+0j)' + c = numpy.complex128(complex(real, imag)) + assert c.real == real + assert c.imag == imag + assert repr(c) == should def test_complex_dtype(self): import _numpypy as numpy diff --git a/pypy/module/micronumpy/types.py b/pypy/module/micronumpy/types.py --- a/pypy/module/micronumpy/types.py +++ b/pypy/module/micronumpy/types.py @@ -937,11 +937,14 @@ def str_format(self, box): imag_str = str_format(box.imag) + 'j' + + # (0+2j) => 2j if box.real == 0: - return imag_str - + return imag_str + real_str = str_format(box.real) - return ''.join(['(', real_str, '+', imag_str, ')']) + op = '+' if box.imag >= 0 else '' + return ''.join(['(', real_str, op, imag_str, ')']) NonNativeComplex128 = Complex128 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit