Unitary#

from qualtran import Bloq, CompositeBloq, BloqBuilder, Signature, Register
from qualtran import QBit, QInt, QUInt, QAny
from qualtran.drawing import show_bloq, show_call_graph, show_counts_sigma
from typing import *
import numpy as np
import sympy
import cirq

Unitary#

Trivial block encoding of a unitary operator.

Builds the block encoding as \( B[U] = U \) where \(U\) is a unitary operator. Here, \(B[U]\) is a \((1, 0, 0)\)-block encoding of \(U\).

Parameters#

  • U: The unitary operator to block-encode.

  • alpha: The normalization factor (default 1).

  • ancilla_bitsize: The number of ancilla bits (default 0).

  • resource_bitsize: The number of resource bits (default 0).

  • epsilon: The precision parameter (default 0).

Registers#

  • system: The system register.

  • ancilla: The ancilla register (present only if bitsize > 0).

  • resource: The resource register (present only if bitsize > 0).

from qualtran.bloqs.block_encoding import Unitary

Example Instances#

from qualtran.bloqs.basic_gates import TGate

unitary_block_encoding = Unitary(TGate())
from attrs import evolve

from qualtran.bloqs.basic_gates import TGate

unitary_block_encoding_properties = evolve(
    Unitary(TGate()), alpha=0.5, ancilla_bitsize=2, resource_bitsize=1, epsilon=0.01
)

Graphical Signature#

from qualtran.drawing import show_bloqs
show_bloqs([unitary_block_encoding, unitary_block_encoding_properties],
           ['`unitary_block_encoding`', '`unitary_block_encoding_properties`'])

Call Graph#

from qualtran.resource_counting.generalizers import ignore_split_join
unitary_block_encoding_g, unitary_block_encoding_sigma = unitary_block_encoding.call_graph(max_depth=1, generalizer=ignore_split_join)
show_call_graph(unitary_block_encoding_g)
show_counts_sigma(unitary_block_encoding_sigma)
../../_images/5de810800dfc0c0f9f888785644281ad9cd92427c1b268d9f5c07f4a45dbea58.svg

Counts totals:

  • T: 1