Skip to content

Commit a05ba90

Browse files
authored
BugFix in gate counts for QROAMClean for small log_block_sizes (#1634)
1 parent d6933c9 commit a05ba90

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

qualtran/bloqs/cryptography/ecc/ec_add_test.py

+5
Original file line numberDiff line numberDiff line change
@@ -443,3 +443,8 @@ def test_ec_add_small(bloq_autotester):
443443
@pytest.mark.notebook
444444
def test_notebook():
445445
qlt_testing.execute_notebook('ec_add')
446+
447+
448+
def test_ec_add_small_gate_cost():
449+
bloq = _ec_add_small.make()
450+
assert get_cost_value(bloq, QECGatesCost()).toffoli == 29

qualtran/bloqs/data_loading/qroam_clean.py

+4
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ def build_call_graph(self, ssa: 'SympySymbolAllocator') -> 'BloqCountDictT':
189189
block_sizes = prod([2**k for k in self.log_block_sizes])
190190
data_size = prod(self.data_shape)
191191
n_toffoli = ceil(data_size / block_sizes) + block_sizes - 4 + self.num_controls
192+
if not is_symbolic(n_toffoli):
193+
n_toffoli = max(0, n_toffoli)
192194
return {Toffoli(): n_toffoli}
193195

194196
@cached_property
@@ -278,6 +280,8 @@ def build_call_graph(self, ssa: 'SympySymbolAllocator') -> 'BloqCountDictT':
278280
block_sizes = prod([2**k for k in self.log_block_sizes])
279281
data_size = prod(self.qroam_clean.data_shape)
280282
n_toffoli = ceil(data_size / block_sizes) + block_sizes - 4 + self.qroam_clean.num_controls
283+
if not is_symbolic(n_toffoli):
284+
n_toffoli = max(0, n_toffoli)
281285
return {Toffoli(): n_toffoli}
282286

283287
def adjoint(self) -> 'QROAMClean':

qualtran/bloqs/data_loading/qroam_clean_test.py

+16
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,19 @@ def test_qroam_clean_classical_sim_multi_dataset():
211211
target1_=vals[3],
212212
junk_target1_=vals[5],
213213
) == (x, y)
214+
215+
216+
def test_qroam_clean_small_bloq_counts():
217+
qroam_clean = QROAMClean(
218+
data_or_shape=(np.array([0, 7]),),
219+
selection_bitsizes=(1,),
220+
target_bitsizes=(6,),
221+
target_shapes=((),),
222+
num_controls=0,
223+
log_block_sizes=(0,),
224+
)
225+
assert qroam_clean.t_complexity().t == 0
226+
qroam_clean_adj_wrapper = QROAMCleanAdjointWrapper(
227+
qroam_clean=qroam_clean, log_block_sizes=(0,)
228+
)
229+
assert qroam_clean_adj_wrapper.t_complexity().t == 0

0 commit comments

Comments
 (0)