• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Qiskit / qiskit-fermions / 33872050175
98%

Build:
DEFAULT BRANCH: main
Ran 04 Sep 2026 12:22PM UTC
Jobs 1
Files 108
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

04 Sep 2026 12:17PM UTC coverage: 98.194% (+0.01%) from 98.184%
33872050175

push

github

web-flow
feat(transpiler): preserve the mapped Pauli term order through synthesis (#310)

`MapperFnEvolutionSynthesis` simplified the operator its `mapper_fn` returned.
Simplifying sorts the Pauli terms into a canonical order, and a product formula
synthesizes them in the order it receives them, so whatever order the mapper had
chosen was discarded before it could matter. Since #297 the Jordan-Wigner mapper
already merges duplicate terms itself, so the call had also stopped earning its
keep: on the operators tested here it merged nothing and only reordered.

Passing the mapped operator through untouched makes the mapper's term order part
of its contract. That is worth having because term order decides what can share a
circuit layer: on a six-mode Fermi-Hubbard chain grouped into three flow sets,
mapping group by group instead of monolithically takes the two-qubit depth from
26 to 10 at an unchanged CX count, and lowers the Trotter error by roughly a
factor of two at every step count.

This is a breaking change for existing pipelines -- same gate count and same
evolution, but the rotations come out in a different order and the depth can
differ. Two adapters give the choice back:

  MapperFnEvolutionSynthesis(simplify(jordan_wigner))    # canonical order
  MapperFnEvolutionSynthesis(group_wise(jordan_wigner))  # grouped order

They live next to the plugin rather than in `mappers`, because the order they
control only becomes observable through this plugin. Both are plain
`MapperFunction` values, so they compose with `product_formula` and with any
user-written mapper.

One consequence deserves the `.. caution::` it now carries: the operators of the
Rust core do not preserve the order their terms were added in, so an unsimplified
mapper may emit them differently between runs. The circuits are all equally valid
and approximate the same evolution, but they need not be identical, and metrics
like depth can vary. `test_custom_layout` pinned an exact depth and so needed... (continued)

15 of 15 new or added lines in 2 files covered. (100.0%)

13426 of 13673 relevant lines covered (98.19%)

482421.71 hits per line

Jobs
ID Job ID Ran Files Coverage
1 33872050175.1 04 Sep 2026 12:22PM UTC 108
98.19
GitHub Action Run
Source Files on build 33872050175
  • Tree
  • List 108
  • Changed 4
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33872050175
  • cef7a896 on github
  • Prev Build on main (#33862333505)
  • Next Build on main (#33872240997)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc