|
39 | 39 | ) |
40 | 40 | from qualtran.bloqs.basic_gates import Hadamard, Ry, Toffoli, XGate |
41 | 41 | from qualtran.bloqs.basic_gates.swap import CSwap |
42 | | -from qualtran.bloqs.chemistry.black_boxes import QROAM |
43 | 42 | from qualtran.bloqs.multi_control_multi_target_pauli import MultiControlPauli |
44 | 43 | from qualtran.bloqs.on_each import OnEach |
45 | 44 | from qualtran.bloqs.reflection import Reflection |
@@ -435,8 +434,11 @@ def build_call_graph(self, ssa: 'SympySymbolAllocator') -> Set['BloqCountT']: |
435 | 434 | data_size = self.num_spin_orb // 2 + self.num_mu * (self.num_mu + 1) // 2 |
436 | 435 | nd = (data_size - 1).bit_length() |
437 | 436 | cost_2 = (ToContiguousIndex(nmu, nd), 1) |
438 | | - m = 2 * nmu + 2 + self.keep_bitsize |
439 | | - cost_3 = (QROAM(data_size, m), 1) |
| 437 | + qroam = SelectSwapQROM( |
| 438 | + *(self.theta, self.alt_theta, self.alt_mu, self.alt_nu, self.keep), |
| 439 | + target_bitsizes=(1, 1, nmu, nmu, self.keep_bitsize), |
| 440 | + ) |
| 441 | + cost_3 = (qroam, 1) |
440 | 442 | cost_4 = (OnEach(self.keep_bitsize, Hadamard()), 1) |
441 | 443 | cost_5 = (LessThanEqual(self.keep_bitsize, self.keep_bitsize), 2) |
442 | 444 | cost_6 = (CSwap(nmu), 3) |
|
0 commit comments