def test_jordan_wigner(self): hamiltonian, gs_energy = lih_hamiltonian() code = jordan_wigner_code(4) qubit_hamiltonian = binary_code_transform(hamiltonian, code) self.assertAlmostEqual(gs_energy, eigenspectrum(qubit_hamiltonian)[0]) self.assertDictEqual(qubit_hamiltonian.terms, jordan_wigner(hamiltonian).terms)
def test_weight_one_binary_addressing_code(self): hamiltonian, gs_energy = lih_hamiltonian() code = interleaved_code(8) * (2 * weight_one_binary_addressing_code(2)) qubit_hamiltonian = binary_code_transform(hamiltonian, code) self.assertAlmostEqual(gs_energy, eigenspectrum(qubit_hamiltonian)[0]) with self.assertRaises(ValueError): _ = interleaved_code(9)
def test_bravyi_kitaev(self): hamiltonian, gs_energy = lih_hamiltonian() code = bravyi_kitaev_code(4) qubit_hamiltonian = binary_code_transform(hamiltonian, code) self.assertAlmostEqual(gs_energy, eigenspectrum(qubit_hamiltonian)[0]) qubit_spectrum = eigenspectrum(qubit_hamiltonian) fenwick_spectrum = eigenspectrum(bravyi_kitaev(hamiltonian)) for eigen_idx, eigenvalue in enumerate(qubit_spectrum): self.assertAlmostEqual(eigenvalue, fenwick_spectrum[eigen_idx])
def test_tranform_function(self): ferm_op = FermionOperator('2') n_modes = 5 qubit_op = binary_code_transform(ferm_op, parity_code(n_modes)) correct_op = QubitOperator(((1, 'Z'), (2, 'X'), (3, 'X'), (4, 'X')), 0.5) + \ QubitOperator(((2, 'Y'), (3, 'X'), (4, 'X')), 0.5j) self.assertTrue(qubit_op == correct_op) ferm_op = FermionOperator('2^') n_modes = 5 qubit_op = binary_code_transform(ferm_op, parity_code(n_modes)) correct_op = QubitOperator(((1, 'Z'), (2, 'X'), (3, 'X'), (4, 'X')), 0.5) \ + QubitOperator(((2, 'Y'), (3, 'X'), (4, 'X')), -0.5j) self.assertTrue(qubit_op == correct_op) ferm_op = FermionOperator('5^') op2 = QubitOperator('Z0 Z1 Z2 Z3 Z4 X5', 0.5) \ - QubitOperator('Z0 Z1 Z2 Z3 Z4 Y5', 0.5j) op1 = binary_code_transform(ferm_op, jordan_wigner_code(6)) self.assertTrue(op1 == op2)
def test_parity_code(self): hamiltonian, gs_energy = lih_hamiltonian() code = parity_code(4) qubit_hamiltonian = binary_code_transform(hamiltonian, code) self.assertAlmostEqual(gs_energy, eigenspectrum(qubit_hamiltonian)[0])
def test_weight_two_segment_code(self): hamiltonian, gs_energy = lih_hamiltonian() code = weight_two_segment_code() qubit_hamiltonian = binary_code_transform(hamiltonian, code) self.assertAlmostEqual(gs_energy, eigenspectrum(qubit_hamiltonian)[0])
def test_weight_one_segment_code(self): hamiltonian, gs_energy = lih_hamiltonian() code = interleaved_code(6) * (2 * weight_one_segment_code()) qubit_hamiltonian = binary_code_transform(hamiltonian, code) self.assertAlmostEqual(gs_energy, eigenspectrum(qubit_hamiltonian)[0])