@@ -22,8 +22,6 @@ using ITensors:
2222 replaceinds,
2323 unioninds,
2424 uniqueinds
25- using ITensors. ContractionSequenceOptimization: optimal_contraction_sequence
26- using ITensorMPS: siteinds
2725using KrylovKit: linsolve
2826using LinearAlgebra: eigen, norm, svd
2927using NamedGraphs: NamedEdge, has_edge
@@ -407,7 +405,8 @@ function fidelity(
407405 ],
408406 envs,
409407 )
410- term1 = ITensors. contract (term1_tns; sequence= optimal_contraction_sequence (term1_tns))
408+ sequence = contraction_sequence (term1_tns; alg= " optimal" )
409+ term1 = ITensors. contract (term1_tns; sequence)
411410
412411 term2_tns = vcat (
413412 [
@@ -418,9 +417,11 @@ function fidelity(
418417 ],
419418 envs,
420419 )
421- term2 = ITensors. contract (term2_tns; sequence= optimal_contraction_sequence (term2_tns))
420+ sequence = contraction_sequence (term2_tns; alg= " optimal" )
421+ term2 = ITensors. contract (term2_tns; sequence)
422422 term3_tns = vcat ([p_prev, q_prev, prime (dag (p_cur)), prime (dag (q_cur)), gate], envs)
423- term3 = ITensors. contract (term3_tns; sequence= optimal_contraction_sequence (term3_tns))
423+ sequence = contraction_sequence (term3_tns; alg= " optimal" )
424+ term3 = ITensors. contract (term3_tns; sequence)
424425
425426 f = term3[] / sqrt (term1[] * term2[])
426427 return f * conj (f)
@@ -447,61 +448,32 @@ function optimise_p_q(
447448 qs_ind = setdiff (inds (q_cur), collect (Iterators. flatten (inds .(vcat (envs, p_cur)))))
448449 ps_ind = setdiff (inds (p_cur), collect (Iterators. flatten (inds .(vcat (envs, q_cur)))))
449450
450- opt_b_seq = optimal_contraction_sequence (vcat (ITensor[p, q, o, dag (prime (q_cur))], envs))
451- opt_b_tilde_seq = optimal_contraction_sequence (
452- vcat (ITensor[p, q, o, dag (prime (p_cur))], envs)
453- )
454- opt_M_seq = optimal_contraction_sequence (
455- vcat (ITensor[q_cur, replaceinds (prime (dag (q_cur)), prime (qs_ind), qs_ind), p_cur], envs)
456- )
457- opt_M_tilde_seq = optimal_contraction_sequence (
458- vcat (ITensor[p_cur, replaceinds (prime (dag (p_cur)), prime (ps_ind), ps_ind), q_cur], envs)
459- )
460-
461- function b (
462- p:: ITensor ,
463- q:: ITensor ,
464- o:: ITensor ,
465- envs:: Vector{ITensor} ,
466- r:: ITensor ;
467- opt_sequence= nothing ,
468- )
469- return noprime (
470- ITensors. contract (vcat (ITensor[p, q, o, dag (prime (r))], envs); sequence= opt_sequence)
471- )
451+ function b (p:: ITensor , q:: ITensor , o:: ITensor , envs:: Vector{ITensor} , r:: ITensor )
452+ ts = vcat (ITensor[p, q, o, dag (prime (r))], envs)
453+ sequence = contraction_sequence (ts; alg= " optimal" )
454+ return noprime (ITensors. contract (ts; sequence))
472455 end
473456
474- function M_p (
475- envs:: Vector{ITensor} ,
476- p_q_tensor:: ITensor ,
477- s_ind,
478- apply_tensor:: ITensor ;
479- opt_sequence= nothing ,
480- )
481- return noprime (
482- ITensors. contract (
483- vcat (
484- ITensor[
485- p_q_tensor,
486- replaceinds (prime (dag (p_q_tensor)), prime (s_ind), s_ind),
487- apply_tensor,
488- ],
489- envs,
490- );
491- sequence= opt_sequence,
492- ),
457+ function M_p (envs:: Vector{ITensor} , p_q_tensor:: ITensor , s_ind, apply_tensor:: ITensor )
458+ ts = vcat (
459+ ITensor[
460+ p_q_tensor, replaceinds (prime (dag (p_q_tensor)), prime (s_ind), s_ind), apply_tensor
461+ ],
462+ envs,
493463 )
464+ sequence = contraction_sequence (ts; alg= " optimal" )
465+ return noprime (ITensors. contract (ts; sequence))
494466 end
495467 for i in 1 : nfullupdatesweeps
496- b_vec = b (p, q, o, envs, q_cur; opt_sequence = opt_b_seq )
497- M_p_partial = partial (M_p, envs, q_cur, qs_ind; opt_sequence = opt_M_seq )
468+ b_vec = b (p, q, o, envs, q_cur)
469+ M_p_partial = partial (M_p, envs, q_cur, qs_ind)
498470
499471 p_cur, info = linsolve (
500472 M_p_partial, b_vec, p_cur; isposdef= envisposdef, ishermitian= false
501473 )
502474
503- b_tilde_vec = b (p, q, o, envs, p_cur; opt_sequence = opt_b_tilde_seq )
504- M_p_tilde_partial = partial (M_p, envs, p_cur, ps_ind; opt_sequence = opt_M_tilde_seq )
475+ b_tilde_vec = b (p, q, o, envs, p_cur)
476+ M_p_tilde_partial = partial (M_p, envs, p_cur, ps_ind)
505477
506478 q_cur, info = linsolve (
507479 M_p_tilde_partial, b_tilde_vec, q_cur; isposdef= envisposdef, ishermitian= false
0 commit comments