paddle_quantum.qpp.qpp.utils
- paddle_quantum.qpp.utils.qpp_cir(list_theta, list_phi, U)
Construct a quantum phase processor of QPP by list_theta and list_phi.
- Parameters:
list_theta (ndarray | Tensor) – angles for
gates.list_phi (ndarray | Tensor) – angles for
gates.U (ndarray | Tensor | float) – unitary or scalar input.
- Returns:
a multi-qubit version of trigonometric QSP.
- Return type:
- paddle_quantum.qpp.utils.simulation_cir(fn, U, approx=True, deg=50, length=3.141592653589793, step_size=3.1415926535897935e-05, tol=1e-30)
Return a QPP circuit approximating fn.
- Parameters:
fn (Callable[[ndarray], ndarray]) – function to be approximated.
U (ndarray | Tensor | float) – unitary input.
deg (int | None) – degree of approximation, defaults to be
.approx (bool | None) – whether approximately find the angle of circuits, defaults to be
True
length (float | None) – half of approximation width, defaults to be
.step_size (float | None) – sampling frequency of data points, defaults to be
.tol (float | None) – error tolerance, defaults to be
.
- Returns:
//arxiv.org/abs/2209.14278.
- Return type:
a QPP circuit approximating fn in Theorem 6 of paper https
- paddle_quantum.qpp.utils.qps(U, initial_state)
Algorithm for quantum phase search, see Algorithm 1 and 2 of paper https://arxiv.org/abs/2209.14278.
- Parameters:
U (ndarray | Tensor) – target unitary
initial_state (ndarray | Tensor | State) – the input quantum state
- Returns:
an eigenphase of U
its corresponding eigenstate that has overlap with the initial state
- Return type:
contains the following two elements
- paddle_quantum.qpp.utils.qubitize(block_enc, num_block_qubits)
Qubitize the block encoding to keep subspace invariant using one more ancilla qubit, see paper http://arxiv.org/abs/1610.06546 for more details.
- Parameters:
block_enc (ndarray | Tensor) – the target block encoding.
num_block_qubits (int) – number of ancilla qubits used in block encoding.
- Returns:
the qubitized version for
block_enc
.- Return type:
Tensor
- paddle_quantum.qpp.utils.purification_block_enc(num_qubits, num_block_qubits)
Randomly generate a
-qubit qubitized block encoding of a -qubit density matrix.- Parameters:
num_qubits (int) – number of qubits
.num_block_qubits (int) – number of ancilla qubits
used in block encoding.
- Returns:
a
unitary matrix that its upper-left block is a density matrix.- Return type:
Tensor