Skip to content

Commit 7b1adf0

Browse files
committed
Dont use itensors.jl for sequence finding callout in apply
1 parent 7eace5b commit 7b1adf0

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

src/apply.jl

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,8 @@ function fidelity(
406406
],
407407
envs,
408408
)
409-
term1 = ITensors.contract(term1_tns; sequence="automatic")
409+
sequence = contraction_sequence(term1_tns; alg="optimal")
410+
term1 = ITensors.contract(term1_tns; sequence)
410411

411412
term2_tns = vcat(
412413
[
@@ -417,9 +418,11 @@ function fidelity(
417418
],
418419
envs,
419420
)
420-
term2 = ITensors.contract(term2_tns; sequence="automatic")
421+
sequence = contraction_sequence(term2_tns; alg="optimal")
422+
term2 = ITensors.contract(term2_tns; sequence)
421423
term3_tns = vcat([p_prev, q_prev, prime(dag(p_cur)), prime(dag(q_cur)), gate], envs)
422-
term3 = ITensors.contract(term3_tns; sequence="automatic")
424+
sequence = contraction_sequence(term3_tns; alg="optimal")
425+
term3 = ITensors.contract(term3_tns; sequence)
423426

424427
f = term3[] / sqrt(term1[] * term2[])
425428
return f * conj(f)
@@ -447,25 +450,20 @@ function optimise_p_q(
447450
ps_ind = setdiff(inds(p_cur), collect(Iterators.flatten(inds.(vcat(envs, q_cur)))))
448451

449452
function b(p::ITensor, q::ITensor, o::ITensor, envs::Vector{ITensor}, r::ITensor;)
450-
return noprime(
451-
ITensors.contract(vcat(ITensor[p, q, o, dag(prime(r))], envs); sequence="automatic")
452-
)
453+
ts = vcat(ITensor[p, q, o, dag(prime(r))], envs)
454+
sequence = contraction_sequence(ts; alg="optimal")
455+
return noprime(ITensors.contract(ts; sequence))
453456
end
454457

455458
function M_p(envs::Vector{ITensor}, p_q_tensor::ITensor, s_ind, apply_tensor::ITensor;)
456-
return noprime(
457-
ITensors.contract(
458-
vcat(
459-
ITensor[
460-
p_q_tensor,
461-
replaceinds(prime(dag(p_q_tensor)), prime(s_ind), s_ind),
462-
apply_tensor,
463-
],
464-
envs,
465-
);
466-
sequence="automatic",
467-
),
459+
ts = vcat(
460+
ITensor[
461+
p_q_tensor, replaceinds(prime(dag(p_q_tensor)), prime(s_ind), s_ind), apply_tensor
462+
],
463+
envs,
468464
)
465+
sequence = contraction_sequence(ts; alg="optimal")
466+
return noprime(ITensors.contract(ts; sequence))
469467
end
470468
for i in 1:nfullupdatesweeps
471469
b_vec = b(p, q, o, envs, q_cur)

0 commit comments

Comments
 (0)