mimiqcircuits.decomposition.basis.canonical¶
Canonical decomposition basis targeting GateU and GateCX.
Classes
Decomposition basis targeting the canonical primitive gate set. |
- class mimiqcircuits.decomposition.basis.canonical.CanonicalBasis[source]¶
Bases:
DecompositionBasisDecomposition basis targeting the canonical primitive gate set.
- The canonical basis decomposes all operations to a minimal set of primitives:
GateU: Arbitrary single-qubit unitaryGateCX: Two-qubit CNOT gateMeasure,Reset: Measurement and reset operationsBarrier: Scheduling barriersClassical operations, annotations, noise channels
This is the default basis used by
decompose().Example
>>> from mimiqcircuits import Circuit, GateH, GateCCX >>> from mimiqcircuits.decomposition import decompose, CanonicalBasis >>> c = Circuit() >>> c.push(GateH(), 0) 1-qubit circuit with 1 instruction: └── H @ q[0] >>> c.push(GateCCX(), 0, 1, 2) 3-qubit circuit with 2 instructions: ├── H @ q[0] └── C₂X @ q[0:1], q[2] >>> decomposed = decompose(c, CanonicalBasis()) >>> # All gates are now GateU or GateCX
- isterminal(op)[source]¶
Check if an operation is terminal in the canonical basis.
- Terminal operations include:
Core gates: GateU, GateCX
Measurement/reset: Measure, Reset and variants
Control flow: Barrier, IfStatement (if inner op is terminal)
Classical operations, annotations
Noise channels, expectation values
Z-register operations: Add, Multiply, Pow
Delay (timing information)
- decompose(op, qubits, bits, zvars)[source]¶
Decompose a non-terminal operation using canonical rewrite.
- Parameters:
- Returns:
A Circuit containing the decomposed instructions.
- Raises:
DecompositionError – If the operation cannot be decomposed.
- Return type: