Skip to content

Commit 385f278

Browse files
author
Corey Ostrove
committed
Add conversions for numbered clifford gates
Add stim conversions for the 24 single-qubit clifford gates numbered C0-C24.
1 parent dd7bc8d commit 385f278

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

pygsti/tools/internalgates.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,11 +400,38 @@ def standard_gatenames_stim_conversions():
400400
'Gswap' : stim.Tableau.from_named_gate('SWAP'),
401401
'Gcphase' : stim.Tableau.from_named_gate('CZ'),
402402
'Giswap' : stim.Tableau.from_named_gate('ISWAP')
403+
403404
}
404405
ecr_unitary = _np.array([[0, 1, 0., 1j], [1., 0, -1j, 0.],
405406
[0., 1j, 0, 1], [-1j, 0., 1, 0]], complex)/_np.sqrt(2)
406407
gate_dict['Gecres'] = stim.Tableau.from_unitary_matrix(ecr_unitary, endian='big')
407408

409+
gate_dict['Gc0'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 0], [0, 1]], complex), endian='big') # This is Gi
410+
gate_dict['Gc1'] = stim.Tableau.from_unitary_matrix(_np.array([[1, -1j], [1, 1j]], complex) / _np.sqrt(2), endian='big') # This is H Pdag
411+
gate_dict['Gc2'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 1], [1j, -1j]], complex) / _np.sqrt(2), endian='big') # This is P H
412+
gate_dict['Gc3'] = stim.Tableau.from_unitary_matrix(_np.array([[0, 1], [1, 0]], complex), endian='big') # This is Gxpi (up to phase)
413+
gate_dict['Gc4'] = stim.Tableau.from_unitary_matrix(_np.array([[-1, -1j], [1, -1j]], complex) / _np.sqrt(2), endian='big') # This is H Pdag X
414+
gate_dict['Gc5'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 1], [-1j, 1j]], complex) / _np.sqrt(2), endian='big') # This is Pdag H
415+
gate_dict['Gc6'] = stim.Tableau.from_unitary_matrix(_np.array([[0, -1j], [1j, 0]], complex), endian='big') # This is Gypi (up to phase)
416+
gate_dict['Gc7'] = stim.Tableau.from_unitary_matrix(_np.array([[1j, 1], [-1j, 1]], complex) / _np.sqrt(2), endian='big') # This is H P X
417+
gate_dict['Gc8'] = stim.Tableau.from_unitary_matrix(_np.array([[1j, -1j], [1, 1]], complex) / _np.sqrt(2), endian='big') # This is Pdag X H
418+
gate_dict['Gc9'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 0], [0, -1]], complex), endian='big') # This is Gzpi
419+
gate_dict['Gc10'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 1j], [1, -1j]], complex) / _np.sqrt(2), endian='big') # This is H P
420+
gate_dict['Gc11'] = stim.Tableau.from_unitary_matrix(_np.array([[1, -1], [1j, 1j]], complex) / _np.sqrt(2), endian='big') # This is P X H
421+
gate_dict['Gc12'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 1], [1, -1]], complex) / _np.sqrt(2), endian='big') # This is Gh
422+
gate_dict['Gc13'] = stim.Tableau.from_unitary_matrix(_np.array([[0.5 - 0.5j, 0.5 + 0.5j], [0.5 + 0.5j, 0.5 - 0.5j]], complex), endian='big') # This is Gxmpi2 (up to phase)
423+
gate_dict['Gc14'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 0], [0, 1j]], complex), endian='big') # This is Gzpi2 / Gp (up to phase)
424+
gate_dict['Gc15'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 1], [-1, 1]], complex) / _np.sqrt(2), endian='big') # This is Gympi2 (up to phase)
425+
gate_dict['Gc16'] = stim.Tableau.from_unitary_matrix(_np.array([[0.5 + 0.5j, 0.5 - 0.5j], [0.5 - 0.5j, 0.5 + 0.5j]], complex), endian='big') # This is Gxpi2 (up to phase)
426+
gate_dict['Gc17'] = stim.Tableau.from_unitary_matrix(_np.array([[0, 1], [1j, 0]], complex), endian='big') # This is P X
427+
gate_dict['Gc18'] = stim.Tableau.from_unitary_matrix(_np.array([[1j, -1j], [-1j, -1j]], complex) / _np.sqrt(2), endian='big') # This is Y H
428+
gate_dict['Gc19'] = stim.Tableau.from_unitary_matrix(_np.array([[0.5 + 0.5j, -0.5 + 0.5j], [0.5 - 0.5j, -0.5 - 0.5j]], complex), endian='big') # This is Pdag H P
429+
gate_dict['Gc20'] = stim.Tableau.from_unitary_matrix(_np.array([[0, -1j], [-1, 0]], complex), endian='big') # This is Pdag X
430+
gate_dict['Gc21'] = stim.Tableau.from_unitary_matrix(_np.array([[1, -1], [1, 1]], complex) / _np.sqrt(2), endian='big') # This is Gypi2 (up to phase)
431+
gate_dict['Gc22'] = stim.Tableau.from_unitary_matrix(_np.array([[0.5 + 0.5j, 0.5 - 0.5j], [-0.5 + 0.5j, -0.5 - 0.5j]], complex), endian='big') # This is P H Pdag
432+
gate_dict['Gc23'] = stim.Tableau.from_unitary_matrix(_np.array([[1, 0], [0, -1j]], complex), endian='big') # This is Gzmpi2 / Gpdag (up to phase)
433+
434+
408435
return gate_dict
409436

410437
def standard_gatenames_cirq_conversions():

0 commit comments

Comments
 (0)