]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-69639: Add mixed-mode rules for complex arithmetic (C-like) (GH-124829)
authorSergey B Kirpichev <skirpichev@gmail.com>
Tue, 26 Nov 2024 15:57:39 +0000 (18:57 +0300)
committerGitHub <noreply@github.com>
Tue, 26 Nov 2024 15:57:39 +0000 (17:57 +0200)
commit987311d42e3ec838de8ff27f9f0575aa791a6bde
treed05e0da42e5cdf50d774368dfede7f93ef2ee2bd
parentdcf629213bc046318c862ec0af5db3dfd1fc473a
gh-69639: Add mixed-mode rules for complex arithmetic (C-like) (GH-124829)

"Generally, mixed-mode arithmetic combining real and complex variables should
be performed directly, not by first coercing the real to complex, lest the sign
of zero be rendered uninformative; the same goes for combinations of pure
imaginary quantities with complex variables." (c) Kahan, W: Branch cuts for
complex elementary functions.

This patch implements mixed-mode arithmetic rules, combining real and
complex variables as specified by C standards since C99 (in particular,
there is no special version for the true division with real lhs
operand).  Most C compilers implementing C99+ Annex G have only these
special rules (without support for imaginary type, which is going to be
deprecated in C2y).
15 files changed:
Doc/c-api/complex.rst
Doc/library/cmath.rst
Doc/library/stdtypes.rst
Doc/reference/expressions.rst
Doc/whatsnew/3.14.rst
Include/cpython/complexobject.h
Include/internal/pycore_floatobject.h
Lib/test/test_builtin.py
Lib/test/test_capi/test_complex.py
Lib/test/test_complex.py
Misc/NEWS.d/next/Core_and_Builtins/2024-08-03-14-02-27.gh-issue-69639.mW3iKq.rst [new file with mode: 0644]
Modules/_testcapi/complex.c
Objects/complexobject.c
Objects/floatobject.c
Python/bltinmodule.c