|
2 | 2 | "cells": [ |
3 | 3 | { |
4 | 4 | "cell_type": "markdown", |
5 | | - "id": "3d480a1d", |
| 5 | + "id": "71e0dbd8", |
6 | 6 | "metadata": { |
7 | 7 | "cq.autogen": "title_cell" |
8 | 8 | }, |
9 | 9 | "source": [ |
10 | | - "# GF($2^m$) Polynomials Add Constant" |
| 10 | + "# Polynomials over GF($2^m$) - Add Constant" |
11 | 11 | ] |
12 | 12 | }, |
13 | 13 | { |
14 | 14 | "cell_type": "code", |
15 | 15 | "execution_count": null, |
16 | | - "id": "218a8310", |
| 16 | + "id": "c02448cd", |
17 | 17 | "metadata": { |
18 | 18 | "cq.autogen": "top_imports" |
19 | 19 | }, |
|
30 | 30 | }, |
31 | 31 | { |
32 | 32 | "cell_type": "markdown", |
33 | | - "id": "203cfaf0", |
| 33 | + "id": "a5f23a08", |
34 | 34 | "metadata": { |
35 | | - "cq.autogen": "GF2AddK.bloq_doc.md" |
| 35 | + "cq.autogen": "GF2PolyAddK.bloq_doc.md" |
36 | 36 | }, |
37 | 37 | "source": [ |
38 | | - "## `GF2AddK`\n", |
39 | | - "In place addition of a constant $k$ for elements in GF($2^m$).\n", |
| 38 | + "## `GF2PolyAddK`\n", |
| 39 | + "In place addition of a constant polynomial defined over GF($2^m$).\n", |
40 | 40 | "\n", |
41 | | - "The bloq implements in place addition of a classical constant $k$ and a quantum register\n", |
42 | | - "$|x\\rangle$ storing elements from GF($2^m$). Addition in GF($2^m$) simply reduces to a component\n", |
43 | | - "wise XOR, which can be implemented via X gates.\n", |
| 41 | + "The bloq implements in place addition of a classical constant polynomial $g(x)$ and\n", |
| 42 | + "a quantum register $|f(x)\\rangle$ storing coefficients of a degree-n polynomial defined\n", |
| 43 | + "over GF($2^m$). Addition in GF($2^m$) simply reduces to a component wise XOR, which can\n", |
| 44 | + "be implemented via X gates.\n", |
44 | 45 | "\n", |
45 | 46 | "$$\n", |
46 | | - "|x\\rangle \\rightarrow |x + k\\rangle\n", |
| 47 | + " |f(x)\\rangle \\rightarrow |f(x) + g(x)\\rangle\n", |
47 | 48 | "$$\n", |
48 | 49 | "\n", |
49 | 50 | "#### Parameters\n", |
50 | | - " - `bitsize`: The degree $m$ of the galois field GF($2^m$). Also corresponds to the number of qubits in the input register x.\n", |
51 | | - " - `k`: Integer representation of constant over GF($2^m$) that should be added to the input register x. \n", |
| 51 | + " - `qgf_poly`: An instance of `QGFPoly` type that defines the data type for quantum register $|f(x)\\rangle$ storing coefficients of a degree-n polynomial defined over GF($2^m$).\n", |
| 52 | + " - `g_x`: An instance of `galois.Poly` that specifies that constant polynomial g(x) defined over GF($2^m$) that should be added to the input register f(x). \n", |
52 | 53 | "\n", |
53 | 54 | "#### Registers\n", |
54 | | - " - `x`: Input THRU register of size $m$ that stores elements from $GF(2^m)$.\n" |
| 55 | + " - `f_x`: Input THRU register that stores coefficients of polynomial defined over $GF(2^m)$.\n" |
55 | 56 | ] |
56 | 57 | }, |
57 | 58 | { |
58 | 59 | "cell_type": "code", |
59 | 60 | "execution_count": null, |
60 | | - "id": "d52372c6", |
| 61 | + "id": "d40e23be", |
61 | 62 | "metadata": { |
62 | | - "cq.autogen": "GF2AddK.bloq_doc.py" |
| 63 | + "cq.autogen": "GF2PolyAddK.bloq_doc.py" |
63 | 64 | }, |
64 | 65 | "outputs": [], |
65 | 66 | "source": [ |
66 | | - "from qualtran.bloqs.gf_arithmetic import GF2AddK" |
| 67 | + "from qualtran.bloqs.gf_poly_arithmetic import GF2PolyAddK" |
67 | 68 | ] |
68 | 69 | }, |
69 | 70 | { |
70 | 71 | "cell_type": "markdown", |
71 | | - "id": "1b73fd35", |
| 72 | + "id": "101615d7", |
72 | 73 | "metadata": { |
73 | | - "cq.autogen": "GF2AddK.example_instances.md" |
| 74 | + "cq.autogen": "GF2PolyAddK.example_instances.md" |
74 | 75 | }, |
75 | 76 | "source": [ |
76 | 77 | "### Example Instances" |
|
79 | 80 | { |
80 | 81 | "cell_type": "code", |
81 | 82 | "execution_count": null, |
82 | | - "id": "ab076857", |
| 83 | + "id": "2cc9165f", |
83 | 84 | "metadata": { |
84 | | - "cq.autogen": "GF2AddK.gf2_poly_4_8_add_k" |
| 85 | + "cq.autogen": "GF2PolyAddK.gf2_poly_4_8_add_k" |
85 | 86 | }, |
86 | 87 | "outputs": [], |
87 | 88 | "source": [ |
88 | 89 | "from galois import Poly\n", |
| 90 | + "\n", |
89 | 91 | "from qualtran import QGF, QGFPoly\n", |
90 | 92 | "\n", |
91 | 93 | "qgf_poly = QGFPoly(4, QGF(2, 3))\n", |
|
96 | 98 | { |
97 | 99 | "cell_type": "code", |
98 | 100 | "execution_count": null, |
99 | | - "id": "991e90de", |
| 101 | + "id": "9081edee", |
100 | 102 | "metadata": { |
101 | | - "cq.autogen": "GF2AddK.gf2_poly_add_k_symbolic" |
| 103 | + "cq.autogen": "GF2PolyAddK.gf2_poly_add_k_symbolic" |
102 | 104 | }, |
103 | 105 | "outputs": [], |
104 | 106 | "source": [ |
105 | 107 | "import sympy\n", |
106 | 108 | "from galois import Poly\n", |
| 109 | + "\n", |
107 | 110 | "from qualtran import QGF, QGFPoly\n", |
108 | 111 | "\n", |
109 | 112 | "n, m = sympy.symbols('n, m', positive=True, integers=True)\n", |
110 | 113 | "qgf_poly = QGFPoly(n, QGF(2, m))\n", |
111 | | - "gf2_poly_symbolic_add_k = GF2PolyAddK(qgf_poly, Poly([0, 0, 0, 0]))" |
| 114 | + "gf2_poly_add_k_symbolic = GF2PolyAddK(qgf_poly, Poly([0, 0, 0, 0]))" |
112 | 115 | ] |
113 | 116 | }, |
114 | 117 | { |
115 | 118 | "cell_type": "markdown", |
116 | | - "id": "6a3ecb1e", |
| 119 | + "id": "11a4d71f", |
117 | 120 | "metadata": { |
118 | | - "cq.autogen": "GF2AddK.graphical_signature.md" |
| 121 | + "cq.autogen": "GF2PolyAddK.graphical_signature.md" |
119 | 122 | }, |
120 | 123 | "source": [ |
121 | 124 | "#### Graphical Signature" |
|
124 | 127 | { |
125 | 128 | "cell_type": "code", |
126 | 129 | "execution_count": null, |
127 | | - "id": "32a100a5", |
| 130 | + "id": "66b4a211", |
128 | 131 | "metadata": { |
129 | | - "cq.autogen": "GF2AddK.graphical_signature.py" |
| 132 | + "cq.autogen": "GF2PolyAddK.graphical_signature.py" |
130 | 133 | }, |
131 | 134 | "outputs": [], |
132 | 135 | "source": [ |
|
137 | 140 | }, |
138 | 141 | { |
139 | 142 | "cell_type": "markdown", |
140 | | - "id": "3cd8496b", |
| 143 | + "id": "5940114d", |
141 | 144 | "metadata": { |
142 | | - "cq.autogen": "GF2AddK.call_graph.md" |
| 145 | + "cq.autogen": "GF2PolyAddK.call_graph.md" |
143 | 146 | }, |
144 | 147 | "source": [ |
145 | 148 | "### Call Graph" |
|
148 | 151 | { |
149 | 152 | "cell_type": "code", |
150 | 153 | "execution_count": null, |
151 | | - "id": "605f81e0", |
| 154 | + "id": "dffd364c", |
152 | 155 | "metadata": { |
153 | | - "cq.autogen": "GF2AddK.call_graph.py" |
| 156 | + "cq.autogen": "GF2PolyAddK.call_graph.py" |
154 | 157 | }, |
155 | 158 | "outputs": [], |
156 | 159 | "source": [ |
|
0 commit comments