示例#1
0
 def test_operate_h_y(self):
     """test 'operate' (h-y)
     """
     pp = PauliProduct(pauli_str="Y")
     qc = QCirc().h(0).operate(pp=pp).measure(qid=[0], cid=[0])
     qs = QState(qubit_num=1).h(0).operate(pp=pp)
     value = evaluate(qc, qs)
     self.assertEqual(value < EPS, True)
示例#2
0
 def test_operate_controlled_xyz(self):
     """test 'operate' (xyz)
     """
     pp = PauliProduct(pauli_str="XYZ", qid=[1, 2, 3])
     qc = QCirc().operate(pp=pp, ctrl=0).measure(qid=[0, 1, 2, 3],
                                                 cid=[0, 1, 2, 3])
     qs = QState(qubit_num=4).operate(pp=pp, ctrl=0)
     value = evaluate(qc, qs)
     self.assertEqual(value < EPS, True)
示例#3
0
 def test_operate_x(self):
     """test 'operate' (x)
     """
     qs_expect = QStateGpu(qubit_num=1)
     qs_actual = QStateGpu(qubit_num=1)
     pp = PauliProduct(pauli_str="X")
     qs_expect.x(0)
     qs_actual.operate(pp=pp)
     ans = equal_qstates(qs_expect, qs_actual)
     self.assertEqual(ans, True)
示例#4
0
 def test_operate_controlled_xyz(self):
     """test 'operate' (controlled_xyz)
     """
     qs_expect = QStateGpu(qubit_num=4)
     qs_actual = QStateGpu(qubit_num=4)
     pp = PauliProduct(pauli_str="XYZ", qid=[2, 0, 1])
     qs_expect.cx(3, 2).cy(3, 0).cz(3, 1)
     qs_actual.operate(pp=pp, ctrl=3)
     ans = equal_qstates(qs_expect, qs_actual)
     self.assertEqual(ans, True)
示例#5
0
 def test_operate_h_z(self):
     """test 'operate' (z followed by h)
     """
     qs_expect = QStateGpu(qubit_num=1).h(0)
     qs_actual = QStateGpu(qubit_num=1).h(0)
     pp = PauliProduct(pauli_str="Z")
     qs_expect.z(0)
     qs_actual.operate(pp=pp)
     ans = equal_qstates(qs_expect, qs_actual)
     self.assertEqual(ans, True)
示例#6
0
 def test_operate_xyz(self):
     """test 'operate' (xyz)
     """
     qs_expect = QStateGpu(qubit_num=3)
     qs_actual = QStateGpu(qubit_num=3)
     pp = PauliProduct(pauli_str="XYZ", qid=[2, 0, 1])
     qs_expect.x(2).y(0).z(1)
     qs_actual.operate(pp=pp)
     ans = equal_qstates(qs_expect, qs_actual)
     self.assertEqual(ans, True)
示例#7
0
 def test_operate_h_z(self):
     """test 'operate' (Z followed by h)
     """
     sb_expect = Stabilizer(gene_num=1,
                            qubit_num=1).set_pauli_op(0, 0, 'Z').h(0).z(0)
     expect = sb_expect.get_str()
     pp = PauliProduct(pauli_str="Z")
     sb_actual = Stabilizer(gene_num=1, qubit_num=1).set_pauli_op(
         0, 0, 'Z').h(0).operate(pp=pp)
     actual = sb_actual.get_str()
     self.assertEqual(actual, expect)
示例#8
0
 def test_operate_xyz(self):
     """test 'operate' (xyz)
     """
     sb_expect = Stabilizer(gene_num=3,
                            qubit_num=3).set_all('Z').x(2).y(0).z(1)
     expect = sb_expect.get_str()
     pp = PauliProduct(pauli_str="XYZ", qid=[2, 0, 1])
     sb_actual = Stabilizer(gene_num=3,
                            qubit_num=3).set_all('Z').operate(pp=pp)
     actual = sb_actual.get_str()
     self.assertEqual(actual, expect)
 def test_operate_h_z(self):
     """test 'operate' (Z followed by h)
     """
     bk = Backend(product='qlazy', device='stabilizer_simulator')
     qc = QCirc().h(0).z(0)
     res = bk.run(qcirc=qc, out_state=True)
     expect = res.stabilizer.get_str()
     pp = PauliProduct(pauli_str="Z")
     qc = QCirc().h(0).operate(pp=pp)
     res = bk.run(qcirc=qc, out_state=True)
     actual = res.stabilizer.get_str()
     self.assertEqual(expect, actual)
 def test_operate_controlled_xyz(self):
     """test 'operate' (controlled_xyz)
     """
     bk = Backend(product='qlazy', device='stabilizer_simulator')
     qc = QCirc().cx(3, 2).cy(3, 0).cz(3, 1)
     res = bk.run(qcirc=qc, out_state=True)
     expect = res.stabilizer.get_str()
     pp = PauliProduct(pauli_str="XYZ", qid=[2, 0, 1])
     qc = QCirc().operate(pp=pp, ctrl=3)
     res = bk.run(qcirc=qc, out_state=True)
     actual = res.stabilizer.get_str()
     self.assertEqual(expect, actual)
示例#11
0
    def set_register(self, dat_left, dat_rignt, bnd, anc):

        self.__dat = {'left': dat_left, 'right': dat_right}
        self.__bnd = bnd
        self.__anc = anc
        self.__x_stab = {
            'left': [
                PauliProduct(pauli_str='XXX',
                             qid=[dat_left[0], dat_left[1], dat_left[2]]),
                PauliProduct(pauli_str='XXX',
                             qid=[dat_left[2], dat_left[3], dat_left[4]])
            ],
            'right': [
                PauliProduct(pauli_str='XXX',
                             qid=[dat_right[0], dat_right[1], dat_right[2]]),
                PauliProduct(pauli_str='XXX',
                             qid=[dat_right[2], dat_right[3], dat_right[4]])
            ],
            'bnd': [
                PauliProduct(pauli_str='XXX',
                             qid=[dat_left[1], dat_right[0], bnd[0]]),
                PauliProduct(pauli_str='XXX',
                             qid=[bnd[0], dat_left[4], dat_right[3]])
            ]
        }

        return self
示例#12
0
 def test_operate_controlled_xyz(self):
     """test 'operate' (controlled_xyz)
     """
     sb_expect = Stabilizer(gene_num=4,
                            qubit_num=4).set_all('Z').cx(3,
                                                         2).cy(3,
                                                               0).cz(3, 1)
     expect = sb_expect.get_str()
     pp = PauliProduct(pauli_str="XYZ", qid=[2, 0, 1])
     sb_actual = Stabilizer(gene_num=4,
                            qubit_num=4).set_all('Z').operate(pp=pp, ctrl=3)
     actual = sb_actual.get_str()
     self.assertEqual(actual, expect)
示例#13
0
 def test_operate_xyz(self):
     """test 'operate' (xyz)
     """
     bk = Backend(product='qlazy', device='qstate_gpu_simulator')
     qc = QCirc().x(2).y(0).z(1)
     res = bk.run(qcirc=qc, out_state=True)
     expect = res.qstate.amp
     pp = PauliProduct(pauli_str="XYZ", qid=[2, 0, 1])
     qc = QCirc().operate(pp=pp)
     res = bk.run(qcirc=qc, out_state=True)
     actual = res.qstate.amp
     ans = equal_vectors(actual, expect)
     self.assertEqual(ans, True)
示例#14
0
 def test_operate_h_z(self):
     """test 'operate' (Z followed by h)
     """
     bk = Backend(product='qulacs', device='gpu_simulator')
     qc = QCirc().h(0).z(0)
     res = bk.run(qcirc=qc, out_state=True)
     expect = res.qstate.amp
     pp = PauliProduct(pauli_str="Z")
     qc = QCirc().h(0).operate(pp=pp)
     res = bk.run(qcirc=qc, out_state=True)
     actual = res.qstate.amp
     ans = equal_vectors(actual, expect)
     self.assertEqual(ans,True)
示例#15
0
 def test_operate_controlled_xyz(self):
     """test 'operate' (controlled_xyz)
     """
     bk = Backend(product='qulacs', device='gpu_simulator')
     qc = QCirc().cx(3,2).cy(3,0).cz(3,1)
     res = bk.run(qcirc=qc, out_state=True)
     expect = res.qstate.amp
     pp = PauliProduct(pauli_str="XYZ", qid=[2,0,1])
     qc = QCirc().operate(pp=pp, ctrl=3)
     res = bk.run(qcirc=qc, out_state=True)
     actual = res.qstate.amp
     ans = equal_vectors(actual, expect)
     self.assertEqual(ans,True)
示例#16
0
 def test_init_pp(self):
     """test '__new__' (seed)
     """
     gene_str_list = [
         "IIIXXXX", "IXXIIXX", "XIXIXIX", "IIIZZZZ", "IZZIIZZ", "ZIZIZIZ"
     ]
     gene_list = [
         PauliProduct(pauli_str=gene_str, qid=[0, 2, 4, 6, 8, 7, 5])
         for gene_str in gene_str_list
     ]
     sb = Stabilizer(pp_list=gene_list)
     actual = sb.get_str()
     expect = "  IIIIIXXXX\n  IIXIXXIXI\n  XIIIXXIIX\n  IIIIIZZZZ\n  IIZIZZIZI\n  ZIIIZZIIZ\n"
     self.assertEqual(actual, expect)
示例#17
0
    def set_register(self, dat, anc):

        self.__dat = dat
        self.__anc = anc
        self.__x_stab = [PauliProduct(pauli_str='XXX', qid=[dat[0], dat[1], dat[2]]),
                         PauliProduct(pauli_str='XXX', qid=[dat[2], dat[3], dat[4]])]
        self.__z_stab = [PauliProduct(pauli_str='ZZZ', qid=[dat[0], dat[2], dat[3]]),
                         PauliProduct(pauli_str='ZZZ', qid=[dat[1], dat[2], dat[4]])]
        self.__lx = PauliProduct(pauli_str='XX', qid=[dat[0], dat[3]])
        self.__lz = PauliProduct(pauli_str='ZZ', qid=[dat[0], dat[1]])
        
        return self
示例#18
0
 def test_init_X_qid(self):
     """test '__init__' (pauli_str="X", qid=[1])
     """
     pp = PauliProduct(pauli_str="X", qid=[1])
     ans = equal_list(pp.pauli_list, ['X']) and equal_list(pp.qid, [1])
     self.assertEqual(ans, True)
示例#19
0
文件: cnot.py 项目: samn33/qlazy
    def set_register(self, dat_cnt, dat_int, dat_tar, bnd_cnt, bnd_tar, anc):

        self.__dat = {'cnt': dat_cnt, 'int': dat_int, 'tar': dat_tar}
        self.__bnd = {'cnt': bnd_cnt, 'tar': bnd_tar}
        self.__anc = anc
        self.__x_stab = {'cnt': [PauliProduct(pauli_str='XXX', qid=[dat_cnt[0], dat_cnt[1], dat_cnt[2]]),
                                  PauliProduct(pauli_str='XXX', qid=[dat_cnt[2], dat_cnt[3], dat_cnt[4]])],
                         'int': [PauliProduct(pauli_str='XXX', qid=[dat_int[0], dat_int[1], dat_int[2]]),
                                   PauliProduct(pauli_str='XXX', qid=[dat_int[2], dat_int[3], dat_int[4]])],
                         'tar': [PauliProduct(pauli_str='XXX', qid=[dat_tar[0], dat_tar[1], dat_tar[2]]),
                                   PauliProduct(pauli_str='XXX', qid=[dat_tar[2], dat_tar[3], dat_tar[4]])],
                         'bnd_tar': [PauliProduct(pauli_str='XXX', qid=[dat_int[1], dat_tar[0], bnd_tar[0]]),
                                     PauliProduct(pauli_str='XXX', qid=[bnd_tar[0], dat_int[4], dat_tar[3]])]}
        self.__z_stab = {'cnt': [PauliProduct(pauli_str='ZZZ', qid=[dat_cnt[0], dat_cnt[2], dat_cnt[3]]),
                                  PauliProduct(pauli_str='ZZZ', qid=[dat_cnt[1], dat_cnt[2], dat_cnt[4]])],
                         'int': [PauliProduct(pauli_str='ZZZ', qid=[dat_int[0], dat_int[2], dat_int[3]]),
                                   PauliProduct(pauli_str='ZZZ', qid=[dat_int[1], dat_int[2], dat_int[4]])],
                         'tar': [PauliProduct(pauli_str='ZZZ', qid=[dat_tar[0], dat_tar[2], dat_tar[3]]),
                                 PauliProduct(pauli_str='ZZZ', qid=[dat_tar[1], dat_tar[2], dat_tar[4]])],
                         'bnd_cnt': [PauliProduct(pauli_str='ZZZ', qid=[dat_cnt[0], bnd_cnt[0], dat_int[3]]),
                                     PauliProduct(pauli_str='ZZZ', qid=[dat_cnt[1], bnd_cnt[0], dat_int[4]])]}
        self.__lx = PauliProduct(pauli_str='XXXX', qid=[dat_int[0], dat_int[3], dat_cnt[0], dat_cnt[3]])
        self.__lz = PauliProduct(pauli_str='ZZZZ', qid=[dat_int[0], dat_int[1], dat_tar[0], dat_tar[1]])
        return self
示例#20
0
 def test_print(self):
     """test '__str__' (pauli_str="XZZIX", qid=[3,1,4,10,5])
     """
     pp = PauliProduct(pauli_str="XZZIX", qid=[3, 1, 4, 10, 5])
     self.assertEqual(pp.__str__(), "Z(1) X(3) Z(4) X(5)")
示例#21
0
 def test_init_I(self):
     """test '__init__' (pauli_str="I")
     """
     pp = PauliProduct(pauli_str="I")
     ans = equal_list(pp.pauli_list, ['I']) and equal_list(pp.qid, [0])
     self.assertEqual(ans, True)