@@ -228,41 +228,54 @@ def __init__(self) -> None:
228228 }
229229
230230 qelib_gates = {
231- 'rx' : QasmGateStatement (
232- qasm_gate = 'rx' , cirq_gate = (lambda params : ops .rx (params [0 ])), num_params = 1 , num_args = 1
233- ),
234- 'sx' : QasmGateStatement (
235- qasm_gate = 'sx' , num_params = 0 , num_args = 1 , cirq_gate = ops .XPowGate (exponent = 0.5 )
231+ 'ccx' : QasmGateStatement (qasm_gate = 'ccx' , num_params = 0 , num_args = 3 , cirq_gate = ops .CCX ),
232+ 'ch' : QasmGateStatement (
233+ qasm_gate = 'ch' , cirq_gate = ops .ControlledGate (ops .H ), num_params = 0 , num_args = 2
236234 ),
237- 'sxdg' : QasmGateStatement (
238- qasm_gate = 'sxdg' , num_params = 0 , num_args = 1 , cirq_gate = ops .XPowGate (exponent = - 0.5 )
235+ 'crx' : QasmGateStatement (
236+ qasm_gate = 'crx' ,
237+ num_params = 1 ,
238+ num_args = 2 ,
239+ cirq_gate = (lambda params : ops .ControlledGate (ops .rx (params [0 ]))),
239240 ),
240- 'ry' : QasmGateStatement (
241- qasm_gate = 'ry' , cirq_gate = (lambda params : ops .ry (params [0 ])), num_params = 1 , num_args = 1
241+ 'cry' : QasmGateStatement (
242+ qasm_gate = 'cry' ,
243+ num_params = 1 ,
244+ num_args = 2 ,
245+ cirq_gate = (lambda params : ops .ControlledGate (ops .ry (params [0 ]))),
242246 ),
243- 'rz' : QasmGateStatement (
244- qasm_gate = 'rz' , cirq_gate = (lambda params : ops .rz (params [0 ])), num_params = 1 , num_args = 1
247+ 'crz' : QasmGateStatement (
248+ qasm_gate = 'crz' ,
249+ num_params = 1 ,
250+ num_args = 2 ,
251+ cirq_gate = (lambda params : ops .ControlledGate (ops .rz (params [0 ]))),
245252 ),
246- 'id ' : QasmGateStatement (
247- qasm_gate = 'id ' , cirq_gate = ops . IdentityGate ( 1 ), num_params = 0 , num_args = 1
253+ 'cswap ' : QasmGateStatement (
254+ qasm_gate = 'cswap ' , num_params = 0 , num_args = 3 , cirq_gate = ops . CSWAP
248255 ),
249- 'u1' : QasmGateStatement (
250- qasm_gate = 'u1' ,
251- cirq_gate = (lambda params : QasmUGate (0 , 0 , params [0 ] / np .pi )),
256+ 'cu1' : QasmGateStatement (
257+ qasm_gate = 'cu1' ,
252258 num_params = 1 ,
253- num_args = 1 ,
254- ),
255- 'u2' : QasmGateStatement (
256- qasm_gate = 'u2' ,
257- cirq_gate = (lambda params : QasmUGate (0.5 , params [0 ] / np .pi , params [1 ] / np .pi )),
258- num_params = 2 ,
259- num_args = 1 ,
259+ num_args = 2 ,
260+ cirq_gate = (lambda params : ops .ControlledGate (QasmUGate (0 , 0 , params [0 ] / np .pi ))),
260261 ),
261- 'u3 ' : QasmGateStatement (
262- qasm_gate = 'u3 ' ,
262+ 'cu3 ' : QasmGateStatement (
263+ qasm_gate = 'cu3 ' ,
263264 num_params = 3 ,
264- num_args = 1 ,
265- cirq_gate = (lambda params : QasmUGate (* [p / np .pi for p in params ])),
265+ num_args = 2 ,
266+ cirq_gate = (lambda params : ops .ControlledGate (QasmUGate (* [p / np .pi for p in params ]))),
267+ ),
268+ 'cx' : QasmGateStatement (qasm_gate = 'cx' , cirq_gate = CX , num_params = 0 , num_args = 2 ),
269+ 'cy' : QasmGateStatement (
270+ qasm_gate = 'cy' , cirq_gate = ops .ControlledGate (ops .Y ), num_params = 0 , num_args = 2
271+ ),
272+ 'cz' : QasmGateStatement (qasm_gate = 'cz' , cirq_gate = ops .CZ , num_params = 0 , num_args = 2 ),
273+ 'h' : QasmGateStatement (qasm_gate = 'h' , num_params = 0 , num_args = 1 , cirq_gate = ops .H ),
274+ 'id' : QasmGateStatement (
275+ qasm_gate = 'id' , cirq_gate = ops .IdentityGate (1 ), num_params = 0 , num_args = 1
276+ ),
277+ 'iswap' : QasmGateStatement (
278+ qasm_gate = 'iswap' , cirq_gate = ops .ISwapPowGate (), num_params = 0 , num_args = 2
266279 ),
267280 'r' : QasmGateStatement (
268281 qasm_gate = 'r' ,
@@ -274,45 +287,65 @@ def __init__(self) -> None:
274287 )
275288 ),
276289 ),
277- 'x' : QasmGateStatement (qasm_gate = 'x' , num_params = 0 , num_args = 1 , cirq_gate = ops .X ),
278- 'y' : QasmGateStatement (qasm_gate = 'y' , num_params = 0 , num_args = 1 , cirq_gate = ops .Y ),
279- 'z' : QasmGateStatement (qasm_gate = 'z' , num_params = 0 , num_args = 1 , cirq_gate = ops .Z ),
280- 'h' : QasmGateStatement (qasm_gate = 'h' , num_params = 0 , num_args = 1 , cirq_gate = ops .H ),
281- 's' : QasmGateStatement (qasm_gate = 's' , num_params = 0 , num_args = 1 , cirq_gate = ops .S ),
282- 't' : QasmGateStatement (qasm_gate = 't' , num_params = 0 , num_args = 1 , cirq_gate = ops .T ),
283- 'cx' : QasmGateStatement (qasm_gate = 'cx' , cirq_gate = CX , num_params = 0 , num_args = 2 ),
284- 'cy' : QasmGateStatement (
285- qasm_gate = 'cy' , cirq_gate = ops .ControlledGate (ops .Y ), num_params = 0 , num_args = 2
290+ 'rx' : QasmGateStatement (
291+ qasm_gate = 'rx' , cirq_gate = (lambda params : ops .rx (params [0 ])), num_params = 1 , num_args = 1
286292 ),
287- 'cz' : QasmGateStatement (qasm_gate = 'cz' , cirq_gate = ops .CZ , num_params = 0 , num_args = 2 ),
288- 'ch' : QasmGateStatement (
289- qasm_gate = 'ch' , cirq_gate = ops .ControlledGate (ops .H ), num_params = 0 , num_args = 2
293+ 'ry' : QasmGateStatement (
294+ qasm_gate = 'ry' , cirq_gate = (lambda params : ops .ry (params [0 ])), num_params = 1 , num_args = 1
290295 ),
291- 'cu1 ' : QasmGateStatement (
292- qasm_gate = 'cu1 ' ,
296+ 'ryy ' : QasmGateStatement (
297+ qasm_gate = 'ryy ' ,
293298 num_params = 1 ,
294299 num_args = 2 ,
295- cirq_gate = (lambda params : ops .ControlledGate ( QasmUGate ( 0 , 0 , params [0 ] / np .pi ) )),
300+ cirq_gate = (lambda params : ops .YYPowGate ( exponent = params [0 ] / np .pi )),
296301 ),
297- 'cu3' : QasmGateStatement (
298- qasm_gate = 'cu3' ,
299- num_params = 3 ,
302+ 'rz' : QasmGateStatement (
303+ qasm_gate = 'rz' , cirq_gate = (lambda params : ops .rz (params [0 ])), num_params = 1 , num_args = 1
304+ ),
305+ 'rxx' : QasmGateStatement (
306+ qasm_gate = 'rxx' ,
307+ num_params = 1 ,
300308 num_args = 2 ,
301- cirq_gate = (lambda params : ops .ControlledGate ( QasmUGate ( * [ p / np .pi for p in params ]) )),
309+ cirq_gate = (lambda params : ops .XXPowGate ( exponent = params [ 0 ] / np .pi )),
302310 ),
303- 'crz ' : QasmGateStatement (
304- qasm_gate = 'crz ' ,
311+ 'rzz ' : QasmGateStatement (
312+ qasm_gate = 'rzz ' ,
305313 num_params = 1 ,
306314 num_args = 2 ,
307- cirq_gate = (lambda params : ops .ControlledGate ( ops . rz ( params [0 ]) )),
315+ cirq_gate = (lambda params : ops .ZZPowGate ( exponent = params [0 ] / np . pi )),
308316 ),
317+ 's' : QasmGateStatement (qasm_gate = 's' , num_params = 0 , num_args = 1 , cirq_gate = ops .S ),
318+ 'sdg' : QasmGateStatement (qasm_gate = 'sdg' , num_params = 0 , num_args = 1 , cirq_gate = ops .S ** - 1 ),
309319 'swap' : QasmGateStatement (qasm_gate = 'swap' , cirq_gate = ops .SWAP , num_params = 0 , num_args = 2 ),
310- 'cswap ' : QasmGateStatement (
311- qasm_gate = 'cswap ' , num_params = 0 , num_args = 3 , cirq_gate = ops .CSWAP
320+ 'sx ' : QasmGateStatement (
321+ qasm_gate = 'sx ' , num_params = 0 , num_args = 1 , cirq_gate = ops .XPowGate ( exponent = 0.5 )
312322 ),
313- 'ccx' : QasmGateStatement (qasm_gate = 'ccx' , num_params = 0 , num_args = 3 , cirq_gate = ops .CCX ),
314- 'sdg' : QasmGateStatement (qasm_gate = 'sdg' , num_params = 0 , num_args = 1 , cirq_gate = ops .S ** - 1 ),
323+ 'sxdg' : QasmGateStatement (
324+ qasm_gate = 'sxdg' , num_params = 0 , num_args = 1 , cirq_gate = ops .XPowGate (exponent = - 0.5 )
325+ ),
326+ 't' : QasmGateStatement (qasm_gate = 't' , num_params = 0 , num_args = 1 , cirq_gate = ops .T ),
315327 'tdg' : QasmGateStatement (qasm_gate = 'tdg' , num_params = 0 , num_args = 1 , cirq_gate = ops .T ** - 1 ),
328+ 'u1' : QasmGateStatement (
329+ qasm_gate = 'u1' ,
330+ cirq_gate = (lambda params : QasmUGate (0 , 0 , params [0 ] / np .pi )),
331+ num_params = 1 ,
332+ num_args = 1 ,
333+ ),
334+ 'u2' : QasmGateStatement (
335+ qasm_gate = 'u2' ,
336+ cirq_gate = (lambda params : QasmUGate (0.5 , params [0 ] / np .pi , params [1 ] / np .pi )),
337+ num_params = 2 ,
338+ num_args = 1 ,
339+ ),
340+ 'u3' : QasmGateStatement (
341+ qasm_gate = 'u3' ,
342+ num_params = 3 ,
343+ num_args = 1 ,
344+ cirq_gate = (lambda params : QasmUGate (* [p / np .pi for p in params ])),
345+ ),
346+ 'x' : QasmGateStatement (qasm_gate = 'x' , num_params = 0 , num_args = 1 , cirq_gate = ops .X ),
347+ 'y' : QasmGateStatement (qasm_gate = 'y' , num_params = 0 , num_args = 1 , cirq_gate = ops .Y ),
348+ 'z' : QasmGateStatement (qasm_gate = 'z' , num_params = 0 , num_args = 1 , cirq_gate = ops .Z ),
316349 }
317350
318351 tokens = QasmLexer .tokens
0 commit comments