File tree Expand file tree Collapse file tree 2 files changed +18
-1
lines changed
src/bloqade/pyqrack/squin Expand file tree Collapse file tree 2 files changed +18
-1
lines changed Original file line number Diff line number Diff line change 1+ import math
2+
13from kirin import interp
24
35from bloqade .squin import op
@@ -122,6 +124,18 @@ def operator(
122124 ) -> tuple [OperatorRuntimeABC ]:
123125 return (OperatorRuntime (method_name = stmt .name .lower ()),)
124126
127+ @interp .impl (op .stmts .SqrtX )
128+ @interp .impl (op .stmts .SqrtY )
129+ def sqrt (
130+ self ,
131+ interp : PyQrackInterpreter ,
132+ frame : interp .Frame ,
133+ stmt : op .stmts .SqrtX | op .stmts .SqrtY ,
134+ ):
135+ axis_name = "x" if isinstance (stmt , op .stmts .SqrtX ) else "y"
136+ axis = OperatorRuntime (method_name = axis_name )
137+ return (RotRuntime (axis = axis , angle = - 0.5 * math .pi ),)
138+
125139 @interp .impl (op .stmts .P0 )
126140 @interp .impl (op .stmts .P1 )
127141 def projector (
Original file line number Diff line number Diff line change @@ -59,14 +59,17 @@ def main():
5959 "h" ,
6060 "s" ,
6161 "t" ,
62+ "sqrt_x" ,
63+ "sqrt_y" ,
64+ "sqrt_z" ,
6265 ],
6366)
6467def test_basic_ops (op_name : str ):
6568 @squin .kernel
6669 def main ():
6770 q = squin .qubit .new (1 )
6871 op = getattr (squin .op , op_name )()
69- squin .qubit .apply (op , q )
72+ squin .qubit .apply (op , q [ 0 ] )
7073 return q
7174
7275 target = PyQrack (1 )
You can’t perform that action at this time.
0 commit comments