More standard gates

Offen
#16 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
python, rust
Bereich
backend

Rechercherichtung

Start with src/gates.rs and the existing gate methods; the issue says single-qubit and controlled gates follow that pattern, while mcx uses control_mask and the multi-qubit rotations and cswap need the listed decompositions. Then inspect the drawer’s SYMBOLS table, the type stub, and the gates documentation page. Done means adding the requested gates and measure_all behavior, with each represented in those supporting files.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement
What you want to do

Build common circuits without writing unitary matrices by hand.

Implementation notes
  • The single-qubit and controlled ones need only a matrix in src/gates.rs and a method, the same
    as existing gates. mcx maps straight onto control_mask.
  • rzz is diagonal, so it is a phase that depends on the parity of the two bits. Without a two-qubit
    kernel, decompose it as CX · RZ · CX. rxx and ryy are the same with basis changes.
  • cswap(c, a, b) (control c, swap a and b) is cx(b, a), then ccx(c, a, b), then cx(b, a).
  • Add every gate to the drawer's SYMBOLS table, the type stub and the gates docs page.
What it could look like
qc.sx(0); qc.sxdg(0)
qc.cy(0, 1); qc.ch(0, 1); qc.crx(0, 1, t); qc.cry(0, 1, t)
qc.rzz(0, 1, t); qc.rxx(0, 1, t); qc.ryy(0, 1, t)
qc.cswap(0, 1, 2)
qc.mcx([0, 1, 2, 3], 4)     # any number of controls
qc.measure_all()            # adds classical bits if needed, like Qiskit
Contributing
  • I would like to open a pull request for this (see CONTRIBUTING.md).
Vorherrschende Sprache
Rust
Sterne
1
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus kaiwave/qsengine

Alle Issues in kaiwave/qsengine

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.