I have a question about how to decompose a unitary quantum gate in a currently existing simulator or emulator. I have read some papers about SK algorithm and other algorithms which aim to decompose unitary quantum gates. Is there any specific method to decompose a quantum gate in a currently existing simulator? Some papers about decomposition methods mention Trotter-Suzuki decomposition but I don't exactly know if this is true? To be more specific, what is the decomposition algorithm in Qiskit or Project Q?


1 Answer 1


In Qiskit, the iso() function allows you to add a gate, defined by means of a unitary, to your quantum circuit:


The decomposition used in the iso() function was introduced by Iten et al. in https://arxiv.org/abs/1501.06911.

Of course this is related to the circuit, not to the backend (which can be real or simulated).

  • $\begingroup$ So all the simulator or emulator decompose a unitary gate in that way? I mean, the decomposion strategy is same in existing simulators or emulators or it is depend on specific simulators or emulators? Thx $\endgroup$ Jun 9, 2020 at 12:14
  • $\begingroup$ In Qiskit, you may either build the circuit from the scratch by adding gates, or by providing the unitary matrix of the circuit and decompose it using iso(). As I wrote in my answer, decomposition is independent on whether you want to run the circuit on a real backend or in a simulated one. Once you have the decomposition, then you choose the backend. $\endgroup$ Jun 9, 2020 at 12:18
  • $\begingroup$ So after decompose it into CNOT and single qubit gate as the paper mentioned. How to decompose the single qubit gate into universal quantum gates set? like Clifford +T, Thx $\endgroup$ Jun 9, 2020 at 14:01
  • $\begingroup$ Usually, you choose the universal quantum gate set depending on the backend you are using. For IBM Q backends, the most general single qubit gate is $U_3$ (qiskit.org/textbook/ch-states/…). In Qiskit, to compile your circuit using specific gates (e.g., CNOT and $U_3$), you need to use the transpile() function: qiskit.org/documentation/stubs/qiskit.compiler.transpile.html $\endgroup$ Jun 9, 2020 at 14:16
  • $\begingroup$ So, the universal quantum gates {Clifford +T} is not commonly used in any backend or simulated one anymore, right? I read the reference you sent, one U3 gate seems can represent any single qubit gate, However, in SK algorithm, by running the C++ code, the H and T gate grow exponentially. so if the basic gate set canbe {U3 and CNOT}, why we need {Clifford+T},like in SK-algorithm or some of its optimization. $\endgroup$ Jun 9, 2020 at 15:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.