@@ -154,7 +154,7 @@ function random_destabilizer(rng::AbstractRNG, n::Int; phases::Bool=true)
154
154
# apply qubit permutation S to F2
155
155
perm_inds = vcat (perm, perm .+ n)
156
156
U = F2[perm_inds,:]
157
-
157
+ println (U)
158
158
# apply layer of hadamards
159
159
lhs_inds = vcat (had_idxs, had_idxs .+ n)
160
160
rhs_inds = vcat (had_idxs .+ n, had_idxs)
@@ -189,10 +189,6 @@ struct RandDestabMemory{N,T<:Integer}
189
189
T = typeof (n)
190
190
F1 = zeros (Int8, 2 n, 2 n)
191
191
F2 = zeros (Int8, 2 n, 2 n)
192
- for i in n+ 1 : 2 n
193
- @inbounds F1[i, i] = 1
194
- @inbounds F2[i, i] = 1
195
- end
196
192
hadamard = falses (n)
197
193
perm = zeros (T, n)
198
194
had_idxs = zeros (T, n)
208
204
function _reset! (memory:: RandDestabMemory , n:: Integer )
209
205
fill! (memory. F1, 0 )
210
206
fill! (memory. F2, 0 )
211
- for i in n+ 1 : 2 n
212
- @inbounds memory. F1[i, i] = 1
213
- @inbounds memory. F2[i, i] = 1
214
- end
215
207
fill! (memory. hadamard, false )
216
208
fill! (memory. perm, 0 )
217
209
fill! (memory. had_idxs, 0 )
@@ -334,6 +326,10 @@ function random_destabilizer(rng::AbstractRNG, n::Int, memory::RandDestabMemory;
334
326
# now construct the tableau representation for F(I, Gamma, Delta)
335
327
mul! (prod, gamma, delta)
336
328
mul! (prod_p, gamma_p, delta_p)
329
+ for i in n+ 1 : 2 n
330
+ @inbounds F1[i, i] = 1
331
+ @inbounds F2[i, i] = 1
332
+ end
337
333
_inv! (inv_delta, delta' )
338
334
_inv! (inv_delta_p, delta_p' )
339
335
@@ -360,14 +356,7 @@ function random_destabilizer(rng::AbstractRNG, n::Int, memory::RandDestabMemory;
360
356
for i in 1 : n
361
357
if had_idxs[i] != 0
362
358
for j in 1 : 2 n
363
- U[had_idxs[i], j] = U[had_idxs[i]+ n, j]
364
- end
365
- end
366
- end
367
- for i in 1 : n
368
- if had_idxs[i] != 0
369
- for j in 1 : 2 n
370
- U[had_idxs[i]+ n, j] = U[had_idxs[i], j]
359
+ @inbounds (U[had_idxs[i], j], U[had_idxs[i]+ n, j]) = (U[had_idxs[i]+ n, j], U[had_idxs[i], j])
371
360
end
372
361
end
373
362
end
@@ -376,7 +365,10 @@ function random_destabilizer(rng::AbstractRNG, n::Int, memory::RandDestabMemory;
376
365
xzs = memory. xzs
377
366
fill! (F2, 0 )
378
367
_mul! (F2, F1, U, 2 n)
379
- _inplace_equals! (xzs, _inplace_mod! (F2, 2 ), 1 )
368
+
369
+ _inplace_mod! (F2, 2 )
370
+ _inplace_equals! (xzs, F2, 1 )
371
+
380
372
381
373
# random Pauli matrix just amounts to phases on the stabilizer tableau
382
374
phasesarray = memory. phasesarray
0 commit comments