More standard gates

Ouverte
#16 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
55/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
python, rust
Domaine
backend

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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).
Langage dominant
Rust
Étoiles
1
Forks
0
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de kaiwave/qsengine

Toutes les issues de kaiwave/qsengine

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.