-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Hello,
I have been trying to build a circuit with a CNOT gate acting on non-contiguous qubits (e.g., qubit 1 and 4), but I am finding strange results.
For example, if I choose an initial state [1,0,0,0]
and apply the unitary
uni = tlq.Unitary([tlq.CNOTL(device=device, dtype=dtype), tlq.CNOTR(device=device, dtype=dtype), tlq.IDENTITY(dtype=dtype, device=device), tlq.IDENTITY(dtype=dtype, device=device)], nqubits, ncontraq, device=device, dtype=dtype)
I get (for the expected value of Sz): tensor([-1., -1., 1., 1.])
However, if I apply the CNOT cores to non-adjacent qubits in the same initial state, with
uni = tlq.Unitary([tlq.CNOTL(device=device, dtype=dtype), tlq.IDENTITY(dtype=dtype, device=device), tlq.IDENTITY(dtype=dtype, device=device), tlq.CNOTR(device=device, dtype=dtype)], nqubits, ncontraq, device=device, dtype=dtype)
I find, again for the expected value of Sz: tensor([-2., 2., 2., 0.])
Is there any limitation regarding the CNOT cores that make it only valid for adjacent qubits, or am I doing something wrong? I am attaching a file with the full code for running: code.txt
Thanks for the help,
Marion Silvestrini.