# Three Qubit Decomposition

**URL:** <https://discuss.pennylane.ai/t/three-qubit-decomposition/4861>\
**Category:** PennyLane Help\
**Created:** [July 10, 2024, 4:34pm UTC](https://discuss.pennylane.ai/t/three-qubit-decomposition/4861 "2024-07-10T16:34:19Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aaqib\_Ali](https://yyz2.discourse-cdn.com/flex012/user_avatar/discuss.pennylane.ai/aaqib_ali/32/1771_2.png) [@Aaqib\_Ali](https://discuss.pennylane.ai/u/Aaqib_Ali)\
**Post date:** [July 10, 2024, 4:34pm UTC](https://discuss.pennylane.ai/t/three-qubit-decomposition/4861/1 "2024-07-10T16:34:19Z")

</div>

Hi,  
I wanted to ask if there is a tool in PennyLane that can be used for three-qubit decomposition. Specifically, I have an 8x8 matrix and I would like to decompose it into single-qubit gates using Quantum Shannon Decomposition (QSD) or any other decomposition method.

---

<div class="post-metadata">

**Author:** ![Guillermo\_Alonso](https://yyz2.discourse-cdn.com/flex012/user_avatar/discuss.pennylane.ai/guillermo_alonso/32/816_2.png) [@Guillermo\_Alonso](https://discuss.pennylane.ai/u/Guillermo_Alonso)\
**Post date:** [July 10, 2024, 11:39pm UTC](https://discuss.pennylane.ai/t/three-qubit-decomposition/4861/2 "2024-07-10T23:39:25Z")

</div>

Hi @Aaqib_Ali ! Pennylane currently has no way to decompose matrices that are larger than 4x4. You could try to create a variational circuit and approximate it as a first approach 🙂

---

<div class="post-metadata">

**Author:** ![Aaqib\_Ali](https://yyz2.discourse-cdn.com/flex012/user_avatar/discuss.pennylane.ai/aaqib_ali/32/1771_2.png) [@Aaqib\_Ali](https://discuss.pennylane.ai/u/Aaqib_Ali)\
**Post date:** [July 11, 2024, 5:10am UTC](https://discuss.pennylane.ai/t/three-qubit-decomposition/4861/3 "2024-07-11T05:10:15Z")

</div>

Thanks Guillermo for your reply  
Can you please elaborate on what the cost function (Fidelity) should be in the context of the circuit?

---

<div class="post-metadata">

**Author:** ![Guillermo\_Alonso](https://yyz2.discourse-cdn.com/flex012/user_avatar/discuss.pennylane.ai/guillermo_alonso/32/816_2.png) [@Guillermo\_Alonso](https://discuss.pennylane.ai/u/Guillermo_Alonso)\
**Post date:** [July 11, 2024, 3:27pm UTC](https://discuss.pennylane.ai/t/three-qubit-decomposition/4861/4 "2024-07-11T15:27:00Z")

</div>

Good question 🙂 Assuming you can access the circuit matrix, you could use this:

```auto
import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[1, 2], [3, 5]])

norm_diff = np.linalg.norm(A - B)

```

There are several definitions of norm that you can choose from by setting the `ord` parameter inside the `np.linalg.norm` function
