def u2_ex_gate(phi, wires=None): r"""Implements the two-qubit exchange gate :math:`U_{2,\mathrm{ex}}` proposed in `arXiv:1805.04340 <https://arxiv.org/abs/1805.04340>`_ to build particle-conserving VQE ansatze for Quantum Chemistry simulations. The unitary matrix :math:`U_{2, \mathrm{ex}}` acts on the Hilbert space of two qubits .. math:: U_{2, \mathrm{ex}}(\phi) = \left(\begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & \mathrm{cos}(\phi) & -i\;\mathrm{sin}(\phi) & 0 \\ 0 & -i\;\mathrm{sin}(\phi) & \mathrm{cos}(\phi) & 0 \\ 0 & 0 & 0 & 1 \\ \end{array}\right). Args: phi (float): angle entering the controlled-RX operator :math:`CRX(2\phi)` wires (list[Wires]): the two wires ``n`` and ``m`` the circuit acts on """ CNOT(wires=wires) CRX(2 * phi, wires=wires[::-1]) CNOT(wires=wires)
def KwargTemplateDouble(par, wires, a=True): if a: T(wires=wires[0]) CRX(par, wires=wires)
def ParametrizedTemplateDouble(par1, par2, wires): CRX(par1, wires=wires) RY(par2, wires=wires[0])