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

Qiskit / qiskit / 24834692837
87%
main: 88%

Build:
Build:
LAST BUILD BRANCH: fix-qasm3-experimental-delay-units
DEFAULT BRANCH: main
Ran 23 Apr 2026 12:44PM UTC
Jobs 1
Files 933
Run time 3min
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

23 Apr 2026 12:16PM UTC coverage: 87.491%. Remained the same
24834692837

push

github

web-flow
Improve commutation checking of Pauli product rotations and measurements (#15815)

* Coercing integer types to floats when appending a PPR to a circuit

* Extending RemoveIdentityEquiv and CommutativeOptimization to handle PPRs

* reno

* Improve commutation checking of PPRs and PPMs

For pairs of PPRs/PPMs we can construct generators as Paulis rather
than SparseObservables, and we can check commutativity by checking
the commutativity of Paulis.

* reno

* canonicalizing PPM instruction as well

* faster method based on comparing two sorted vectors

* Revert "faster method based on comparing two sorted vectors"

This reverts commit 087362f15.

* moving the efficient check to commutative optimization

* More tests for commutations of pauli-based gates

* Improved tests for commutations between different types of pauli-based gates
* Added tests with varying qubit indices

* Adding CommutativeOptimization tests

* enforcing PPM & PPR types for sorted checking

* Replacing vec by hash_map

The complexity should not scale with the number of qubits in the circuit.

* sorting arguments before pauli-based check

* Addressing review comments by Janani

* improving comments and docstrings
* improving release note
* adding more tests

* removing gates equivalent to identity

In the initial implementation we have decided that CommutativeOptimization
should not remove gates equivalent to identity, as in the full transpiler pipeline
this would be done by RemoveIdentityEquivalent pass. However, if CommutativeOptimization runs
in standalone, keeping identity-equivalent gates leads to a degradation in performance since
they obviously commute with everything.

This is important in the context of this PR since to apply the efficient generator-based
check for two PauliProductRotations (more generally Pauli-based gates), we need to know
that neither gate is equivalent to identity; while checking this on every call to the
commutation checker ... (continued)

123 of 125 new or added lines in 2 files covered. (98.4%)

26 existing lines in 4 files now uncovered.

104783 of 119764 relevant lines covered (87.49%)

981815.83 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
96.88
0.03% crates/transpiler/src/passes/commutative_optimization.rs

Coverage Regressions

Lines Coverage ∆ File
12
97.15
0.0% crates/qasm2/src/parse.rs
9
73.88
-0.37% crates/circuit/src/parameter/symbol_expr.rs
4
91.77
-0.51% crates/qasm2/src/lex.rs
1
90.53
0.0% crates/circuit/src/parameter/parameter_expression.rs
Jobs
ID Job ID Ran Files Coverage
1 24834692837.1 23 Apr 2026 12:44PM UTC 933
87.49
GitHub Action Run
Source Files on build 24834692837
  • Tree
  • List 933
  • Changed 8
  • Source Changed 3
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24834692837
  • e8f058ec on github
  • Prev Build on gh-readonly-queue/main/pr-16001-c8fa311a8b4870c37e1f6e19d3078770cca6a7f8 (#24830209277)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc