4 std::vector<std::vector<qcor::Operator>> five_qubit_code_stabilizers() {
5 static const std::vector<std::vector<qcor::Operator>> STABILIZERS{
6 {qcor::X(0), qcor::Z(1), qcor::Z(2), qcor::X(3)},
7 {qcor::X(1), qcor::Z(2), qcor::Z(3), qcor::X(4)},
8 {qcor::X(0), qcor::X(2), qcor::Z(3), qcor::Z(4)},
9 {qcor::Z(0), qcor::X(1), qcor::X(3), qcor::Z(4)}};
13 __qpu__
void five_qubit_code_encoder(qreg q,
int dataQubitIdx,
14 std::vector<int> scratchQubitIdx) {
15 CX(q[dataQubitIdx], q[scratchQubitIdx[1]);
17 H(q[scratchQubitIdx[0]]);
18 CX(q[dataQubitIdx], q[scratchQubitIdx[2]]);
19 CX(q[scratchQubitIdx[0]], q[dataQubitIdx]);
20 CX(q[dataQubitIdx], q[scratchQubitIdx[1]]);
21 CX(q[scratchQubitIdx[0]], q[scratchQubitIdx[3]]);
22 H(q[scratchQubitIdx[0]]);
24 CX(q[scratchQubitIdx[0]], q[scratchQubitIdx[2]]);
25 CX(q[dataQubitIdx], q[scratchQubitIdx[3]]);
26 X(q[scratchQubitIdx[2]]);
29 __qpu__
void five_qubit_code_recover(qreg q, std::vector<int> logicalReg,
30 std::vector<int> syndromes) {
31 auto syndromeIndex = syndrome_array_to_int(syndromes);
32 if (syndromeIndex > 0) {
33 if (syndromeIndex == 1) {
36 if (syndromeIndex == 2) {
39 if (syndromeIndex == 3) {
42 if (syndromeIndex == 4) {
45 if (syndromeIndex == 5) {
48 if (syndromeIndex == 6) {
51 if (syndromeIndex == 7) {
54 if (syndromeIndex == 8) {
57 if (syndromeIndex == 9) {
60 if (syndromeIndex == 10) {
63 if (syndromeIndex == 11) {
66 if (syndromeIndex == 12) {
69 if (syndromeIndex == 13) {
72 if (syndromeIndex == 14) {
75 if (syndromeIndex == 15) {