def hadamard_test_imag(): print("== expectaion value prediction (imaginary part) == ") # prepare initial state qs_0 = QState(1) qs_psi = QState(2).h(0).h(1) qs = qs_0.tenspro(qs_psi) # circuit for hadamard test qs.h(0).s(0) qs.ch(0, 1).crx(0, 2, phase=0.25) qs.h(0) shots = 1000 md = qs.m([0], shots=shots) p0 = md.frq[0] / shots p1 = md.frq[1] / shots exp_pred = p1 - p0 print("expectation value (predict) = {0:.3f}".format(exp_pred)) # theoretical expactation value qs_op = qs_psi.clone() qs_op.h(0).rx(1, phase=0.25) exp_theo = qs_psi.inpro(qs_op).imag print("expectation value (theoretical) = {0:.3f}".format(exp_theo))
def test_clone(self): """test 'clone' """ qs_src = QState(qubit_num=3).h(0).h(1).h(2) qs_dst = qs_src.clone() actual_src = qs_src.amp actual_dst = qs_dst.amp ans = equal_vectors(actual_src, actual_dst) self.assertEqual(ans, True)