QuadraticForm
class qiskit.circuit.library.QuadraticForm(num_result_qubits=None, quadratic=None, linear=None, offset=None, little_endian=True)
Bases: QuantumCircuit
Implements a quadratic form on binary variables encoded in qubit registers.
A quadratic form on binary variables is a quadratic function acting on a binary variable of bits, . For an integer matrix , an integer vector and an integer the function can be written as
If , or contain scalar values, this circuit computes only an approximation of the quadratic form.
Provided with qubits to encode the value, this circuit computes in [two’s complement](https://stackoverflow.com/questions/1049722/what-is-2s-complement) representation.
Since we use two’s complement e.g. the value of requires 2 bits to represent the value and 1 bit for the sign: 3 = ‘011’ where the first 0 indicates a positive value. On the other hand, would be -3 = ‘101’, where the first 1 indicates a negative value and 01 is the two’s complement of 3.
If the value of is too large to be represented with m qubits, the resulting bitstring is .
The implementation of this circuit is discussed in [1], Fig. 6.
References
[1]: Gilliam et al., Grover Adaptive Search for Constrained Polynomial Binary Optimization.
The class qiskit.circuit.library.arithmetic.quadratic_form.QuadraticForm
is deprecated as of Qiskit 2.1. It will be removed Qiskit 3.0. Use the QuadraticFormGate instead.
Parameters
- num_result_qubits (Optional[int]) – The number of qubits to encode the result. Called in the class documentation.
- quadratic (Optional[Union[np.ndarray, List[List[Union[float, ParameterExpression]]]]]) – A matrix containing the quadratic coefficients, .
- linear (Optional[Union[np.ndarray, List[Union[float, ParameterExpression]]]]) – An array containing the linear coefficients, .
- offset (Optional[Union[float, ParameterExpression]]) – A constant offset, .
- little_endian (bool) – Encode the result in little endianness.
Raises
- ValueError – If
linear
andquadratic
have mismatching sizes. - ValueError – If
num_result_qubits
is unspecified but cannot be determined because some values of the quadratic form are parameterized.
Attributes
name
Type: str
A human-readable name for the circuit.
Example
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Methods
required_result_qubits
static required_result_qubits(quadratic, linear, offset)
Get the number of required result qubits.
Parameters
- quadratic (ndarray |List[List[float]]) – A matrix containing the quadratic coefficients.
- linear (ndarray |List[float]) – An array containing the linear coefficients.
- offset (float) – A constant offset.
Returns
The number of qubits needed to represent the value of the quadratic form in twos complement.
Return type