def test_initialize(self): block = VQABlock(qutip.sigmax(), is_unitary=True) vqa = VQA(num_qubits=1) final_state = vqa.get_final_state([]) assert final_state == qutip.basis(2, 0) vqa.add_block(block) final_state = vqa.get_final_state([]) assert final_state == qutip.basis(2, 1)
def test_parameterized_circuit(self): block = VQABlock(qutip.sigmax()) vqa = VQA(num_qubits=1) final_state = vqa.get_final_state([0]) assert final_state == qutip.basis(2, 0) vqa.add_block(block) final_state = vqa.get_final_state([np.pi / 2]) assert final_state == qutip.Qobj([[0], [-1j]])
def test_parameterized_hamiltonian_blocks(self): """ Test that parameterized hamiltonian blocks correctly apply parameters """ # Hamiltonian that looks like (t_1*X + t_2*Z) block = VQABlock( ParameterizedHamiltonian([qutip.sigmax(), qutip.sigmaz()]) ) vqa = VQA(num_qubits=1, num_layers=2) vqa.add_block(block) # Do (pi/2*X + 0*Z) and then (0*X + pi/2*Z) final_state = vqa.get_final_state([np.pi / 2, 0, 0, np.pi / 2]) # expect |1> assert final_state == qutip.basis(2, 1)