code: def ISWAP(q1, q2):
      
      return Gate(name="ISWAP", params=[], qubits=[unpack_qubit(q) for q in (q1, q2)])
docs: Produces an ISWAP gate::
  
          ISWAP = [[1, 0,  0,  0],
                   [0, 0,  1j, 0],
                   [0, 1j, 0,  0],
                   [0, 0,  0,  1]]
  
      This gate swaps the state of two qubits, applying a -i phase to q1 when it
      is in the 1 state and a -i phase to q2 when it is in the 0 state.
  
      :param q1: Qubit 1.
      :param q2: Qubit 2.
      :returns: A Gate object.