@@ -157,10 +157,36 @@ end
157157
158158# # Vector interface
159159
160- function VectorInterface. scalartype (:: Type{NT} ) where {NT<: InfinitePEPS }
161- return scalartype (eltype (NT))
160+ VI. scalartype (:: Type{NT} ) where {NT<: InfinitePEPS } = scalartype (eltype (NT))
161+ VI. zerovector (A:: InfinitePEPS ) = InfinitePEPS (zerovector (unitcell (A)))
162+
163+ function VI. scale (ψ:: InfinitePEPS , α:: Number )
164+ _scale = Base. Fix2 (scale, α)
165+ return InfinitePEPS (map (_scale, unitcell (ψ)))
166+ end
167+ function VI. scale! (ψ:: InfinitePEPS , α:: Number )
168+ _scale! = Base. Fix2 (scale!, α)
169+ foreach (_scale!, unitcell (ψ))
170+ return ψ
171+ end
172+ function VI. scale! (ψ₁:: InfinitePEPS , ψ₂:: InfinitePEPS , α:: Number )
173+ _scale! (x, y) = scale! (x, y, α)
174+ foreach (_scale!, unitcell (ψ₁), unitcell (ψ₂))
175+ return ψ₁
176+ end
177+ VI. scale!! (ψ:: InfinitePEPS , α:: Number ) = scale! (ψ, α)
178+ VI. scale!! (ψ₁:: InfinitePEPS , ψ₂:: InfinitePEPS , α:: Number ) = scale! (ψ₁, ψ₂, α)
179+
180+ function VI. add (ψ₁:: InfinitePEPS , ψ₂:: InfinitePEPS , α:: Number , β:: Number )
181+ _add (x, y) = add (x, y, α, β)
182+ return InfinitePEPS (map (_add, unitcell (ψ₁), unitcell (ψ₂)))
183+ end
184+ function VI. add! (ψ₁:: InfinitePEPS , ψ₂:: InfinitePEPS , α:: Number , β:: Number )
185+ _add! (x, y) = add! (x, y, α, β)
186+ foreach (_add!, unitcell (ψ₁), unitcell (ψ₂))
187+ return ψ₁
162188end
163- VectorInterface . zerovector (A :: InfinitePEPS ) = InfinitePEPS ( zerovector ( unitcell (A)) )
189+ VI . add!! (ψ₁ :: InfinitePEPS , ψ₂ :: InfinitePEPS , α :: Number , β :: Number ) = add! (ψ₁, ψ₂, α, β )
164190
165191# # Math
166192
@@ -194,7 +220,7 @@ Base.rotl90(A::InfinitePEPS) = InfinitePEPS(rotl90(rotl90.(unitcell(A))))
194220Base. rotr90 (A:: InfinitePEPS ) = InfinitePEPS (rotr90 (rotr90 .(unitcell (A))))
195221Base. rot180 (A:: InfinitePEPS ) = InfinitePEPS (rot180 (rot180 .(unitcell (A))))
196222
197- # # OptimKit optimization compatibility
223+ # # OptimKit optimization backwards compatibility (v0.4 uses VectorInterface)
198224
199225function LinearAlgebra. rmul! (A:: InfinitePEPS , α:: Number ) # Used in _scale during OptimKit.optimize
200226 rmul! .(unitcell (A), α)
0 commit comments