class_docstr: Double excitation rotation with positive phase-shift outside the rotation subspace.
  
  This operation performs an :math:`SO(2)` rotation in the two-dimensional subspace :math:`\{
  |1100\rangle,|0011\rangle\}` while applying a phase-shift on other states. More precisely,
  it performs the transformation
  
  .. math::
  
      &|0011\rangle \rightarrow \cos(\phi/2) |0011\rangle - \sin(\phi/2) |1100\rangle\\
      &|1100\rangle \rightarrow \cos(\phi/2) |1100\rangle + \sin(\phi/2) |0011\rangle\\
      &|x\rangle \rightarrow e^{i\phi/2} |x\rangle,
  
  for all other basis states :math:`|x\rangle`.
  
  **Details:**
  
  * Number of wires: 4
  * Number of parameters: 1
  * Number of dimensions per parameter: (0,)
  * Gradient recipe: :math:`\frac{d}{d\phi}f(U_+(\phi)) = \frac{1}{2}\left[f(U_+(\phi+\pi/2)) - f(U_+(\phi-\pi/2))\right]`
    where :math:`f` is an expectation value depending on :math:`U_+(\phi)`
  
  Args:
      phi (float): rotation angle :math:`\phi`
      wires (Sequence[int]): the wires the operation acts on
      id (str or None): String representing the operation (optional)
class_docstr_tok: ["Double","excitation","rotation","with","positive","phase-shift","outside","the","rotation","subspace",".","This","operation","performs","an",":","math",":","`","SO","(","2",")","`","rotation","in","the","two-dimensional","subspace",":","math",":","`","\\","{","|1100\\rangle",",","|0011\\rangle\\","}","`","while","applying","a","phase-shift","on","other","states",".","More","precisely",",","it","performs","the","transformation","..","math",":",":","&","|0011\\rangle","\\rightarrow","\\cos","(","\\phi\/2",")","|0011\\rangle","-","\\sin","(","\\phi\/2",")","|1100\\rangle\\\\","&","|1100\\rangle","\\rightarrow","\\cos","(","\\phi\/2",")","|1100\\rangle","+","\\sin","(","\\phi\/2",")","|0011\\rangle\\\\","&","|x\\rangle","\\rightarrow","e^","{","i\\phi\/2","}","|x\\rangle",",","for","all","other","basis","states",":","math",":","`","|x\\rangle","`",".","*","*","Details",":","*","*","*","Number","of","wires",":","4","*","Number","of","parameters",":","1","*","Number","of","dimensions","per","parameter",":","(","0",",",")","*","Gradient","recipe",":",":","math",":","`","\\frac","{","d","}","{","d\\phi","}","f","(","U_+","(","\\phi",")",")","=","\\frac","{","1","}","{","2","}","\\left","[","f","(","U_+","(","\\phi+\\pi\/2",")",")","-","f","(","U_+","(","\\phi-\\pi\/2",")",")","\\right","]","`","where",":","math",":","`","f","`","is","an","expectation","value","depending","on",":","math",":","`","U_+","(","\\phi",")","`","Args",":","phi","(","float",")",":","rotation","angle",":","math",":","`","\\phi","`","wires","(","Sequence","[","int","]",")",":","the","wires","the","operation","acts","on","id","(","str","or","None",")",":","String","representing","the","operation","(","optional",")"]
code: def generator(self):
      G = -1 * np.eye(16, dtype=np.complex64)
      G[3, 3] = G[12, 12] = 0
      G[3, 12] = -1j  # 3 (dec) = 0011 (bin)
      G[12, 3] = 1j  # 12 (dec) = 1100 (bin)
      H = csr_matrix(-0.5 * G)
      return qml.SparseHamiltonian(H, wires=self.wires)
  
imports: import functools
  import numpy
  from scipy.sparse import csr_matrix
  import pennylane
  from pennylane.operation import Operation
label_desc: Use image node_id 1 for calling the DoubleExcitationPlus obj's underlying member method code with example usage: obj.generator() and returns: qml