Reference: Uniform State Preparation (USP) Qubricks
Contents
USP Class
psiqworkbench.qubricks.qbk_usp.USP
Bases: Qubrick
Qubrick for Uniform State Preparation.
Follows the construction described in Fig.12 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉).
compute
Prepare a uniformly distributed state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
d
|
int
|
Desired number of basis states in the superposition. |
required |
target_qreg
|
Qubits or None
|
The register to operate on, or None to allocate a new register. |
None
|
error_param
|
float
|
A parameter to control the precision of the rotation angle in reflect. Defaults to 0 (no error). |
0
|
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the register passed in is too small. |
Note
For more details, see Built-in Qubricks tutorial.
ZAUSP Class
psiqworkbench.qubricks.qbk_usp.ZAUSP
Bases: Qubrick
Qubrick for Uniform State Preparation.
The routine which uses zero auxiliary qubits from "An efficient quantum algorithm for preparation of uniform quantum superposition states" (arxiv:2306.11747 ⧉).
compute
Prepare a uniformly distributed state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
d
|
int
|
Desired number of basis states in the superposition. |
required |
target_qreg
|
Qubits or None
|
The register to operate on, or None to allocate a new register. |
None
|
error_param
|
float
|
A parameter to control the precision of individual rotations. Defaults to 0 (no error). |
0
|
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the register passed in is too small. |
Note
For more details, see Built-in Qubricks tutorial.
IUSP Class
psiqworkbench.qubricks.qbk_usp.IUSP
Bases: Qubrick
Qubrick for improved Uniform State Preparation.
compute
Prepare a uniformly distributed state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
d
|
int
|
Desired number of basis states in the superposition. |
required |
target_qreg
|
Qubits or None
|
The register to operate on, or None to allocate a new register. |
None
|
error_param
|
float
|
A parameter to control the precision of individual rotations. Defaults to 0 (no error). |
0
|
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the register passed in is too small. |
Note
error_param is currently used for quantifying error budget
per rotation, but this could change.
USP_RUS Class
psiqworkbench.qubricks.qbk_usp.USP_RUS
Bases: Qubrick
Qubrick for Uniform State Preparation, repeat-until-success variant.
This qubrick currently requires the >>jump-control>> filter to exist in your pipeline.
Note
This version of USP is not deterministically reversible and thus cannot be used in settings where we need this reversibility, for example, in PREP of LCU's.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
use_jump_control
|
bool
|
Use (currently experimental) jump opcodes |
False
|
max_num_loops
|
int
|
The maximum number of loops to try before failing. Note that USP_RUS always has a success rate greater than 50%; the chance of it requiring 100 attempts is vanishingly small. |
100
|
compute
Prepare a uniformly distributed state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
d
|
int
|
Desired number of basis states in the superposition. |
required |
target_qreg
|
Qubits or None
|
The register to operate on, or None to allocate a new register. |
None
|
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If the register passed in is too small. |