MPS & MPO Algebra
The algebra operations for MPS and MPO.
VectorInterface.inner — Method inner(A::DenseMPS, B::DenseMPS)Return the inner product ⟨A, B⟩ between MPS/MPO A and B.
LinearAlgebra.mul! — Methodmul!(C::DenseMPS, A::SparseMPO, B::DenseMPS, α::Number, β::Number; kwargs...)Compute C = α A*B + β C variationally via 2-site update, where A is a sparse MPO, B and C are dense MPS/MPO. Note 'B' cannot reference to the same MPS/MPO with C.
mul!(C::DenseMPS, A::SparseMPO, B::DenseMPS; kwargs...)Compute C = A*B by letting α = 1 and β = 0.
Kwargs
trunc::TruncationScheme = truncbelow(MPSDefault.tol) & truncdim(MPSDefault.D)
GCstep::Bool = false
GCsweep::Bool = false
maxiter::Int64 = 8
disk::Bool = false
tol::Float64 = 1e-8
verbose::Int64 = 0
CBEAlg::CBEAlgorithm = NoCBE()
lsnoise::AbstractVector{Tuple{Float64, Float64}} = []Note CBE can only be used when α ≠ 0.
LinearAlgebra.rmul! — Functionrmul!(A::DenseMPS, b::Number)In-place multiplication A -> b*A where b is a scalar.
LinearAlgebra.axpby! — Function axpby!(α::Number, x::DenseMPS, β::Number, y::DenseMPS; kwargs...)Compute y = α*x + β*y variationally via 2-site update, where x and y are dense MPS/MPO. Note 'x' cannot reference to the same MPS/MPO with y.
Kwargs
trunc::TruncationScheme = truncbelow(MPSDefault.tol) & truncdim(MPSDefault.D)
GCstep::Bool = false
GCsweep::Bool = false
maxiter::Int64 = 8
disk::Bool = false
tol::Float64 = 1e-8
verbose::Int64 = 0
lsnoise::AbstractVector{Tuple{Float64, Float64}} = []