Index: Objects/complexobject.c =================================================================== --- Objects/complexobject.c (revision 72674) +++ Objects/complexobject.c (working copy) @@ -799,7 +799,7 @@ */ /* first look for forms starting with */ - z = PyOS_string_to_double(s, &end, PyExc_OverflowError); + z = PyOS_string_to_double(s, &end, NULL); if (z == -1.0 && PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_ValueError)) PyErr_Clear(); @@ -812,7 +812,7 @@ if (*s == '+' || *s == '-') { /* j | j */ x = z; - y = PyOS_string_to_double(s, &end, PyExc_OverflowError); + y = PyOS_string_to_double(s, &end, NULL); if (y == -1.0 && PyErr_Occurred()) { if (PyErr_ExceptionMatches(PyExc_ValueError)) PyErr_Clear(); Index: Misc/NEWS =================================================================== --- Misc/NEWS (revision 72674) +++ Misc/NEWS (working copy) @@ -12,6 +12,10 @@ Core and Builtins ----------------- +- Issue #5829: complex("1e500") no longer raises OverflowError. This + makes it consistent with float("1e500") and interpretation of real + and imaginary literals. + - Issue #5994: the marshal module now has docstrings. - Issue #5981: Fix three minor inf/nan issues in float.fromhex: Index: Lib/test/test_complex.py =================================================================== --- Lib/test/test_complex.py (revision 72674) +++ Lib/test/test_complex.py (working copy) @@ -409,6 +409,13 @@ @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), "test requires IEEE 754 doubles") + def test_overflow(self): + self.assertEqual(complex("1e500"), complex(INF, 0.0)) + self.assertEqual(complex("-1e500j"), complex(0.0, -INF)) + self.assertEqual(complex("-1e500+1.8e308j"), complex(-INF, INF)) + + @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), + "test requires IEEE 754 doubles") def test_repr_roundtrip(self): vals = [0.0, 1e-500, 1e-315, 1e-200, 0.0123, 3.1415, 1e50, INF, NAN] vals += [-v for v in vals]