@@ -376,36 +376,40 @@ def Cx2(c1, c2, q1, q2, kind='std'):
376
376
#Create the pulse block
377
377
return seq1 * seq2
378
378
379
- def entangling_seq (gate , q1 , q2 , parametric = False ):
379
+ def entangling_seq (gate , q1 , q2 ):
380
380
"""
381
381
Helper function to create the entangling gate sequence
382
382
"""
383
- if parametric == False :
384
- if gate == "CNOT" :
385
- return ZX90_CR (q2 , q1 )
386
- elif gate == "iSWAP" :
387
- return [ZX90_CR (q2 , q1 ) , Y90m (q1 ) * Y90m (q2 ), ZX90_CR (q2 , q1 )]
388
- elif gate == "SWAP" :
389
- return [ZX90_CR (q2 , q1 ), Y90m (q1 ) * Y90m (q2 ), ZX90_CR (
383
+ if gate == "CNOT" :
384
+ return ZX90_CR (q2 , q1 )
385
+ elif gate == "iSWAP" :
386
+ return [ZX90_CR (q2 , q1 ) , Y90m (q1 ) * Y90m (q2 ), ZX90_CR (q2 , q1 )]
387
+ elif gate == "SWAP" :
388
+ return [ZX90_CR (q2 , q1 ), Y90m (q1 ) * Y90m (q2 ), ZX90_CR (
390
389
q2 , q1 ), (X90 (q1 ) + Y90m (q1 )) * X90 (q2 ), ZX90_CR (q2 , q1 )]
391
- else :
392
- if gate == "CNOT" :
393
- return [X90 (q1 ),Z90 (q1 )* Z90m (q2 ),iSWAP (q1 ,q2 ),X90 (q2 ),iSWAP (q1 ,q2 ),Z90 (q1 )]
394
- elif gate == "iSWAP" :
395
- return [iSWAP (q1 ,q2 )]
396
- elif gate == "SWAP" :
397
- return [X90 (q1 ),Z90 (q1 ) * Z90m (q2 ),iSWAP (q1 ,q2 ),X90 (q2 ),iSWAP (q1 ,q2 ),Z90 (q1 ),
390
+
391
+ def entangling_seq2 (gate , q1 , q2 ):
392
+
393
+ if gate == "CNOT" :
394
+ return [X90 (q1 ),Z90 (q1 )* Z90m (q2 ),iSWAP (q1 ,q2 ),X90 (q2 ),iSWAP (q1 ,q2 ),Z90 (q1 )]
395
+ elif gate == "iSWAP" :
396
+ return [iSWAP (q1 ,q2 )]
397
+ elif gate == "SWAP" :
398
+ return [X90 (q1 ),Z90 (q1 ) * Z90m (q2 ),iSWAP (q1 ,q2 ),X90 (q2 ),iSWAP (q1 ,q2 ),Z90 (q1 ),
398
399
Y90 (q2 ),X (q2 ),Z90m (q1 ) * Z90m (q2 ),iSWAP (q1 ,q2 ),Y90 (q1 ),X (q1 )]
399
400
400
- def TwoQubitClifford (q1 , q2 , cliffNum , kind = 'std' ,parametric = False ):
401
+ def TwoQubitClifford (q1 , q2 , cliffNum , kind = 'std' ,entangling_sequence = None ):
401
402
402
403
if kind .upper () not in clifford_map .keys ():
403
404
raise ValueError (f"Unknown clifford type: must be one of { clifford .map .keys ()} ." )
404
405
406
+ if entangling_sequence == None :
407
+ entangling_sequence = entangling_seq
408
+
405
409
c = C2Seqs [cliffNum ]
406
410
seq = [Cx2 (c [0 ][0 ], c [0 ][1 ], q1 , q2 , kind = kind )]
407
411
if c [1 ]:
408
- seq += entangling_seq (c [1 ], q1 , q2 , parametric )
412
+ seq += entangling_sequence (c [1 ], q1 , q2 )
409
413
if c [2 ]:
410
414
seq += [Cx2 (c [2 ][0 ], c [2 ][1 ], q1 , q2 , kind = kind )]
411
415
return seq
0 commit comments