|
void | tket::check_easy_diagonalise (std::list< SpSymPauliTensor > &gadgets, std::set< Qubit > &qubits, Circuit &circ) |
| Check whether there are any qubits which only requires a single qubit Clifford to make all Paulis I or Z.
|
|
std::optional< std::pair< Pauli, Pauli > > | tket::check_pair_compatibility (const Qubit &qb1, const Qubit &qb2, const std::list< SpSymPauliTensor > &gadgets) |
| Given two qubits, attempt to find a basis in which a single CX will make the Paulis on one of qubits fully diagonal.
|
|
void | tket::greedy_diagonalise (const std::list< SpSymPauliTensor > &gadgets, std::set< Qubit > &qubits, Conjugations &conjugations, Circuit &circ, CXConfigType cx_config) |
| Diagonalise a qubit greedily by finding the Pauli Gadget with the lowest residual support over the non-diagonal qubits, and apply single qubit Cliffords and CXs to make it a ZIII...I string.
|
|
Circuit | tket::mutual_diagonalise (std::list< SpSymPauliTensor > &gadgets, std::set< Qubit > qubits, CXConfigType cx_config) |
| Diagonalise a mutually commuting set of Pauli strings.
|
|
void | tket::apply_conjugations (SpSymPauliTensor &qps, const Conjugations &conjugations) |
| Applies Clifford conjugations to a SpSymPauliTensor.
|
|
std::pair< Circuit, Qubit > | tket::reduce_pauli_to_z (const SpPauliStabiliser &pauli, CXConfigType cx_config) |
| Given a Pauli tensor P, produces a short Clifford circuit C which maps P to Z on a single qubit, i.e.
|
|
std::pair< Circuit, std::optional< Qubit > > | tket::reduce_overlap_of_paulis (SpPauliStabiliser &pauli0, SpPauliStabiliser &pauli1, CXConfigType cx_config, bool allow_matching_final=false) |
| Given a pair of (either commuting or anticommuting) Pauli tensors P0, P1, produces a short Clifford circuit C which maps P0 and P1 to strings which overlap on at most one qubit (which is also returned).
|
|
std::pair< Circuit, Qubit > | tket::reduce_anticommuting_paulis_to_z_x (SpPauliStabiliser pauli0, SpPauliStabiliser pauli1, CXConfigType cx_config) |
| Given a pair of anticommuting Pauli tensors P0, P1, produces a short Clifford circuit C which maps P0 to Z and P1 to X on the same qubit, i.e.
|
|
std::tuple< Circuit, Qubit, Qubit > | tket::reduce_commuting_paulis_to_zi_iz (SpPauliStabiliser pauli0, SpPauliStabiliser pauli1, CXConfigType cx_config) |
| Given a pair of commuting Pauli tensors P0, P1, produces a short Clifford circuit C which maps P0 and P1 to Z on different qubits, i.e.
|
|