Skip to content

Add Paldus and Schur transform Qiskit gates - #749

Closed
kevinsung wants to merge 3 commits into
qiskit-community:mainfrom
kevinsung:paldus-transform
Closed

kevinsung wants to merge 3 commits into
qiskit-community:mainfrom
kevinsung:paldus-transform

Conversation

@kevinsung

@kevinsung kevinsung commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

This was made using Claude Opus 5.5.

- Grow the M register one bit at a time with sign extension instead of
  updating all of its bits at every step.
- Paldus: compute the orbital parity first, so each M and S update is a
  single increment controlled on the parity, complemented by beta to turn
  it into a decrement.
- Paldus: the low bits of N, 2S, and 2M are always equal, so drop the low
  bit of 2M as a rotation control and track only N / 2, rounded down,
  with one increment per orbital.
- Schur: the low bits of 2S and 2M are known at each step, so drop both as
  rotation controls, update only the high bits, and set the low bits at
  the end.

CX counts after transpiling to cx and u: Paldus norb=8 goes from 3274 to
1434, and Schur with 12 spins goes from 4834 to 1084.
Compile with generate_preset_pass_manager instead of transpile, report the
two-qubit gate depth alongside the CX count, and add the same resource
estimates for the Schur transform.
@kevinsung

Copy link
Copy Markdown
Collaborator Author

Going to work on this a bit more.

@kevinsung kevinsung closed this Oct 29, 2026
@kevinsung
kevinsung deleted the paldus-transform branch October 29, 2026 20:36
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