@@ -48,10 +48,10 @@ function expectation_value(ψ::AbstractMPS, (inds, O)::Pair)
4848 sites, local_mpo = instantiate_operator (ψ, inds => O)
4949
5050 # left side
51- Vl = insertrightunit (l_LL (ψ, sites[1 ]), 1 ; dual= true )
51+ Vl = insertrightunit (l_LL (ψ, sites[1 ]), 1 ; dual = true )
5252
5353 # middle
54- M = foldl (zip (sites, local_mpo); init= Vl) do v, (site, o)
54+ M = foldl (zip (sites, local_mpo); init = Vl) do v, (site, o)
5555 if o isa Number
5656 return scale! (v * TransferMatrix (ψ. AL[site], ψ. AL[site]), o)
5757 else
@@ -60,8 +60,7 @@ function expectation_value(ψ::AbstractMPS, (inds, O)::Pair)
6060 end
6161
6262 # right side
63- E = @plansor removeunit (M, 2 )[1 ; 2 ] * ψ. C[sites[end ]][2 ; 3 ] *
64- conj (ψ. C[sites[end ]][1 ; 3 ])
63+ E = @plansor removeunit (M, 2 )[1 ; 2 ] * ψ. C[sites[end ]][2 ; 3 ] * conj (ψ. C[sites[end ]][1 ; 3 ])
6564 return E / dot (ψ, ψ)
6665end
6766
@@ -84,33 +83,38 @@ function contract_mpo_expval(
8483 return @plansor GL[1 2 ; 3 ] * AC[3 7 ; 5 ] * GR[5 8 ; 6 ] * O[2 4 ; 7 8 ] * conj (ACbar[1 4 ; 6 ])
8584end
8685# generic fallback
87- function contract_mpo_expval (AC, GL, O, GR, ACbar= AC)
86+ function contract_mpo_expval (AC, GL, O, GR, ACbar = AC)
8887 return dot (ACbar, MPO_AC_Hamiltonian (GL, O, GR) * AC)
8988end
9089
91- function contract_mpo_expval1 (AC:: MPSTensor , O:: AbstractTensorMap , ACbar:: MPSTensor = AC)
90+ function contract_mpo_expval1 (AC:: MPSTensor , O:: AbstractTensorMap , ACbar:: MPSTensor = AC)
9291 numin (O) == numout (O) == 1 || throw (ArgumentError (" O is not a single-site operator" ))
9392 return @plansor conj (ACbar[2 3 ; 4 ]) * O[3 ; 1 ] * AC[2 1 ; 4 ]
9493end
95- function contract_mpo_expval1 (AC:: GenericMPSTensor{S,3} , O:: AbstractTensorMap{<:Any,S} ,
96- ACbar:: GenericMPSTensor{S,3} = AC) where {S}
94+ function contract_mpo_expval1 (
95+ AC:: GenericMPSTensor{S, 3} , O:: AbstractTensorMap{<:Any, S} ,
96+ ACbar:: GenericMPSTensor{S, 3} = AC
97+ ) where {S}
9798 numin (O) == numout (O) == 1 || throw (ArgumentError (" O is not a single-site operator" ))
9899 return @plansor conj (ACbar[2 3 4 ; 5 ]) * O[3 ; 1 ] * AC[2 1 4 ; 5 ]
99100end
100101
101- function contract_mpo_expval2 (A1:: MPSTensor , A2:: MPSTensor , O:: AbstractTensorMap ,
102- A1bar:: MPSTensor = A1, A2bar:: MPSTensor = A2)
102+ function contract_mpo_expval2 (
103+ A1:: MPSTensor , A2:: MPSTensor , O:: AbstractTensorMap ,
104+ A1bar:: MPSTensor = A1, A2bar:: MPSTensor = A2
105+ )
103106 numin (O) == numout (O) == 2 || throw (ArgumentError (" O is not a two-site operator" ))
104107 return @plansor conj (A1bar[4 5 ; 6 ]) * conj (A2bar[6 7 ; 8 ]) * O[5 7 ; 2 3 ] * A1[4 2 ; 1 ] *
105- A2[1 3 ; 8 ]
108+ A2[1 3 ; 8 ]
106109end
107- function contract_mpo_expval2 (A1:: GenericMPSTensor{S,3} , A2:: GenericMPSTensor{S,3} ,
108- O:: AbstractTensorMap{<:Any,S} ,
109- A1bar:: GenericMPSTensor{S,3} = A1,
110- A2bar:: GenericMPSTensor{S,3} = A2) where {S}
110+ function contract_mpo_expval2 (
111+ A1:: GenericMPSTensor{S, 3} , A2:: GenericMPSTensor{S, 3} ,
112+ O:: AbstractTensorMap{<:Any, S} ,
113+ A1bar:: GenericMPSTensor{S, 3} = A1, A2bar:: GenericMPSTensor{S, 3} = A2
114+ ) where {S}
111115 numin (O) == numout (O) == 2 || throw (ArgumentError (" O is not a two-site operator" ))
112116 return @plansor conj (A1bar[8 3 4 ; 11 ]) * conj (A2bar[11 12 13 ; 14 ]) * τ[9 6 ; 1 2 ] *
113- τ[3 4 ; 9 10 ] * A1[8 1 2 ; 5 ] * A2[5 7 13 ; 14 ] * O[10 12 ; 6 7 ]
117+ τ[3 4 ; 9 10 ] * A1[8 1 2 ; 5 ] * A2[5 7 13 ; 14 ] * O[10 12 ; 6 7 ]
114118end
115119
116120function expectation_value (
0 commit comments