Skip to content

Commit b64798a

Browse files
committed
updated dqi notebook with new functions
1 parent ea2ebbd commit b64798a

File tree

3 files changed

+511
-341
lines changed

3 files changed

+511
-341
lines changed

algorithms/dqi/dqi_max_xorsat.ipynb

Lines changed: 465 additions & 291 deletions
Large diffs are not rendered by default.

algorithms/dqi/dqi_max_xorsat.qmod

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
1-
qfunc inplace_binary_to_one_hot_expanded___0(one_hot: qbit[4]) {
2-
temp_0: qbit;
3-
temp_1: qbit;
4-
temp_2: qbit;
5-
temp_3: qbit;
6-
one_hot -> {temp_0, temp_1, temp_2, temp_3};
7-
{temp_2, temp_0, temp_3, temp_1} -> one_hot;
8-
X(one_hot[0]);
9-
CX(one_hot[1], one_hot[0]);
10-
control (one_hot[3]) {
11-
SWAP(one_hot[0], one_hot[2]);
12-
}
13-
CX(one_hot[2], one_hot[3]);
14-
CX(one_hot[3], one_hot[1]);
1+
qperm inplace_binary_to_one_hot_expanded___0(qvar: qbit[4]) {
2+
x0: qbit;
3+
x1: qbit;
4+
x2: qbit;
5+
x3: qbit;
6+
qvar -> {x0, x1, x2, x3};
7+
{x2, x0, x3, x1} -> qvar;
8+
X(qvar[0]);
9+
CX(qvar[1], qvar[0]);
10+
control (qvar[3]) {
11+
SWAP(qvar[0], qvar[2]);
12+
}
13+
CX(qvar[2], qvar[3]);
14+
CX(qvar[3], qvar[1]);
1515
}
1616

17-
qfunc binary_to_one_hot_expanded___0(input binary: qnum<2, False, 0>, output one_hot: qbit[4]) {
17+
qperm binary_to_one_hot_expanded___0(input binary: qnum<2, False, 0>, output one_hot: qbit[4]) {
1818
extension: qbit[2];
1919
allocate(2, extension);
2020
{binary, extension} -> one_hot;
2121
inplace_binary_to_one_hot_expanded___0(one_hot);
2222
}
2323

24-
qfunc inplace_one_hot_to_unary_expanded___0(qvar: qbit[4]) {
24+
qperm inplace_one_hot_to_unary_expanded___0(qvar: qbit[4]) {
2525
repeat (i: 3) {
2626
CX(qvar[(4 - i) - 1], qvar[(4 - i) - 2]);
2727
}
2828
X(qvar[0]);
2929
}
3030

31-
qfunc one_hot_to_unary_expanded___0(input one_hot: qbit[4], output unary: qbit[3]) {
31+
qperm one_hot_to_unary_expanded___0(input one_hot: qbit[4], output unary: qbit[3]) {
3232
inplace_one_hot_to_unary_expanded___0(one_hot);
3333
lsb: qbit;
3434
one_hot -> {lsb, unary};
3535
free(lsb);
3636
}
3737

38-
qfunc binary_to_unary_expanded___0(input binary: qnum<2, False, 0>, output unary: qbit[3]) {
38+
qperm binary_to_unary_expanded___0(input binary: qnum<2, False, 0>, output unary: qbit[3]) {
3939
one_hot: qbit[4];
4040
binary_to_one_hot_expanded___0(binary, one_hot);
4141
one_hot_to_unary_expanded___0(one_hot, unary);
4242
}
4343

44-
qfunc pad_zeros_expanded___0(input qvar: qbit[3], output qvar_padded: qbit[6]) {
44+
qperm pad_zeros_expanded___0(input qvar: qbit[3], output padded: qbit[6]) {
4545
extension: qbit[3];
4646
allocate(3, extension);
47-
{qvar, extension} -> qvar_padded;
47+
{qvar, extension} -> padded;
4848
}
4949

5050
qfunc _dicke_split_cycle_shift_expanded___0(qvar: qbit[6]) {
@@ -125,32 +125,28 @@ qfunc _dicke_split_cycle_shift_expanded___4(qvar: qbit[2]) {
125125
}
126126
}
127127

128-
qfunc prepare_dick_state_unary_input_expanded___0(qvar: qbit[1]) {
129-
}
130-
131-
qfunc prepare_dick_state_unary_input_expanded___1(qvar: qbit[2]) {
128+
qfunc prepare_dicke_state_unary_input_expanded___0(qvar: qbit[2]) {
132129
_dicke_split_cycle_shift_expanded___4(qvar);
133-
prepare_dick_state_unary_input_expanded___0(qvar[1:2]);
134130
}
135131

136-
qfunc prepare_dick_state_unary_input_expanded___2(qvar: qbit[3]) {
132+
qfunc prepare_dicke_state_unary_input_expanded___1(qvar: qbit[3]) {
137133
_dicke_split_cycle_shift_expanded___3(qvar);
138-
prepare_dick_state_unary_input_expanded___1(qvar[1:3]);
134+
prepare_dicke_state_unary_input_expanded___0(qvar[1:3]);
139135
}
140136

141-
qfunc prepare_dick_state_unary_input_expanded___3(qvar: qbit[4]) {
137+
qfunc prepare_dicke_state_unary_input_expanded___2(qvar: qbit[4]) {
142138
_dicke_split_cycle_shift_expanded___2(qvar);
143-
prepare_dick_state_unary_input_expanded___2(qvar[1:4]);
139+
prepare_dicke_state_unary_input_expanded___1(qvar[1:4]);
144140
}
145141

146-
qfunc prepare_dick_state_unary_input_expanded___4(qvar: qbit[5]) {
142+
qfunc prepare_dicke_state_unary_input_expanded___3(qvar: qbit[5]) {
147143
_dicke_split_cycle_shift_expanded___1(qvar);
148-
prepare_dick_state_unary_input_expanded___3(qvar[1:5]);
144+
prepare_dicke_state_unary_input_expanded___2(qvar[1:5]);
149145
}
150146

151-
qfunc prepare_dick_state_unary_input_expanded___5(qvar: qbit[6]) {
147+
qfunc prepare_dicke_state_unary_input_expanded___4(qvar: qbit[6]) {
152148
_dicke_split_cycle_shift_expanded___0(qvar);
153-
prepare_dick_state_unary_input_expanded___4(qvar[1:6]);
149+
prepare_dicke_state_unary_input_expanded___3(qvar[1:6]);
154150
}
155151

156152
qfunc vector_product_phase_expanded___0(v: int[], y: qbit[6]) {
@@ -253,7 +249,7 @@ qfunc dqi_max_xor_sat_expanded___0(output y: qbit[6], output solution: qbit[6])
253249
k_unary: qbit[3];
254250
binary_to_unary_expanded___0(k_num_errors, k_unary);
255251
pad_zeros_expanded___0(k_unary, y);
256-
prepare_dick_state_unary_input_expanded___5(y);
252+
prepare_dicke_state_unary_input_expanded___4(y);
257253
vector_product_phase_expanded___0([1.0, 1.0, 1.0, 1.0, 1.0, 1.0], y);
258254
matrix_vector_product_expanded___0(y, solution);
259255
syndrome_decode_lookuptable_expanded___0(solution, y);

algorithms/dqi/dqi_max_xorsat.synthesis_options.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@
66
"preferences": {
77
"custom_hardware_settings": {
88
"basis_gates": [
9-
"cx",
109
"x",
11-
"t",
12-
"id",
10+
"cx",
11+
"z",
12+
"rx",
1313
"p",
14+
"s",
1415
"cy",
15-
"cz",
16-
"rz",
17-
"tdg",
18-
"r",
19-
"u",
20-
"sx",
2116
"u2",
17+
"ry",
18+
"tdg",
19+
"cz",
2220
"y",
21+
"id",
22+
"u",
23+
"t",
24+
"sdg",
2325
"u1",
24-
"rx",
25-
"s",
26-
"sxdg",
27-
"z",
26+
"rz",
2827
"h",
29-
"ry",
30-
"sdg"
28+
"r",
29+
"sxdg",
30+
"sx"
3131
],
3232
"is_symmetric_connectivity": true
3333
},
@@ -36,7 +36,7 @@
3636
"optimization_level": 1,
3737
"output_format": ["qasm"],
3838
"pretty_qasm": true,
39-
"random_seed": 2420618710,
39+
"random_seed": 3915882729,
4040
"synthesize_all_separately": false,
4141
"timeout_seconds": 300,
4242
"transpilation_option": "auto optimize"

0 commit comments

Comments
 (0)