def test_zero(self): n_qubits = 5 transmed_i = reverse_jordan_wigner(QubitOperator(), n_qubits) expected_i = FermionOperator() self.assertTrue(transmed_i.isclose(expected_i)) retransmed_i = jordan_wigner(transmed_i) self.assertTrue(expected_i.isclose(retransmed_i))
def test_jordan_wigner_one_body(self): # Make sure it agrees with jordan_wigner(FermionTerm). for p in range(self.n_qubits): for q in range(self.n_qubits): # Get test qubit operator. test_operator = jordan_wigner_one_body(p, q) # Get correct qubit operator. fermion_term = FermionOperator(((p, 1), (q, 0))) correct_op = jordan_wigner(fermion_term) hermitian_conjugate = hermitian_conjugated(fermion_term) if not fermion_term.isclose(hermitian_conjugate): correct_op += jordan_wigner(hermitian_conjugate) self.assertTrue(test_operator.isclose(correct_op))
def test_jordan_wigner_two_body(self): # Make sure it agrees with jordan_wigner(FermionTerm). for p in range(self.n_qubits): for q in range(self.n_qubits): for r in range(self.n_qubits): for s in range(self.n_qubits): # Get test qubit operator. test_operator = jordan_wigner_two_body(p, q, r, s) # Get correct qubit operator. fermion_term = FermionOperator( ((p, 1), (q, 1), (r, 0), (s, 0))) correct_op = jordan_wigner(fermion_term) hermitian_conjugate = hermitian_conjugated( fermion_term) if not fermion_term.isclose(hermitian_conjugate): if p == r and q == s: pass else: correct_op += jordan_wigner( hermitian_conjugate) self.assertTrue(test_operator.isclose(correct_op), str(test_operator - correct_op))
def test_canonical_anticommutation_relations(self): op_1 = FermionOperator('3') op_1_dag = FermionOperator('3^') op_2 = FermionOperator('4') op_2_dag = FermionOperator('4^') zero = FermionOperator() one = FermionOperator('') self.assertTrue( one.isclose(normal_ordered(anticommutator(op_1, op_1_dag)))) self.assertTrue( zero.isclose(normal_ordered(anticommutator(op_1, op_2)))) self.assertTrue( zero.isclose(normal_ordered(anticommutator(op_1, op_2_dag)))) self.assertTrue( zero.isclose(normal_ordered(anticommutator(op_1_dag, op_2)))) self.assertTrue( zero.isclose(normal_ordered(anticommutator(op_1_dag, op_2_dag)))) self.assertTrue( one.isclose(normal_ordered(anticommutator(op_2, op_2_dag))))