workbench_algorithms.experimental.subroutines.mps_prep.holder_isometry_synthesis
Functions for MPS preparation via reflections.
HouseholderUnitarySynthesis
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 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 |
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 |
required |
ctrl
|
Qubits
|
Control qubit. |
0
|
HouseholderMPSLoading
Bases: Qubrick
Qubrick for loading the MPS on a quantum computer, based on HouseholderUnitarySynthesis.
compute
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