Skip to content

Commit 06e2a88

Browse files
committed
Create QFT.ipynb
1 parent 252639c commit 06e2a88

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

QFT.ipynb

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": null,
6+
"id": "79c79c89-dc45-4afa-b538-ff145fd4bb8f",
7+
"metadata": {},
8+
"outputs": [],
9+
"source": [
10+
"import cirq\n",
11+
"from cirq.contrib.svg import SVGCircuit\n",
12+
"import matplotlib.pyplot as plt\n",
13+
"\n",
14+
"qc = cirq.Circuit()\n",
15+
"q0,q1,q2,q3 = cirq.LineQubit.range(4)\n",
16+
"\n",
17+
"qc.append(cirq.X(q0))\n",
18+
"qc.append(cirq.X(q2))\n",
19+
"\n",
20+
"# -------------------- Direct QFT ----------------------\n",
21+
"#qc.append(cirq.qft(q0,q1,q2,q3,without_reverse=True))\n",
22+
"\n",
23+
"qc.append(cirq.H(q0))\n",
24+
"qc.append(cirq.CZ(q0,q1)**(1/2))\n",
25+
"qc.append(cirq.CZ(q0,q2)**(1/4))\n",
26+
"qc.append(cirq.CZ(q0,q3)**(1/8))\n",
27+
"\n",
28+
"qc.append(cirq.H(q1))\n",
29+
"qc.append(cirq.CZ(q1,q2)**(1/2))\n",
30+
"qc.append(cirq.CZ(q1,q3)**(1/4))\n",
31+
"\n",
32+
"qc.append(cirq.H(q2))\n",
33+
"qc.append(cirq.CZ(q2,q3)**(1/2))\n",
34+
"\n",
35+
"qc.append(cirq.H(q3))\n",
36+
"# -----------------------------------------------------\n",
37+
"\n",
38+
"# --------------------- Inverse QFT -------------------\n",
39+
"#qc.append(cirq.qft(q0,q1,q2,q3,inverse=True,without_reverse=True))\n",
40+
"\n",
41+
"qc.append(cirq.H(q3))\n",
42+
"\n",
43+
"qc.append(cirq.CZ(q2,q3)**(-1/2))\n",
44+
"qc.append(cirq.H(q2))\n",
45+
"\n",
46+
"qc.append(cirq.CZ(q1,q3)**(-1/4))\n",
47+
"qc.append(cirq.CZ(q1,q2)**(-1/2))\n",
48+
"qc.append(cirq.H(q1))\n",
49+
"\n",
50+
"qc.append(cirq.CZ(q0,q3)**(-1/8))\n",
51+
"qc.append(cirq.CZ(q0,q2)**(-1/4))\n",
52+
"qc.append(cirq.CZ(q0,q1)**(-1/2))\n",
53+
"qc.append(cirq.H(q0))\n",
54+
"# -----------------------------------------------------\n",
55+
"\n",
56+
"qc.append(cirq.measure(q3,q2,q1,q0))\n",
57+
"\n",
58+
"print()\n",
59+
"print(qc)\n",
60+
"print()\n",
61+
"\n",
62+
"s = cirq.Simulator()\n",
63+
"samples = s.run(qc, repetitions=1000)\n",
64+
"\n",
65+
"cirq.plot_state_histogram(samples, plt.subplot())\n",
66+
"plt.show()\n",
67+
"\n",
68+
"SVGCircuit(qc)\n"
69+
]
70+
},
71+
{
72+
"cell_type": "code",
73+
"execution_count": null,
74+
"id": "3b354ec9-a598-44ec-8c57-356dbc1aa8a6",
75+
"metadata": {},
76+
"outputs": [],
77+
"source": []
78+
}
79+
],
80+
"metadata": {
81+
"kernelspec": {
82+
"display_name": "Python 3 (ipykernel)",
83+
"language": "python",
84+
"name": "python3"
85+
},
86+
"language_info": {
87+
"codemirror_mode": {
88+
"name": "ipython",
89+
"version": 3
90+
},
91+
"file_extension": ".py",
92+
"mimetype": "text/x-python",
93+
"name": "python",
94+
"nbconvert_exporter": "python",
95+
"pygments_lexer": "ipython3",
96+
"version": "3.10.12"
97+
}
98+
},
99+
"nbformat": 4,
100+
"nbformat_minor": 5
101+
}

0 commit comments

Comments
 (0)