We know that the CNOT gate together with arbitrary SU(2) gates can be used to perfectly implement arbitrary SU(4) gates with 3 applications of the CNOT.
I am using the Qiskit library and testing how different basis gates compare to the CNOT for different number of applications, when trying to approximate arbitrary SU(4) gates.
As expected, the CNOT gives fid=1.0 for 3 applications, around 0.99 for 2, 0.7 for 1, and 0.5 for 0 applications (the numbers change depending on the SU(4) you are trying to approximate, but the fidelity is always 1.0 when using 3 CNOTS).
My issue is that I'm getting similar results when I put in any SU(4) as my basis gate, even the identity (on two qubits). Its telling me that with 3 applications of the identity and arbitrary SU(2) gates, I can perfectly implement any SU(4) with no approximation error.
Is this an issue with Qiskit, or am I missing something? I thought that the two-qubit gate you use needs to be a universal two-qubit gate, such as the matrix given at the bottom of page two here.
I have changed the 'num_basis_gates()' method from the 'TwoQubitBasisDecomposer()' class in order to output the total fidelity for all applications of the basis gate (0,1,2 and 3), rather than just the maximum fidelity (I just removed the 'argmax[...] part from the return statement).
Thanks for any help