openfermioncirq.QuadraticFermionicSimulationGate¶
-
class
openfermioncirq.
QuadraticFermionicSimulationGate
(weights: Tuple[float, float] = (1, 1), **kwargs)[source]¶ (w0 |10><01| + h.c.) + w1 * |11><11| interaction.
With weights \((w_0, w_1)\) and exponent \(t\), this gate’s matrix is defined as
\[e^{-i t H},\]where
\[H = \left(w_0 \left| 10 \right\rangle\left\langle 01 \right| + \text{h.c.}\right) - w_1 \left| 11 \right\rangle \left\langle 11 \right|.\]This corresponds to the Jordan-Wigner transform of
\[H = (w_0 a^{\dagger}_i a_{i+1} + \text{h.c.}) + w_1 a_{i}^{\dagger} a_{i+1}^{\dagger} a_{i} a_{i+1},\]where \(a_i\) and \(a_{i+1}\) are the annihilation operators for the fermionic modes \(i\) and \((i+1)\), respectively mapped to the first and second qubits on which this gate acts.
Parameters: weights – The weights of the terms in the Hamiltonian. -
__init__
(weights: Tuple[float, float] = (1, 1), **kwargs) → None[source]¶ Initializes the parameters used to compute the gate’s matrix.
The eigenvalue of each eigenspace of a gate is computed by
1. Starting with an angle in half turns as returned by the gate’s
_eigen_components
method:θShifting the angle by global_shift:
θ + s
Scaling the angle by exponent:
(θ + s) * e
Converting from half turns to a complex number on the unit circle:
exp(i * pi * (θ + s) * e)
Parameters: - exponent – The t in gate**t. Determines how much the eigenvalues of the gate are scaled by. For example, eigenvectors phased by -1 when gate**1 is applied will gain a relative phase of e^{i pi exponent} when gate**exponent is applied (relative to eigenvectors unaffected by gate**1).
- global_shift –
Offsets the eigenvalues of the gate at exponent=1. In effect, this controls a global phase factor on the gate’s unitary matrix. The factor is:
exp(i * pi * global_shift * exponent)For example, cirq.X**t uses a global_shift of 0 but cirq.rx(t) uses a global_shift of -0.5, which is why cirq.unitary(cirq.rx(pi)) equals -iX instead of X.
Methods
__init__
(weights, float] = (1, 1), **kwargs)Initializes the parameters used to compute the gate’s matrix. controlled
(num_controls, control_values, …)Returns a controlled version of this gate. num_qubits
()The number of qubits this gate acts on. on
(*qubits)Returns an application of this gate to the given qubits. qubit_index_to_equivalence_group_key
(index)Returns a key that differs between non-interchangeable qubits. validate_args
(qubits)Checks if this gate can be applied to the given qubits. wrap_in_linear_combination
(coefficient, …)Attributes
exponent
global_shift
-