###### tags: `Quantum Calculation` # Additions in Quantum Fourier Transformations This page is aimed for operating addtions by quatum fourier transformations (QFT). ## Quantum Fourier Transformations QFT is [discrete Fourier transform (DFT)](https://hackmd.io/DiOVWD-2RSOzt_-8FoOcAQ?view) done by quantum circuits. \begin{eqnarray} QFT \left|x\right> = \frac{1}{\sqrt{N}}\sum_{k=0}^{N-1} e^{i\frac{2\pi}{N}xk} \left|k\right> \end{eqnarray} The inverse QFT corresponds to inverse DFT. Inplemantion of QFT by Pennylane (using default function): ```python= import sys from pennylane import numpy as np import pennylane as qml nqubit=2 wires=range(nqubit) dev = qml.device("default.qubit", wires=wires, shots=1) @qml.qnode(dev) def circuit(n): binlist=bin(n)[2:].zfill(nqubit) print(binlist) for i in range(len(binlist)): if int(binlist[i])==1: qml.PauliX(wires=i) qml.QFT(wires=wires) return qml.state() ``` Inverse QFT can be done by `qml.QFT(wires=wires).inv()`. ### Examples #### $N=2$ (nqubit=1). \begin{eqnarray} QFT \left|x\right> = \frac{1}{\sqrt{2}}\sum_{k=0}^{1} e^{i\pi xk} \left|k\right> \end{eqnarray} If $x=0$ \begin{eqnarray} \frac{1}{\sqrt{2}}\sum_{k=0}^{1} e^{i\pi xk} \left|k\right> = \frac{1}{\sqrt{2}} (\left|0\right> + \left|1\right>), \end{eqnarray} if $x=1$ \begin{eqnarray} \frac{1}{\sqrt{2}}\sum_{k=0}^{1} e^{i\pi xk} \left|k\right> = \frac{1}{\sqrt{2}} (\left|0\right> - \left|1\right>). \end{eqnarray} #### $N=4$ (nqubit=2). \begin{eqnarray} QFT \left|x\right> = \frac{1}{2}\sum_{k=0}^{3} e^{i \frac{\pi}{2} xk} \left|k\right> \end{eqnarray} If $x=0$ \begin{eqnarray} \frac{1}{2}\sum_{k=0}^{3} e^{i\pi xk} \left|k\right> = \frac{1}{2} (\left|00\right> + \left|01\right> + \left|10\right> + \left|11\right>), \end{eqnarray} if $x=1$ \begin{eqnarray} \frac{1}{2}\sum_{k=0}^{3} e^{i\pi xk} \left|k\right> = \frac{1}{2} (\left|00\right> + i\left|01\right> - \left|10\right> -i\left|11\right>), \end{eqnarray} if $x=2$ \begin{eqnarray} \frac{1}{2}\sum_{k=0}^{3} e^{i\pi xk} \left|k\right> = \frac{1}{2} (\left|00\right> - \left|01\right> + \left|10\right> -\left|11\right>), \end{eqnarray} if $x=3$ \begin{eqnarray} \frac{1}{2}\sum_{k=0}^{3} e^{i\pi xk} \left|k\right> = \frac{1}{2} (\left|00\right> - i\left|01\right> - \left|10\right> +i\left|11\right>). \end{eqnarray} ## Additions The fillwing is the procedure how to calculate $m+n$ by QFT. 1. First calculate QFT of $m$, namley $QFT\left|m\right>$. 2. Second, do some operators to phase of $QFT\left|m\right>$ and get the QFT state of $\left|m+n\right>$, namely $QFT\left|m+n\right>$. $QFT\left|m+n\right>$ can be calculated by multiplying $e^{i \frac{2\pi}{n}k L}$ to the phase of $\left|k\right>$ in $QFT \left|m\right>$. \begin{eqnarray} QFT \left|m\right> = \frac{1}{\sqrt{N}}\sum_{k=0}^{N-1} e^{i\frac{2\pi}{N}mk} \left|k\right> \end{eqnarray} \begin{eqnarray} QFT \left|m+n\right> = \frac{1}{\sqrt{N}}\sum_{k=0}^{N-1} e^{i\frac{2\pi}{N}(m+n)k} \left|k\right> \end{eqnarray} This can be done by applying phase-shift gate ~~with respect to binary of $n$~~ to all qubits. Pennylane code: ```python= for i in range(n_qubit) qml.PhaseShift(2*np.pi*n/2**i) ``` 3. Finally calculate the inverse QFT of $QFT\left|m+n\right>$ and get $\left|m+n\right>$.