@@ -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