PauliBasisChange.construct_cnot_chain¶
- PauliBasisChange.construct_cnot_chain(diag_pauli_op1, diag_pauli_op2)[source]¶
Construct a
CircuitOp
(orPauliOp
if equal to the identity) which takes the eigenvectors ofdiag_pauli_op1
to the eigenvectors ofdiag_pauli_op2
, assuming both are diagonal (or performing this operation on their diagonalized Paulis implicitly if not). This works by the insight that the eigenvalue of a diagonal Pauli’s eigenvector is equal to or -1 if the parity is 1 and 1 if the parity is 0, or 1 - (2 * parity). Therefore, using CNOTs, we can write the parity of diag_pauli_op1’s significant bits onto some qubit, and then write out that parity onto diag_pauli_op2’s significant bits.- Parameters
- Return type
- Returns
The
PrimitiveOp
performs the mapping.