@@ -14,6 +14,20 @@ def sdag() -> list[ir.Statement]:
1414 return [_op := op .stmts .S (), op .stmts .Adjoint (op = _op .result , is_unitary = True )]
1515
1616
17+ def sqrt_x_dag () -> list [ir .Statement ]:
18+ return [
19+ _op := op .stmts .SqrtX (),
20+ op .stmts .Adjoint (op = _op .result , is_unitary = True ),
21+ ]
22+
23+
24+ def sqrt_y_dag () -> list [ir .Statement ]:
25+ return [
26+ _op := op .stmts .SqrtY (),
27+ op .stmts .Adjoint (op = _op .result , is_unitary = True ),
28+ ]
29+
30+
1731# (theta, phi, lam)
1832U3_HALF_PI_ANGLE_TO_GATES : dict [
1933 tuple [int , int , int ], Callable [[], Tuple [List [ir .Statement ], ...]]
@@ -26,21 +40,21 @@ def sdag() -> list[ir.Statement]:
2640 (1 , 0 , 1 ): lambda : ([op .stmts .S ()], [op .stmts .SqrtY ()]),
2741 (1 , 0 , 2 ): lambda : ([op .stmts .H ()],),
2842 (1 , 0 , 3 ): lambda : (sdag (), [op .stmts .SqrtY ()]),
29- (1 , 1 , 0 ): lambda : ([op .stmts .SqrtY ()], [ op . stmts . S ()] ),
30- (1 , 1 , 1 ): lambda : ([op .stmts .S ()], [ op . stmts . SqrtY ()], [ op . stmts . S ()] ),
31- (1 , 1 , 2 ): lambda : ([ op . stmts . Z ()], [ op . stmts . SqrtY ()], [ op . stmts . S ()] ),
32- (1 , 1 , 3 ): lambda : (sdag (), [ op . stmts . SqrtY ()], [ op . stmts . S ()] ),
33- (1 , 2 , 0 ): lambda : ([op .stmts .SqrtY ()], [ op . stmts . Z ()] ),
34- (1 , 2 , 1 ): lambda : ([ op . stmts . S ()], [ op . stmts . SqrtY ()], [ op . stmts . Z ()] ),
35- (1 , 2 , 2 ): lambda : ([ op . stmts . Z ()], [ op . stmts . SqrtY ()], [ op . stmts . Z ()] ),
36- (1 , 2 , 3 ): lambda : (sdag (), [op .stmts .SqrtY ()], [ op . stmts . Z ()] ),
37- (1 , 3 , 0 ): lambda : ([op .stmts .SqrtY ()], sdag () ),
38- (1 , 3 , 1 ): lambda : ([op .stmts .S ()], [ op . stmts . SqrtY ()], sdag () ),
39- (1 , 3 , 2 ): lambda : ([op .stmts .Z ()], [op .stmts .SqrtY ()], sdag () ),
40- (1 , 3 , 3 ): lambda : (sdag (), [op .stmts .SqrtY ()], sdag () ),
43+ (1 , 1 , 0 ): lambda : ([op .stmts .S ()], sqrt_x_dag () ),
44+ (1 , 1 , 1 ): lambda : ([op .stmts .Z ()], sqrt_x_dag () ),
45+ (1 , 1 , 2 ): lambda : (sdag (), sqrt_x_dag () ),
46+ (1 , 1 , 3 ): lambda : (sqrt_x_dag (),),
47+ (1 , 2 , 0 ): lambda : ([op .stmts .Z ()], sqrt_y_dag () ),
48+ (1 , 2 , 1 ): lambda : (sdag (), sqrt_y_dag () ),
49+ (1 , 2 , 2 ): lambda : (sqrt_y_dag (), ),
50+ (1 , 2 , 3 ): lambda : ([op .stmts .S ()], sqrt_y_dag () ),
51+ (1 , 3 , 0 ): lambda : (sdag (), [op .stmts .SqrtX ()]),
52+ (1 , 3 , 1 ): lambda : ([op .stmts .SqrtX ()],),
53+ (1 , 3 , 2 ): lambda : ([op .stmts .S ()], [op .stmts .SqrtX ()]),
54+ (1 , 3 , 3 ): lambda : ([op .stmts .Z ()], [ op . stmts . SqrtX ()] ),
4155 (2 , 0 , 0 ): lambda : ([op .stmts .Y ()],),
4256 (2 , 0 , 1 ): lambda : ([op .stmts .S ()], [op .stmts .Y ()]),
43- (2 , 0 , 2 ): lambda : ([op .stmts .Z ()], [ op . stmts . Y ()] ),
57+ (2 , 0 , 2 ): lambda : ([op .stmts .X ()],),
4458 (2 , 0 , 3 ): lambda : (sdag (), [op .stmts .Y ()]),
4559}
4660
0 commit comments