# Contribute the swap test

Hello! If we have two vectors with 4 dimensionality, i.e., x_1 = [1, 2, 3, 4 ] and x_2 = [5, 6, 7, 8]，How can we contribute a “SWAP TEST” quantum circuit for evaluate these vectors’ similarity?

Thanks a lot!

Hey @zj-lucky,

Sounds like you’re trying to do the swap test with two 2-qubit states? Is that right?

Each vector x_i can be represented by a two-qubit state; there are two such vectors.

Ah! Okay. Then this should be straightforward enough I think. Here’s what it looks like to swap two two-qubit states:

``````import pennylane as qml
from pennylane import numpy as np

dev = qml.device('default.qubit')

@qml.qnode(dev)
def four_qubit_SWAP(state):
qml.AmplitudeEmbedding(state, wires=range(4), normalize=True)
qml.SWAP(wires=[1, 3])
qml.SWAP(wires=[0, 2])
return qml.state()

state1 = np.array([0.5, -0.5, -0.5, 0.5])
state2 = np.array([-0.5, 0.5, 0.5, -0.5])
state = np.kron(state1, state2)

# swap state1 with state2
print(state)
print(four_qubit_SWAP(state))
print(qml.draw(four_qubit_SWAP)(state))
``````
``````[-0.25  0.25  0.25 -0.25  0.25 -0.25 -0.25  0.25  0.25 -0.25 -0.25  0.25
-0.25  0.25  0.25 -0.25]
[-0.25+0.j  0.25+0.j  0.25+0.j -0.25+0.j  0.25+0.j -0.25+0.j -0.25+0.j
0.25+0.j  0.25+0.j -0.25+0.j -0.25+0.j  0.25+0.j -0.25+0.j  0.25+0.j
0.25+0.j -0.25+0.j]
0: ─╭|Ψ⟩───────╭SWAP─┤  State
1: ─├|Ψ⟩─╭SWAP─│─────┤  State
2: ─├|Ψ⟩─│─────╰SWAP─┤  State
3: ─╰|Ψ⟩─╰SWAP───────┤  State
``````

It’s just a combination of two different SWAP gates . Then, to do a SWAP test here, you just need to make a larger controlled operator out of two swap gates.

``````@qml.qnode(dev)
def double_swap_test():
``````0: ──H─╭●──────────H─┤  State