About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
TwoQubitBasisDecomposer
class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)
Bases: object
A class for decomposing 2-qubit unitaries into minimal number of uses of a 2-qubit basis gate.
Parameters
- gate (Gate) – Two-qubit gate to be used in the KAK decomposition.
- basis_fidelity (float) – Fidelity to be assumed for applications of KAK Gate. Default 1.0.
- euler_basis (str) – Basis string to be provided to OneQubitEulerDecomposer for 1Q synthesis. Valid options are [‘ZYZ’, ‘ZXZ’, ‘XYX’, ‘U’, ‘U3’, ‘U1X’, ‘PSX’, ‘ZSX’, ‘RR’].
- pulse_optimize (None or bool) – If True, try to do decomposition which minimizes local unitaries in between entangling gates. This will raise an exception if an optimal decomposition is not implemented. Currently, only [{CX, SX, RZ}] is known. If False, don’t attempt optimization. If None, attempt optimization but don’t raise if unknown.
Methods
decomp0
static decomp0(target)
Decompose target ~Ud(x, y, z) with 0 uses of the basis gate. Result Ur has trace: , which is optimal for all targets and bases
decomp1
decomp1(target)
Decompose target ~Ud(x, y, z) with 1 uses of the basis gate ~Ud(a, b, c). Result Ur has trace: .. math:
|Tr(Ur.Utarget^dag)| = 4|cos(x-a)cos(y-b)cos(z-c) + j sin(x-a)sin(y-b)sin(z-c)|
which is optimal for all targets and bases with z==0 or c==0
decomp2_supercontrolled
decomp2_supercontrolled(target)
Decompose target ~Ud(x, y, z) with 2 uses of the basis gate.
For supercontrolled basis ~Ud(pi/4, b, 0), all b, result Ur has trace .. math:
|Tr(Ur.Utarget^dag)| = 4cos(z)
which is the optimal approximation for basis of CNOT-class ~Ud(pi/4, 0, 0)
or DCNOT-class ~Ud(pi/4, pi/4, 0)
and any target. May be sub-optimal for b!=0 (e.g. there exists exact decomposition for any target using B B~Ud(pi/4, pi/8, 0)
, but not this decomposition.) This is an exact decomposition for supercontrolled basis and target ~Ud(x, y, 0)
. No guarantees for non-supercontrolled basis.
decomp3_supercontrolled
decomp3_supercontrolled(target)
Decompose target with 3 uses of the basis. This is an exact decomposition for supercontrolled basis ~Ud(pi/4, b, 0), all b, and any target. No guarantees for non-supercontrolled basis.
num_basis_gates
num_basis_gates(unitary)
Computes the number of basis gates needed in a decomposition of input unitary
traces
traces(target)
Give the expected traces for different number of basis gates.
Was this page helpful?
Report a bug or request content on GitHub.