[FEATURE] Decompose `p`, `phaseshift` and `u1` as `rz` instead of `h; rx; h`
Maintainer thường phản hồi trong vòng 1 ngày
Một pull request liên quan đã được merge.
- #470 của @tonycoder-hub — đã merge
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
Hướng nghiên cứu
Start with phaseshift_gate and ONE_QUBIT_ROTATION_MAP in src/pyqasm/maps/gates.py, then read the phaseshift-gate section of docs/gate_decompositions.md and inspect the existing decomposition tests. Verify single-gate unrolling and the CLIFFORD_T rebases for p(pi/4) and p(pi/2). Run the unitary checks for the changed decomposition, including csx and rccx, and confirm they match up to global phase.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Feature Description
unroll decomposes p, phaseshift and u1 into three gates, h; rx(θ); h. A single rz(θ) gives the same gate up to a global phase. The longer form then grows during rebase, because each h expands again:
| Input | Basis | Output on main |
Output for the same gate written as rz |
|---|---|---|---|
p(0.3) q[0]; |
ROTATIONAL_CX |
5 gates: ry(π/2); rx(π); rx(0.3); ry(π/2); rx(π) |
rz(0.3) |
p(pi/4) q[0]; |
CLIFFORD_T |
5 gates: h; h; t; h; h |
t |
p(pi/2) q[0]; |
CLIFFORD_T |
5 gates: h; h; s; h; h |
s |
Reproduction on main at a742796, Python 3.12:
import pyqasm
from pyqasm.elements import BasisSet
src = 'OPENQASM 3.0;\ninclude "stdgates.inc";\nqubit[1] q;\np(pi/4) q[0];\n'
m = pyqasm.loads(src)
m.rebase(BasisSet.CLIFFORD_T)
print(pyqasm.dumps(m)) # h q[0]; h q[0]; t q[0]; h q[0]; h q[0];
OpenQASM 2 programs that use qelib1.inc unroll p and u1 the same way.
The decomposition is phaseshift_gate. ONE_QUBIT_ROTATION_MAP maps u1, U1, phaseshift and p to it. The csx and rccx decompositions also call it seven times in total.
A related point: #468 adds a p rule to rebase. Unroll rewrites a p gate written by the user before rebase sees it, so that rule only applies to the p gates that pyqasm generates itself.
Done when:
- A single
p(θ),phaseshift(θ)oru1(θ)unrolls to one gate. - Under
CLIFFORD_T,p(pi/4)rebases totandp(pi/2)rebases tos. - The unitary of each changed decomposition, including
csxandrccx, still matches the original up to a global phase.
Implementation (Optional)
One option is to make phaseshift_gate emit rz(θ). gate_decompositions.md documents the current form and needs the same update. rz(θ) and p(θ) differ only by a global phase. That should be safe here, because ctrl @ p resolves to cp before this decomposition runs. This reasoning is not verified against the full test suite.
- Ngôn ngữ chính
- Python
- Star
- 29
- Fork
- 33
- Merge trung bình
- 1 ngày 22 giờ
- Pull request đã merge (30 ngày)
- 16
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của qBraid/pyqasm
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement error-handling program-validation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Move the QASM 2 printer and its branch pre-processing out of qasm2.pyCó thể đã có người làm @danielgaskins đã nhận 17 ngày trước. Đang mởenhancement qasm2
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 22/100
qBraid/pyqasm#447 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG] dumps() emits extern calls without a semicolon, producing unparsable QASMCó thể đã có người làm @Jah-yee đã nhận 25 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 25/100
qBraid/pyqasm#438 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Parse failures raise ValidationError with an empty message; the ANTLR diagnostic is lostCó thể đã có người làm @tonycoder-hub đã nhận 18 ngày trước. Đang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 22/100
qBraid/pyqasm#436 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của qBraid/pyqasm
Issue tương tự
-
Add `openai_safety_identifier`, the replacement for the `user` field that `openai_user` sendsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
pydantic/pydantic-ai#12091 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Enhance blog readabilityĐang mởCSS enhancement good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
pychess/pychess-variants#2448 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Bump locked PyTensor so Apple clang 21 does not pass -ld64Có thể đã có người làm @drbenvincent đã nhận hôm nay. Đang mởbug dev ops
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Maintainer thường phản hồi trong vòng 2 ngày
-
ai_p2 bug comp-datalake
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
ClickHouse/ClickHouse#128306 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày