StatePreparation#
- class qiskit.circuit.library.StatePreparation(params, num_qubits=None, inverse=False, label=None, normalize=False)[source]#
Bases :
Gate
Complex amplitude state preparation.
Class that implements the (complex amplitude) state preparation of some flexible collection of qubit registers.
- Paramètres:
params (str | list | int | Statevector) –
Statevector: Statevector to initialize to.
list: vector of complex amplitudes to initialize to.
string: labels of basis states of the Pauli eigenstates Z, X, Y. See
Statevector.from_label()
. Notice the order of the labels is reversed with respect to the qubit index to be applied to. Example label “01” initializes the qubit zero to \(|1\rangle\) and the qubit one to \(|0\rangle\).int: an integer that is used as a bitmap indicating which qubits to initialize to \(|1\rangle\). Example: setting params to 5 would initialize qubit 0 and qubit 2 to \(|1\rangle\) and qubit 1 to \(|0\rangle\).
num_qubits (int | None) – This parameter is only used if params is an int. Indicates the total number of qubits in the initialize call. Example: initialize covers 5 qubits and params is 3. This allows qubits 0 and 1 to be initialized to \(|1\rangle\) and the remaining 3 qubits to be initialized to \(|0\rangle\).
inverse (bool) – if True, the inverse state is constructed.
label (str | None) – An optional label for the gate
normalize (bool) – Whether to normalize an input array to a unit vector.
- Lève:
QiskitError –
num_qubits
parameter used whenparams
is not an integer
When a Statevector argument is passed the state is prepared using a recursive initialization algorithm, including optimizations, from [1], as well as some additional optimizations including removing zero rotations and double cnots.
References: [1] Shende, Bullock, Markov. Synthesis of Quantum Logic Circuits (2004) [https://arxiv.org/abs/quant-ph/0406176v5]
Attributes
- condition_bits#
Get Clbits in condition.
- decompositions#
Get the decompositions of the instruction from the SessionEquivalenceLibrary.
- definition#
Return definition in terms of other basic gates.
- duration#
Get the duration.
- label#
Return instruction label
- name#
Return the name.
- num_clbits#
Return the number of clbits.
- num_qubits#
Return the number of qubits.
- params#
return instruction params.
- unit#
Get the time unit of duration.
Methods
- broadcast_arguments(qargs, cargs)[source]#
Validation and handling of the arguments and its relationship.
For example,
cx([q[0],q[1]], q[2])
meanscx(q[0], q[2]); cx(q[1], q[2])
. This method yields the arguments in the right grouping. In the given example:in: [[q[0],q[1]], q[2]],[] outs: [q[0], q[2]], [] [q[1], q[2]], []
The general broadcasting rules are:
If len(qargs) == 1:
[q[0], q[1]] -> [q[0]],[q[1]]
If len(qargs) == 2:
[[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]] [[q[0]], [r[0], r[1]]] -> [q[0], r[0]], [q[0], r[1]] [[q[0], q[1]], [r[0]]] -> [q[0], r[0]], [q[1], r[0]]
If len(qargs) >= 3:
[q[0], q[1]], [r[0], r[1]], ...] -> [q[0], r[0], ...], [q[1], r[1], ...]
- Paramètres:
qargs – List of quantum bit arguments.
cargs – List of classical bit arguments.
- Renvoie:
A tuple with single arguments.
- Lève:
CircuitError – If the input is not valid. For example, the number of arguments does not match the gate expectation.