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{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{Float64} = Float64[]