Example #1
0
        elif mval == '0010': self.z(qid_cod[2])
        elif mval == '1110': self.z(qid_cod[2]).x(qid_cod[2])
        elif mval == '0110': self.x(qid_cod[3])
        elif mval == '1001': self.z(qid_cod[3])
        elif mval == '1111': self.z(qid_cod[3]).x(qid_cod[3])
        elif mval == '0011': self.x(qid_cod[4])
        elif mval == '0100': self.z(qid_cod[4])
        elif mval == '0111': self.z(qid_cod[4]).x(qid_cod[4])

        return self


if __name__ == '__main__':

    # create registers
    qid_anc = QState.create_register(5)
    qid_cod = QState.create_register(5)
    qnum = QState.init_register(qid_anc, qid_cod)

    # parameters for input quantum state (U3 gate params)
    phase = [np.random.rand(), np.random.rand(), np.random.rand()]

    # encode quantum state
    # qs_ini = QState(qnum)
    qs_ini = MyQState(qnum)
    qs_ini.encode(phase, qid_anc, qid_cod)
    qs_fin = qs_ini.clone()

    # noise
    q = np.random.randint(0, len(qid_cod))
    kind = np.random.choice(['X', 'Z', 'XZ'])
Example #2
0
    qs_C = MyQState(vector=qvec)
    qs_S = MyQState(len(qid_S))
    qs_ini = qs_C.tenspro(qs_S)
    qs_fin = qs_ini.clone()

    print("== random state (a |0L> + b |1L>) ==")
    print("- a = {:.4f}".format(a))
    print("- b = {:.4f}".format(b))

    # QState.free_all(qs_C, qs_S)
    return qs_ini, qs_fin

if __name__ == '__main__':

    # set registers
    qid_C = QState.create_register(7) # registers for code space
    qid_S = QState.create_register(3) # registers for error syndrome
    QState.init_register(qid_C, qid_S)

    # generate initial quantum state
    qs_ini, qs_fin = generate_qstate(qid_C, qid_S)

    # add noise
    qs_fin.noise(qid_C)

    # error correction
    qs_fin.correct('bit_flip', qid_C, qid_S)
    qs_fin.correct('phase_flip', qid_C, qid_S)

    # print result
    print("== result ==")