Skip to content

Consolidate SymPy polynomial handling into a single helper - #556

Merged
perlinm merged 1 commit into
mainfrom
sympy
Jul 31, 2026
Merged

Consolidate SymPy polynomial handling into a single helper#556
perlinm merged 1 commit into
mainfrom
sympy

Conversation

@perlinm

@perlinm perlinm commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Several places independently split a SymPy polynomial into its monomial terms, and most did so incorrectly: they iterated .args / make_args without expanding, so products of sums, single-term polynomials, and raw Poly objects (whose .args also include the generators) were mishandled.

This PR adds abstract.iter_monomial_terms, which expands products of sums and returns the monomials of any Expr / Poly / integer uniformly, and route all call sites through it: GroupRing.eval, BBCode.get_canonical_form, get_syndrome_subgraphs, and get_equivalent_toric_layout_code_data.

This GR also fixes bugs in get_canonical_form: the coefficient was multiplied once per symbol (coeff**num_symbols, wrong for non-binary fields), a Poly argument leaked its generators as spurious terms, and the return annotation claimed a tuple while a single expression was returned.

Several places independently split a SymPy polynomial into its monomial
terms, and most did so incorrectly: they iterated `.args` / `make_args`
without expanding, so products of sums, single-term polynomials, and raw
`Poly` objects (whose `.args` also include the generators) were mishandled.

Add `abstract.iter_monomial_terms`, which expands products of sums and
returns the monomials of any Expr / Poly / integer uniformly, and route all
call sites through it: `GroupRing.eval`, `BBCode.get_canonical_form`,
`get_syndrome_subgraphs`, and `get_equivalent_toric_layout_code_data`.

This also fixes bugs in `get_canonical_form`: the coefficient was multiplied
once per symbol (coeff**num_symbols, wrong for non-binary fields), a `Poly`
argument leaked its generators as spurious terms, and the return annotation
claimed a tuple while a single expression was returned.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@perlinm
perlinm merged commit fafef0a into main Jul 31, 2026
3 checks passed
@perlinm
perlinm deleted the sympy branch July 31, 2026 11:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant