---
title: TwoQubitWeylDecomposition (v1.0)
description: API reference for qiskit.synthesis.TwoQubitWeylDecomposition in qiskit v1.0
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/1.0/qiskit.synthesis.TwoQubitWeylDecomposition
---

# TwoQubitWeylDecomposition

*class* `qiskit.synthesis.TwoQubitWeylDecomposition(unitary_matrix, *, fidelity=0.999999999, _unpickling=False)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/synthesis/two_qubit/two_qubit_decompose.py#L99-L492)

Bases: [`object`](https://docs.python.org/3/library/functions.html#object)

Two-qubit Weyl decomposition.

Decompose two-qubit unitary

$$
U = ({K_1}^l \otimes {K_1}^r) e^{(i a XX + i b YY + i c ZZ)} ({K_2}^l \otimes {K_2}^r)
$$

where

$$
U \in U(4),~
{K_1}^l, {K_1}^r, {K_2}^l, {K_2}^r \in SU(2)
$$

and we stay in the “Weyl Chamber”

$$
\pi /4 \geq a \geq b \geq |c|
$$

This is an abstract factory class that instantiates itself as specialized subclasses based on the fidelity, such that the approximation error from specialization has an average gate fidelity at least as high as requested. The specialized subclasses have unique canonical representations thus avoiding problems of numerical stability.

Passing non-None fidelity to specializations is treated as an assertion, raising QiskitError if forcing the specialization is more approximate than asserted.

**References**

1. Cross, A. W., Bishop, L. S., Sheldon, S., Nation, P. D. & Gambetta, J. M., *Validating quantum computers using randomized model circuits*, [arXiv:1811.12926 \[quant-ph\]](https://arxiv.org/abs/1811.12926)
2. B. Kraus, J. I. Cirac, *Optimal Creation of Entanglement Using a Two-Qubit Gate*, [arXiv:0011050 \[quant-ph\]](https://arxiv.org/abs/quant-ph/0011050)
3. B. Drury, P. J. Love, *Constructive Quantum Shannon Decomposition from Cartan Involutions*, [arXiv:0806.4015 \[quant-ph\]](https://arxiv.org/abs/0806.4015)

**Parameters**

- **unitary\_matrix** ([*ndarray*](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray)) – The unitary to decompose.
- **fidelity** – The target fidelity of the decomposed operation.

## Attributes

### a

Type: `float`

### b

Type: `float`

### c

Type: `float`

### global\_phase

Type: `float`

### K1l

Type: `ndarray`

### K2l

Type: `ndarray`

### K1r

Type: `ndarray`

### K2r

Type: `ndarray`

### unitary\_matrix

Type: `ndarray`

### requested\_fidelity

Type: `float | None`

### calculated\_fidelity

Type: `float`

## Methods

### actual\_fidelity

`actual_fidelity(**kwargs)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/synthesis/two_qubit/two_qubit_decompose.py#L445-L449)

Calculates the actual fidelity of the decomposed circuit to the input unitary.

**Return type**

[float](https://docs.python.org/3/library/functions.html#float)

### circuit

`circuit(*, euler_basis=None, simplify=False, atol=1e-12)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/synthesis/two_qubit/two_qubit_decompose.py#L413-L432)

Returns Weyl decomposition in circuit form.

**Return type**

[QuantumCircuit](/docs/api/qiskit/1.0/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")

### from\_bytes

*classmethod* `from_bytes(bytes_in, *, requested_fidelity, **kwargs)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/synthesis/two_qubit/two_qubit_decompose.py#L477-L487)

Decode bytes into [`TwoQubitWeylDecomposition`](#qiskit.synthesis.TwoQubitWeylDecomposition "qiskit.synthesis.TwoQubitWeylDecomposition").

**Return type**

[*TwoQubitWeylDecomposition*](#qiskit.synthesis.TwoQubitWeylDecomposition "qiskit.synthesis.two_qubit.two_qubit_decompose.TwoQubitWeylDecomposition")

### specialize

`specialize()`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/1.0/qiskit/synthesis/two_qubit/two_qubit_decompose.py#L405-L411)

Make changes to the decomposition to comply with any specialization.
