-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhhl_exact.qmod
More file actions
355 lines (351 loc) · 15.3 KB
/
Copy pathhhl_exact.qmod
File metadata and controls
355 lines (351 loc) · 15.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
qfunc load_b(amplitudes: real[], output state: qbit[], bound: real) {
prepare_amplitudes(amplitudes, bound, state);
}
qfunc simple_eig_inv(phase: qnum, output indicator: qbit) {
allocate(1, indicator);
indicator *= (1 / (2 ** phase.size)) / phase;
}
qfunc hhl(rhs_vector: real[], bound: real, precision: int, hamiltonian_evolution_with_power: qfunc (int, qbit[]), output state: qbit[], output phase: qnum, output indicator: qbit) {
allocate_num(precision, False, precision, phase);
load_b([
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
(-1.0),
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
], state, bound);
within {
qpe_flexible(lambda(k) {
hamiltonian_evolution_with_power(k, state);
}, phase);
} apply {
simple_eig_inv(phase, indicator);
}
}
qfunc unitary_with_power_logic(pw: int, matrix: real[][], target: qbit[]) {
power (pw) {
unitary(matrix, target);
}
}
qfunc main(output res: qnum, output phase: qnum, output indicator: qbit) {
hhl([
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
(-1.0),
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
], 0, 4, lambda(arg0, arg1) {
unitary_with_power_logic(arg0, [
[
((-0.4315330427190747) - 0.29291283286522385j),
((-0.25777045664587334) + 0.37975963153059167j),
(0.15713099373137457 + 0.1066562231591314j),
(0.029753613973249726 - 0.04383443171188435j),
((-0.2577704566458734) + 0.379759631530592j),
(0.33419776347030605 + 0.22684430610111012j),
(0.09386008485501758 - 0.13827911741235688j),
((-0.03857537195846873) - 0.026183907976058508j),
(0.15713099373137457 + 0.10665622315913136j),
(0.09386008485501754 - 0.13827911741235682j),
((-0.05721496790938071) - 0.03883595616926965j),
((-0.010833967432153226) + 0.015961113362580548j),
(0.02975361397324973 - 0.04383443171188439j),
((-0.038575371958468746) - 0.026183907976058508j),
((-0.01083396743215323) + 0.015961113362580555j),
(0.00445263099992718 + 0.0030223242041310626j)
],
[
((-0.2577704566458733) + 0.37975963153059183j),
((-0.27440204898770043) - 0.18625660970609198j),
((-0.22801684267262365) + 0.3359251998187076j),
(0.1571309937313746 + 0.10665622315913131j),
(0.33419776347030616 + 0.22684430610111006j),
((-0.16391037179085582) + 0.2414805141182353j),
(0.29562239151183756 + 0.20066039812505163j),
(0.09386008485501758 - 0.1382791174123569j),
(0.09386008485501754 - 0.13827911741235688j),
(0.09991602582199396 + 0.06782026698986167j),
(0.0830261174228644 - 0.12231800404977633j),
((-0.05721496790938072) - 0.03883595616926964j),
((-0.038575371958468746) - 0.026183907976058508j),
(0.0189196465410965 - 0.02787331834930384j),
((-0.03412274095854158) - 0.02316158377192746j),
((-0.010833967432153221) + 0.015961113362580548j)
],
[
(0.15713099373137457 + 0.1066562231591314j),
((-0.22801684267262365) + 0.3359251998187076j),
((-0.2744020489877003) - 0.1862566097060927j),
((-0.2577704566458734) + 0.379759631530592j),
(0.09386008485501761 - 0.13827911741235688j),
(0.2956223915118375 + 0.20066039812505174j),
((-0.16391037179085588) + 0.24148051411823512j),
(0.33419776347030616 + 0.22684430610111017j),
((-0.05721496790938074) - 0.038835956169269645j),
(0.0830261174228644 - 0.12231800404977633j),
(0.09991602582199398 + 0.06782026698986178j),
(0.09386008485501761 - 0.1382791174123569j),
((-0.010833967432153232) + 0.015961113362580555j),
((-0.03412274095854157) - 0.023161583771927466j),
(0.018919646541096534 - 0.027873318349303847j),
((-0.03857537195846873) - 0.02618390797605851j)
],
[
(0.02975361397324973 - 0.04383443171188437j),
(0.1571309937313746 + 0.10665622315913136j),
((-0.25777045664587345) + 0.37975963153059195j),
((-0.43153304271907506) - 0.2929128328652232j),
((-0.03857537195846874) - 0.02618390797605851j),
(0.09386008485501758 - 0.13827911741235685j),
(0.33419776347030616 + 0.22684430610111j),
((-0.25777045664587345) + 0.3797596315305921j),
((-0.010833967432153225) + 0.015961113362580555j),
((-0.05721496790938073) - 0.03883595616926964j),
(0.09386008485501758 - 0.13827911741235688j),
(0.1571309937313747 + 0.10665622315913134j),
(0.00445263099992718 + 0.0030223242041310626j),
((-0.010833967432153225) + 0.015961113362580555j),
((-0.038575371958468746) - 0.02618390797605851j),
(0.0297536139732497 - 0.043834431711884364j)
],
[
((-0.2577704566458734) + 0.379759631530592j),
(0.33419776347030616 + 0.22684430610111j),
(0.09386008485501758 - 0.13827911741235688j),
((-0.038575371958468746) - 0.026183907976058508j),
((-0.27440204898770054) - 0.18625660970609237j),
((-0.16391037179085582) + 0.2414805141182353j),
(0.09991602582199398 + 0.06782026698986168j),
(0.01891964654109651 - 0.027873318349303858j),
((-0.22801684267262362) + 0.3359251998187076j),
(0.29562239151183745 + 0.20066039812505163j),
(0.08302611742286439 - 0.12231800404977633j),
((-0.03412274095854158) - 0.02316158377192745j),
(0.15713099373137474 + 0.10665622315913136j),
(0.09386008485501758 - 0.1382791174123569j),
((-0.05721496790938075) - 0.03883595616926967j),
((-0.010833967432153225) + 0.015961113362580555j)
],
[
(0.33419776347030616 + 0.2268443061011101j),
((-0.16391037179085574) + 0.2414805141182352j),
(0.2956223915118375 + 0.20066039812505165j),
(0.09386008485501758 - 0.13827911741235693j),
((-0.16391037179085588) + 0.2414805141182353j),
((-0.1744860231657066) - 0.11843634271623078j),
((-0.1449907252497592) + 0.21360719576893142j),
(0.09991602582199402 + 0.06782026698986175j),
(0.29562239151183745 + 0.20066039812505157j),
((-0.14499072524975926) + 0.21360719576893125j),
(0.26149965055329594 + 0.1774988143531242j),
(0.08302611742286437 - 0.12231800404977636j),
(0.09386008485501758 - 0.13827911741235688j),
(0.09991602582199394 + 0.06782026698986168j),
(0.08302611742286439 - 0.12231800404977636j),
((-0.05721496790938073) - 0.038835956169269645j)
],
[
(0.09386008485501758 - 0.13827911741235685j),
(0.29562239151183745 + 0.20066039812505163j),
((-0.16391037179085585) + 0.24148051411823512j),
(0.33419776347030616 + 0.22684430610111006j),
(0.09991602582199394 + 0.06782026698986168j),
((-0.14499072524975914) + 0.2136071957689312j),
((-0.1744860231657065) - 0.11843634271623031j),
((-0.16391037179085585) + 0.24148051411823518j),
(0.08302611742286434 - 0.12231800404977632j),
(0.2614996505532958 + 0.1774988143531241j),
((-0.1449907252497594) + 0.21360719576893145j),
(0.29562239151183745 + 0.20066039812505165j),
((-0.05721496790938073) - 0.03883595616926966j),
(0.08302611742286437 - 0.12231800404977633j),
(0.09991602582199405 + 0.06782026698986177j),
(0.09386008485501758 - 0.13827911741235688j)
],
[
((-0.03857537195846873) - 0.026183907976058508j),
(0.09386008485501754 - 0.13827911741235688j),
(0.33419776347030605 + 0.22684430610111012j),
((-0.2577704566458734) + 0.3797596315305921j),
(0.018919646541096503 - 0.02787331834930383j),
(0.09991602582199396 + 0.0678202669898617j),
((-0.1639103717908557) + 0.24148051411823518j),
((-0.2744020489877004) - 0.18625660970609262j),
((-0.034122740958541564) - 0.023161583771927438j),
(0.08302611742286434 - 0.12231800404977633j),
(0.2956223915118374 + 0.20066039812505163j),
((-0.22801684267262365) + 0.3359251998187075j),
((-0.010833967432153223) + 0.015961113362580548j),
((-0.05721496790938071) - 0.038835956169269645j),
(0.09386008485501758 - 0.13827911741235682j),
(0.15713099373137457 + 0.10665622315913129j)
],
[
(0.15713099373137457 + 0.10665622315913131j),
(0.09386008485501754 - 0.13827911741235688j),
((-0.05721496790938073) - 0.03883595616926963j),
((-0.010833967432153226) + 0.015961113362580555j),
((-0.22801684267262362) + 0.33592519981870755j),
(0.29562239151183745 + 0.20066039812505163j),
(0.08302611742286437 - 0.12231800404977633j),
((-0.034122740958541564) - 0.02316158377192746j),
((-0.27440204898770026) - 0.18625660970609226j),
((-0.1639103717908559) + 0.24148051411823507j),
(0.09991602582199398 + 0.06782026698986174j),
(0.01891964654109652 - 0.027873318349303844j),
((-0.25777045664587345) + 0.37975963153059195j),
(0.33419776347030605 + 0.22684430610111012j),
(0.09386008485501764 - 0.13827911741235688j),
((-0.038575371958468746) - 0.02618390797605852j)
],
[
(0.09386008485501751 - 0.13827911741235688j),
(0.09991602582199394 + 0.06782026698986168j),
(0.08302611742286438 - 0.12231800404977632j),
((-0.05721496790938073) - 0.038835956169269645j),
(0.29562239151183745 + 0.20066039812505157j),
((-0.14499072524975926) + 0.2136071957689312j),
(0.2614996505532959 + 0.17749881435312412j),
(0.08302611742286438 - 0.12231800404977632j),
((-0.16391037179085577) + 0.24148051411823498j),
((-0.17448602316570638) - 0.11843634271623063j),
((-0.14499072524975942) + 0.21360719576893128j),
(0.09991602582199398 + 0.06782026698986175j),
(0.33419776347030605 + 0.22684430610111006j),
((-0.16391037179085577) + 0.24148051411823507j),
(0.29562239151183733 + 0.2006603981250517j),
(0.0938600848550176 - 0.13827911741235685j)
],
[
((-0.05721496790938073) - 0.03883595616926963j),
(0.08302611742286437 - 0.12231800404977632j),
(0.099916025821994 + 0.0678202669898618j),
(0.0938600848550176 - 0.13827911741235693j),
(0.08302611742286437 - 0.12231800404977633j),
(0.2614996505532958 + 0.17749881435312415j),
((-0.14499072524975942) + 0.21360719576893145j),
(0.29562239151183745 + 0.20066039812505174j),
(0.09991602582199396 + 0.06782026698986171j),
((-0.14499072524975937) + 0.21360719576893125j),
((-0.1744860231657065) - 0.11843634271623091j),
((-0.16391037179085594) + 0.2414805141182353j),
(0.0938600848550176 - 0.13827911741235688j),
(0.29562239151183745 + 0.2006603981250517j),
((-0.16391037179085605) + 0.24148051411823526j),
(0.33419776347030616 + 0.22684430610111012j)
],
[
((-0.010833967432153223) + 0.015961113362580548j),
((-0.05721496790938069) - 0.03883595616926963j),
(0.09386008485501758 - 0.13827911741235677j),
(0.15713099373137457 + 0.10665622315913131j),
((-0.03412274095854155) - 0.023161583771927445j),
(0.08302611742286432 - 0.12231800404977632j),
(0.29562239151183733 + 0.20066039812505154j),
((-0.2280168426726238) + 0.33592519981870733j),
(0.018919646541096506 - 0.02787331834930382j),
(0.0999160258219939 + 0.06782026698986171j),
((-0.1639103717908559) + 0.24148051411823507j),
((-0.2744020489877003) - 0.18625660970609229j),
((-0.03857537195846873) - 0.02618390797605851j),
(0.09386008485501758 - 0.13827911741235682j),
(0.33419776347030605 + 0.22684430610111012j),
((-0.25777045664587317) + 0.37975963153059183j)
],
[
(0.02975361397324971 - 0.04383443171188438j),
((-0.038575371958468746) - 0.0261839079760585j),
((-0.010833967432153225) + 0.015961113362580555j),
(0.004452630999927182 + 0.0030223242041310626j),
(0.15713099373137468 + 0.10665622315913136j),
(0.09386008485501758 - 0.1382791174123569j),
((-0.05721496790938074) - 0.038835956169269645j),
((-0.010833967432153226) + 0.015961113362580555j),
((-0.2577704566458734) + 0.379759631530592j),
(0.33419776347030616 + 0.22684430610111006j),
(0.0938600848550176 - 0.13827911741235688j),
((-0.038575371958468746) - 0.026183907976058518j),
((-0.4315330427190754) - 0.2929128328652237j),
((-0.25777045664587356) + 0.37975963153059195j),
(0.15713099373137468 + 0.10665622315913144j),
(0.029753613973249746 - 0.04383443171188439j)
],
[
((-0.038575371958468746) - 0.026183907976058497j),
(0.018919646541096503 - 0.02787331834930383j),
((-0.034122740958541564) - 0.02316158377192745j),
((-0.010833967432153226) + 0.015961113362580555j),
(0.09386008485501758 - 0.1382791174123569j),
(0.09991602582199394 + 0.06782026698986171j),
(0.08302611742286437 - 0.12231800404977636j),
((-0.05721496790938071) - 0.03883595616926966j),
(0.3341977634703061 + 0.22684430610111012j),
((-0.1639103717908557) + 0.2414805141182351j),
(0.29562239151183733 + 0.2006603981250517j),
(0.0938600848550176 - 0.13827911741235685j),
((-0.2577704566458735) + 0.379759631530592j),
((-0.27440204898770043) - 0.18625660970609254j),
((-0.22801684267262395) + 0.3359251998187076j),
(0.15713099373137468 + 0.10665622315913142j)
],
[
((-0.010833967432153223) + 0.015961113362580555j),
((-0.03412274095854156) - 0.02316158377192745j),
(0.018919646541096534 - 0.027873318349303833j),
((-0.03857537195846873) - 0.02618390797605851j),
((-0.05721496790938072) - 0.03883595616926966j),
(0.08302611742286437 - 0.12231800404977632j),
(0.09991602582199398 + 0.0678202669898618j),
(0.09386008485501761 - 0.13827911741235682j),
(0.09386008485501761 - 0.13827911741235682j),
(0.29562239151183733 + 0.20066039812505163j),
((-0.16391037179085602) + 0.24148051411823507j),
(0.33419776347030605 + 0.22684430610111006j),
(0.15713099373137468 + 0.10665622315913142j),
((-0.2280168426726239) + 0.33592519981870766j),
((-0.27440204898770054) - 0.1862566097060926j),
((-0.2577704566458734) + 0.379759631530592j)
],
[
(0.00445263099992718 + 0.0030223242041310604j),
((-0.010833967432153218) + 0.015961113362580548j),
((-0.038575371958468725) - 0.026183907976058508j),
(0.029753613973249694 - 0.04383443171188435j),
((-0.01083396743215322) + 0.015961113362580548j),
((-0.0572149679093807) - 0.03883595616926963j),
(0.09386008485501754 - 0.13827911741235688j),
(0.15713099373137462 + 0.10665622315913129j),
((-0.03857537195846874) - 0.026183907976058518j),
(0.09386008485501754 - 0.13827911741235685j),
(0.33419776347030605 + 0.22684430610111006j),
((-0.2577704566458731) + 0.37975963153059183j),
(0.029753613973249736 - 0.04383443171188438j),
(0.15713099373137468 + 0.10665622315913142j),
((-0.2577704566458735) + 0.379759631530592j),
((-0.4315330427190752) - 0.2929128328652233j)
]
], arg1);
}, res, phase, indicator);
}