|
18 | 18 |
|
19 | 19 |
|
20 | 20 | from qrisp.misc.utility import lifted
|
21 |
| -from qrisp.environments import adaptive_condition |
| 21 | +from qrisp.environments import adaptive_condition, conjugate |
22 | 22 |
|
23 | 23 |
|
24 | 24 | def less_than_gate(a, b):
|
@@ -226,17 +226,17 @@ def equal(qf_0, qf_1):
|
226 | 226 | significance_dict[qf_0.exponent + i] = qf_0[i]
|
227 | 227 | mcx_qubits.append(qf_0[i])
|
228 | 228 |
|
| 229 | + def conjugator(qf_1, significance_dict): |
| 230 | + for i in range(qf_1.msize): |
| 231 | + if i + qf_1.exponent in significance_dict: |
| 232 | + cx(qf_1[i], significance_dict[i + qf_1.exponent]) |
| 233 | + |
229 | 234 | for i in range(qf_1.msize):
|
230 |
| - if i + qf_1.exponent in significance_dict: |
231 |
| - cx(qf_1[i], significance_dict[i + qf_1.exponent]) |
232 |
| - else: |
| 235 | + if i + qf_1.exponent not in significance_dict: |
233 | 236 | mcx_qubits.append(qf_1[i])
|
234 | 237 |
|
235 |
| - mcx(mcx_qubits, eq_qbl, ctrl_state=0) |
236 |
| - |
237 |
| - for i in range(qf_1.msize): |
238 |
| - if i + qf_1.exponent in significance_dict: |
239 |
| - cx(qf_1[i], significance_dict[i + qf_1.exponent]) |
| 238 | + with conjugate(conjugator)(qf_1, significance_dict): |
| 239 | + mcx(mcx_qubits, eq_qbl, ctrl_state=0) |
240 | 240 |
|
241 | 241 | if qf_1.signed and qf_0.signed:
|
242 | 242 | cx(qf_1.sign(), qf_0.sign())
|
|
0 commit comments