Skip to content

workbench_algorithms.experimental.subroutines.mps_prep.holder_isometry_synthesis

Functions for MPS preparation via reflections.

HouseholderUnitarySynthesis

HouseholderUnitarySynthesis(
    inverse_state_prep=None,
    merge_qroms: bool = False,
    **kwargs,
)

Bases: Qubrick

Qubrick synthesizing an isometry using the Householder-based decomposition.

Parameters:

Name Type Description Default
inverse_state_prep Qubrick

state preperation protocol to utilise.

None
merge_qroms Bool

choice to utilise QROM merging between two consecutive column loading on same physical site

False
**kwargs dict[str, Any]

Other arguments to pass to the init.

{}
Note
  • Ref: see PRXQuantum.5.040339
  • Currently the QRE is inaccurate due to compute of the daggered LKS state prep acting oddly.
  • QROM merging will only be accurate for sufficient b_of_p in rotation angles.

compute

compute(
    virtual_reg, physical_reg, data, ctrl: Qubits | int = 0
)

Compute function for the Householder-based synthesis of a given isometry matrix isometry.

Parameters:

Name Type Description Default
virtual_reg Qubits

Virtual reg used in synthesis. Must have dimension at least isometry.shape[1].

required
physical_reg Qubits

Physical reg used in synthesis.

required
data HouseHolderUnitarySynthesisData

Dataclass containing unitary synthesis info, including: - isometry ([list, numpy]): The isometry matrix to be synthesized. - bits_of_precision (int): The bit-precision used in the state preparation subroutines. - physical_dimension (None, int): If None, the physical register dimension will be used. Must be specified if used in the context of an MPS with non-power of two physical dimension.

required
ctrl Qubits

Control qubit.

0

HouseholderMPSLoading

HouseholderMPSLoading(unitary_synth_qbk=None, **kwargs)

Bases: Qubrick

Qubrick for loading the MPS on a quantum computer, based on HouseholderUnitarySynthesis.

compute

compute(prep_reg, data, ctrl: Qubits | int = 0)

Compute circuit for loading an MPS.

Parameters:

Name Type Description Default
prep_reg Qubits

Register where we are to prepare the desired state.

required
data MPSPrepData

Dataclass encoding the specification of the MPS.

required
ctrl Qubits

Control qubit.

0
Note
  • Ref: see PRXQuantum.5.040339