Skip to content

Incorrect overflows for complex powers when base is infinite #156693

Closed

Description

@skirpichev

Bug report

Bug description:

Consider this, for example:

Python 3.16.0a0 (heads/main:ee68f5f46a1, Aug 12 2026, 11:19:39) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> complex('inf+0j')**1
Traceback (most recent call last):
  File "<python-input-0>", line 1, in <module>
    complex('inf+0j')**1
    ~~~~~~~~~~~~~~~~~^^~
OverflowError: complex exponentiation

c.f. the real case:

>>> float('inf')**1
inf

See also http://stackoverflow.com/q/18243270/270986

The generic algorithm returns a correct answer (match GNU MPC, for example), but sets errno incorrectly:

>>> import _testcapi
>>> _testcapi._py_c_pow(complex('inf'), 1)
((inf+nanj), 34)
>>> from gmpy2 import mpc
>>> mpc('inf')**1
mpc('inf+nanj')

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Linked PRs

Activity

  1. self-assigned this
    on Aug 31, 2026
  2. added
    type-bugAn unexpected behavior, bug, or error
    interpreter-core(Objects, Python, Grammar, and Parser dirs)
    on Aug 31, 2026
  3. removed their assignment
    on Aug 31, 2026
  4. serhiy-storchaka commented on Sep 3, 2026

    @serhiy-storchaka
    Member

    complex('inf+0j')**1 was fixed by #124243. Are there other examples?

  5. skirpichev commented on Sep 3, 2026

    @skirpichev
    MemberAuthor

    I think no, my fix was based on #124243.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    interpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions