diff --git a/src/algorithms/optimization/implicit_differentiation.jl b/src/algorithms/optimization/implicit_differentiation.jl index 7eeeec356..def6063f9 100644 --- a/src/algorithms/optimization/implicit_differentiation.jl +++ b/src/algorithms/optimization/implicit_differentiation.jl @@ -227,11 +227,12 @@ function _rrule( alg_fixed = _set_fixed_truncation(alg) # fix spaces during differentiation alg_gauge = _scrambling_env_gauge(alg) # select appropriate gauge-fixing algorithm env_conv, info = ctmrg_iteration(InfiniteSquareNetwork(state), env, alg_fixed) - signs, corner_phases, edge_phases = compute_gauge_fix_gauge(env_conv, env, alg_gauge) + signs, = compute_gauge_fix_gauge(env_conv, env, alg_gauge) + # fix global phases relative to the fixed point inside the iteration function gauge_fixed_iteration(A, x) - return fix_phases( - ctmrg_iteration(InfiniteSquareNetwork(A), x, alg_fixed)[1], - signs, corner_phases, edge_phases, + return fix_global_phases( + fix_relative_phases(ctmrg_iteration(InfiniteSquareNetwork(A), x, alg_fixed)[1], signs), + env, ) end # prepare its pullback