Skip to content

Commit eb4b4c4

Browse files
committed
Symbolic build call graph works + type test + linter
1 parent 70414b0 commit eb4b4c4

2 files changed

Lines changed: 17 additions & 9 deletions

File tree

qualtran/bloqs/block_encoding/product.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,24 @@
2525
bloq_example,
2626
BloqBuilder,
2727
BloqDocSpec,
28+
CtrlSpec,
2829
DecomposeTypeError,
2930
QAny,
3031
QBit,
3132
Register,
3233
Signature,
3334
Soquet,
3435
SoquetT,
35-
CtrlSpec,
36-
AddControlledT,
3736
)
3837
from qualtran.bloqs.basic_gates.x_basis import XGate
3938
from qualtran.bloqs.block_encoding import BlockEncoding
4039
from qualtran.bloqs.bookkeeping.auto_partition import AutoPartition, Unused
4140
from qualtran.bloqs.bookkeeping.partition import Partition
42-
from qualtran.bloqs.mcmt import MultiControlX
4341
from qualtran.bloqs.reflections.prepare_identity import PrepareIdentity
4442
from qualtran.bloqs.state_preparation.black_box_prepare import BlackBoxPrepare
4543
from qualtran.resource_counting import BloqCountDictT, SympySymbolAllocator
4644
from qualtran.resource_counting.generalizers import ignore_split_join
47-
from qualtran.symbolics import HasLength, is_symbolic, prod, smax, ssum, SymbolicFloat, SymbolicInt
45+
from qualtran.symbolics import is_symbolic, prod, smax, ssum, SymbolicFloat, SymbolicInt
4846
from qualtran.symbolics.math_funcs import is_zero
4947

5048

@@ -201,14 +199,12 @@ def build_call_graph(self, ssa: SympySymbolAllocator) -> BloqCountDictT:
201199
for i, u in enumerate(reversed(self.block_encodings)):
202200
if not is_zero(u.ancilla_bitsize) and n - 1 > 0 and i != n - 1:
203201
anc_bits = self.ancilla_bitsize - (n - 1)
204-
if not is_symbolic(self.ancilla_bitsize):
202+
if not is_symbolic(u.ancilla_bitsize):
205203
counts[
206204
self._multCX_autopart(used_bits=u.ancilla_bitsize, total_bits=anc_bits)
207205
] += 1
208206
else:
209-
counts[
210-
self._multCX(u.ancilla_bitsize)
211-
] # Right ? A TESTER ENCORE, REGARDER LE RéSULTATS
207+
counts[self._multCX(u.ancilla_bitsize)] += 1
212208
counts[XGate()] += 1
213209

214210
if not is_symbolic(self.ancilla_bitsize):

qualtran/bloqs/block_encoding/product_test.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
from qualtran.bloqs.block_encoding.block_encoding_base import BlockEncoding
3535
from qualtran.bloqs.block_encoding.product import (
3636
_product_block_encoding,
37-
_product_block_encoding_with_ancillas,
3837
_product_block_encoding_properties,
3938
_product_block_encoding_symb,
39+
_product_block_encoding_with_ancillas,
4040
Product,
4141
)
4242
from qualtran.bloqs.block_encoding.unitary import Unitary
@@ -230,6 +230,18 @@ def test_product_counts():
230230
assert_equivalent_bloq_example_counts(_product_block_encoding_with_ancillas)
231231

232232

233+
def test_product_symbolic_call_graph_decomposes():
234+
from qualtran.bloqs.basic_gates import Hadamard, TGate
235+
from qualtran.bloqs.block_encoding.unitary import Unitary
236+
237+
product_block_encoding = Product(
238+
(
239+
Unitary(TGate(), ancilla_bitsize=sympy.symbols("anc")),
240+
Unitary(Hadamard(), ancilla_bitsize=sympy.symbols("anc")),
241+
)
242+
)
243+
244+
233245
@pytest.mark.notebook
234246
def test_notebook():
235247
execute_notebook('product')

0 commit comments

Comments
 (0)