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

Qiskit / qiskit-fermions / 33876183741
98%

Build:
DEFAULT BRANCH: main
Ran 04 Sep 2026 01:10PM UTC
Jobs 1
Files 112
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 01:05PM UTC coverage: 98.194% (-0.003%) from 98.197%
33876183741

push

github

web-flow
feat(circuit): add a fermionic Suzuki-Trotter synthesis method (#315)

`FermionicLieTrotter` applies each factor of the split once, for the full evolution
time. That is first order, and the only way to improve on it was to grow the number
of factors. This adds the symmetric Suzuki formulas, which cancel the lower-order
error terms by composing the factors in a palindrome, plus a `reps` argument that
divides the evolution into several shorter steps.

The point of doing this in fermionic space is the partition. A Suzuki formula
applied after the fermion-to-qubit mapping can only split Pauli terms, because the
grouping does not survive the mapping; here the formula reorders and rescales the
operator's own groups. On a six-mode Fermi-Hubbard chain grouped into three flow
sets, order 2 with 4 repetitions reaches ~2x lower Trotter error than a second-order
qubit-side formula at slightly fewer two-qubit gates.

The schedule is a pure function of `(order, num_factors, reps)` returning
`(factor_index, time_scale)` pairs, which keeps the combinatorics separate from
operator handling and testable on its own. Its invariant -- that the scales of any
one factor sum to 1 -- is what makes the emitted circuit implement the intended
total evolution time, so it is asserted directly over a sweep of the parameters.

Two things are deliberate. A single factor short-circuits to one gate: it commutes
with itself, so the formula is exact at any order, and recursing would emit up to
`5**((order-2)/2)` gates that merely re-split the same operator. And the formula's
scale is applied to the emitted gate's *time* rather than to its operator, since
scaling an operator drops its groups and would make the gate's label misreport the
physics.

`FermionicLieTrotter` becomes a subclass of this, fixing the order to 1. First order
is the degenerate case of the recursion -- `_recurse` returns the blocks untouched --
so the two produced identical definitions already, and keeping separate
imp... (continued)

51 of 51 new or added lines in 3 files covered. (100.0%)

1 existing line in 1 file now uncovered.

13486 of 13734 relevant lines covered (98.19%)

480279.03 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
99.89
-0.11% crates/core/src/mappers/library/jordan_wigner.rs
Jobs
ID Job ID Ran Files Coverage
1 33876183741.1 04 Sep 2026 01:10PM UTC 112
98.19
GitHub Action Run
Source Files on build 33876183741
  • Tree
  • List 112
  • Changed 3
  • Source Changed 2
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33876183741
  • b68b77bb on github
  • Prev Build on main (#33873559976)
  • Next Build on main (#33877189194)
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