From f7881bfceb22f3a62c2f089ef27081e6bf88a889 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Mon, 2 Dec 2024 11:24:44 +0000 Subject: [PATCH] build based on bf3cb16 --- previews/PR262/404.html | 4 +-- previews/PR262/api/ansatz.html | 10 +++---- previews/PR262/api/quantum.html | 10 +++---- previews/PR262/api/tensor.html | 10 +++---- previews/PR262/api/tensornetwork.html | 22 +++++++-------- ....C5te6Lyn.js => api_ansatz.md.Bc21y-jm.js} | 2 +- ...lean.js => api_ansatz.md.Bc21y-jm.lean.js} | 2 +- ...COFd6Zb6.js => api_quantum.md.CP7925tk.js} | 2 +- ...ean.js => api_quantum.md.CP7925tk.lean.js} | 2 +- .../PR262/assets/api_tensor.md.BhYHa3xI.js | 1 + .../assets/api_tensor.md.BhYHa3xI.lean.js | 1 + .../PR262/assets/api_tensor.md.DmbTPrJK.js | 1 - .../assets/api_tensor.md.DmbTPrJK.lean.js | 1 - ...Ml.js => api_tensornetwork.md.gc29p5Pz.js} | 14 +++++----- ... => api_tensornetwork.md.gc29p5Pz.lean.js} | 14 +++++----- .../{app.CFabq2M8.js => app.D9eGT1wM.js} | 2 +- .../chunks/@localSearchIndexroot.BrNAULNl.js | 1 + .../chunks/@localSearchIndexroot.CPuLW2tQ.js | 1 - ...zCF3DP.js => VPLocalSearchBox.APAjKZUj.js} | 2 +- .../{theme.xArc5YRl.js => theme.BaN35FQU.js} | 4 +-- previews/PR262/assets/jlsiued.BiOIqqM2.png | Bin 0 -> 42461 bytes previews/PR262/assets/jlsiued.CIf4-4Mm.png | Bin 42578 -> 0 bytes ...cy.js => manual_ansatz_mps.md.B9GeHooP.js} | 19 ++----------- ... => manual_ansatz_mps.md.B9GeHooP.lean.js} | 19 ++----------- ...-.js => manual_contraction.md.pVZ11YfN.js} | 2 +- ...=> manual_contraction.md.pVZ11YfN.lean.js} | 2 +- ...L1Usp.js => manual_tensors.md.CVZunshj.js} | 12 ++++---- ....js => manual_tensors.md.CVZunshj.lean.js} | 12 ++++---- ... => manual_transformations.md.BCGTlIGr.js} | 2 +- ...anual_transformations.md.BCGTlIGr.lean.js} | 2 +- ...36zEJW.js => visualization.md.CfQC3c65.js} | 4 +-- ...n.js => visualization.md.CfQC3c65.lean.js} | 4 +-- previews/PR262/developer/cached-field.html | 6 ++-- previews/PR262/developer/hypergraph.html | 6 ++-- .../PR262/developer/keyword-dispatch.html | 6 ++-- previews/PR262/developer/type-hierarchy.html | 6 ++-- previews/PR262/developer/unsafe-region.html | 6 ++-- previews/PR262/friends.html | 6 ++-- previews/PR262/hashmap.json | 2 +- previews/PR262/index.html | 6 ++-- previews/PR262/manual/ansatz/index.html | 6 ++-- previews/PR262/manual/ansatz/mps.html | 26 ++++++++++-------- previews/PR262/manual/ansatz/product.html | 6 ++-- previews/PR262/manual/contraction.html | 10 +++---- previews/PR262/manual/quantum.html | 6 ++-- previews/PR262/manual/tensor-network.html | 6 ++-- previews/PR262/manual/tensors.html | 20 +++++++------- previews/PR262/manual/transformations.html | 10 +++---- previews/PR262/visualization.html | 10 +++---- 49 files changed, 150 insertions(+), 178 deletions(-) rename previews/PR262/assets/{api_ansatz.md.C5te6Lyn.js => api_ansatz.md.Bc21y-jm.js} (77%) rename previews/PR262/assets/{api_ansatz.md.C5te6Lyn.lean.js => api_ansatz.md.Bc21y-jm.lean.js} (77%) rename previews/PR262/assets/{api_quantum.md.COFd6Zb6.js => api_quantum.md.CP7925tk.js} (92%) rename previews/PR262/assets/{api_quantum.md.COFd6Zb6.lean.js => api_quantum.md.CP7925tk.lean.js} (92%) create mode 100644 previews/PR262/assets/api_tensor.md.BhYHa3xI.js create mode 100644 previews/PR262/assets/api_tensor.md.BhYHa3xI.lean.js delete mode 100644 previews/PR262/assets/api_tensor.md.DmbTPrJK.js delete mode 100644 previews/PR262/assets/api_tensor.md.DmbTPrJK.lean.js rename previews/PR262/assets/{api_tensornetwork.md.DUbIDWMl.js => api_tensornetwork.md.gc29p5Pz.js} (94%) rename previews/PR262/assets/{api_tensornetwork.md.DUbIDWMl.lean.js => api_tensornetwork.md.gc29p5Pz.lean.js} (94%) rename previews/PR262/assets/{app.CFabq2M8.js => app.D9eGT1wM.js} (95%) create mode 100644 previews/PR262/assets/chunks/@localSearchIndexroot.BrNAULNl.js delete mode 100644 previews/PR262/assets/chunks/@localSearchIndexroot.CPuLW2tQ.js rename previews/PR262/assets/chunks/{VPLocalSearchBox.D8zCF3DP.js => VPLocalSearchBox.APAjKZUj.js} (99%) rename previews/PR262/assets/chunks/{theme.xArc5YRl.js => theme.BaN35FQU.js} (99%) create mode 100644 previews/PR262/assets/jlsiued.BiOIqqM2.png delete mode 100644 previews/PR262/assets/jlsiued.CIf4-4Mm.png rename previews/PR262/assets/{manual_ansatz_mps.md.Bg_pfwcy.js => manual_ansatz_mps.md.B9GeHooP.js} (83%) rename previews/PR262/assets/{manual_ansatz_mps.md.Bg_pfwcy.lean.js => manual_ansatz_mps.md.B9GeHooP.lean.js} (83%) rename previews/PR262/assets/{manual_contraction.md.IOCPRU5-.js => manual_contraction.md.pVZ11YfN.js} (69%) rename previews/PR262/assets/{manual_contraction.md.IOCPRU5-.lean.js => manual_contraction.md.pVZ11YfN.lean.js} (69%) rename previews/PR262/assets/{manual_tensors.md.BT9L1Usp.js => manual_tensors.md.CVZunshj.js} (96%) rename previews/PR262/assets/{manual_tensors.md.BT9L1Usp.lean.js => manual_tensors.md.CVZunshj.lean.js} (96%) rename previews/PR262/assets/{manual_transformations.md.Dm6LcGKB.js => manual_transformations.md.BCGTlIGr.js} (98%) rename previews/PR262/assets/{manual_transformations.md.Dm6LcGKB.lean.js => manual_transformations.md.BCGTlIGr.lean.js} (98%) rename previews/PR262/assets/{visualization.md.DH36zEJW.js => visualization.md.CfQC3c65.js} (94%) rename previews/PR262/assets/{visualization.md.DH36zEJW.lean.js => visualization.md.CfQC3c65.lean.js} (94%) diff --git a/previews/PR262/404.html b/previews/PR262/404.html index 67251f33..dd0e4c72 100644 --- a/previews/PR262/404.html +++ b/previews/PR262/404.html @@ -9,7 +9,7 @@ - + @@ -19,7 +19,7 @@
- + \ No newline at end of file diff --git a/previews/PR262/api/ansatz.html b/previews/PR262/api/ansatz.html index 6d9d4487..fe425358 100644 --- a/previews/PR262/api/ansatz.html +++ b/previews/PR262/api/ansatz.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,8 +21,8 @@ -
- +
+ \ No newline at end of file diff --git a/previews/PR262/api/quantum.html b/previews/PR262/api/quantum.html index 817fc9d8..a6c87d46 100644 --- a/previews/PR262/api/quantum.html +++ b/previews/PR262/api/quantum.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,8 +21,8 @@ -
Skip to content

Quantum

Tenet.Quantum Type
julia
Quantum

Tensor Network with a notion of "causality". This leads to the notion of sites and directionality (input/output).

Notes

  • Indices are referenced by Sites.

source

Tenet.TensorNetwork Method
julia
TensorNetwork(q::AbstractQuantum)

Returns the underlying TensorNetwork of an AbstractQuantum.

source

Base.adjoint Method
julia
adjoint(q::Quantum)

Returns the adjoint of a Quantum Tensor Network; i.e. the conjugate Tensor Network with the inputs and outputs swapped.

source

Tenet.sites Function
julia
sites(q::AbstractQuantum)

Returns the sites of a AbstractQuantum Tensor Network.

source

Tenet.nsites Function
julia
nsites(q::AbstractQuantum)

Returns the number of sites of a AbstractQuantum Tensor Network.

source

Missing docstring.

Missing docstring for Tenet.inds(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for Tenet.tensors(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for outputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for ninputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for noutputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for nlanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Socket. Check Documenter's build log for details.

Tenet.socket Method
julia
socket(q::Quantum)

Returns the socket of a Quantum Tensor Network; i.e. whether it is a Scalar, State or Operator.

source

Tenet.Scalar Type
julia
Scalar <: Socket

Socket representing a scalar; i.e. a Tensor Network with no open sites.

source

Tenet.State Type
julia
State <: Socket

Socket representing a state; i.e. a Tensor Network with only input sites (or only output sites if dual = true).

source

Tenet.Operator Type
julia
Operator <: Socket

Socket representing an operator; i.e. a Tensor Network with both input and output sites.

source

Missing docstring.

Missing docstring for Base.merge(::Quantum, ::Quantum...). Check Documenter's build log for details.

Made with DocumenterVitepress.jl

- +
Skip to content

Quantum

Tenet.Quantum Type
julia
Quantum

Tensor Network with a notion of "causality". This leads to the notion of sites and directionality (input/output).

Notes

  • Indices are referenced by Sites.

source

Tenet.TensorNetwork Method
julia
TensorNetwork(q::AbstractQuantum)

Returns the underlying TensorNetwork of an AbstractQuantum.

source

Base.adjoint Method
julia
adjoint(q::Quantum)

Returns the adjoint of a Quantum Tensor Network; i.e. the conjugate Tensor Network with the inputs and outputs swapped.

source

Tenet.sites Function
julia
sites(q::AbstractQuantum)

Returns the sites of a AbstractQuantum Tensor Network.

source

Tenet.nsites Function
julia
nsites(q::AbstractQuantum)

Returns the number of sites of a AbstractQuantum Tensor Network.

source

Missing docstring.

Missing docstring for Tenet.inds(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for Tenet.tensors(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for outputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for ninputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for noutputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for nlanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Socket. Check Documenter's build log for details.

Tenet.socket Method
julia
socket(q::Quantum)

Returns the socket of a Quantum Tensor Network; i.e. whether it is a Scalar, State or Operator.

source

Tenet.Scalar Type
julia
Scalar <: Socket

Socket representing a scalar; i.e. a Tensor Network with no open sites.

source

Tenet.State Type
julia
State <: Socket

Socket representing a state; i.e. a Tensor Network with only input sites (or only output sites if dual = true).

source

Tenet.Operator Type
julia
Operator <: Socket

Socket representing an operator; i.e. a Tensor Network with both input and output sites.

source

Missing docstring.

Missing docstring for Base.merge(::Quantum, ::Quantum...). Check Documenter's build log for details.

Made with DocumenterVitepress.jl

+ \ No newline at end of file diff --git a/previews/PR262/api/tensor.html b/previews/PR262/api/tensor.html index fb6f9a89..4788d109 100644 --- a/previews/PR262/api/tensor.html +++ b/previews/PR262/api/tensor.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,8 +21,8 @@ -
Skip to content

Tensor

Missing docstring.

Missing docstring for Base.parent(::Tensor). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inds(::Tensor). Check Documenter's build log for details.

Base.size Method
julia
Base.size(::Tensor[, i])

Return the size of the underlying array or the dimension i (specified by Symbol or Integer).

source

Graphs.LinAlg.contract Method
julia
contract(a::Tensor[, b::Tensor]; dims=nonunique([inds(a)..., inds(b)...]))

Perform tensor contraction operation.

source

LinearAlgebra.svd Method
julia
LinearAlgebra.svd(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform SVD factorization on a tensor.

Keyword arguments

  • left_inds: left indices to be used in the SVD factorization. Defaults to all indices of t except right_inds.

  • right_inds: right indices to be used in the SVD factorization. Defaults to all indices of t except left_inds.

  • virtualind: name of the virtual bond. Defaults to a random Symbol.

source

LinearAlgebra.qr Method
julia
LinearAlgebra.qr(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform QR factorization on a tensor.

Keyword arguments

  • left_inds: left indices to be used in the QR factorization. Defaults to all indices of t except right_inds.

  • right_inds: right indices to be used in the QR factorization. Defaults to all indices of t except left_inds.

  • virtualind: name of the virtual bond. Defaults to a random Symbol.

source

LinearAlgebra.lu Method
julia
LinearAlgebra.lu(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform LU factorization on a tensor.

Keyword arguments

  • left_inds: left indices to be used in the LU factorization. Defaults to all indices of t except right_inds.

  • right_inds: right indices to be used in the LU factorization. Defaults to all indices of t except left_inds.

  • virtualind: name of the virtual bond. Defaults to a random Symbol.

source

Made with DocumenterVitepress.jl

- +
Skip to content

Tensor

Missing docstring.

Missing docstring for Base.parent(::Tensor). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inds(::Tensor). Check Documenter's build log for details.

Base.size Method
julia
Base.size(::Tensor[, i])

Return the size of the underlying array or the dimension i (specified by Symbol or Integer).

source

Graphs.LinAlg.contract Method
julia
contract(a::Tensor[, b::Tensor]; dims=nonunique([inds(a)..., inds(b)...]))

Perform tensor contraction operation.

source

LinearAlgebra.svd Method
julia
LinearAlgebra.svd(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform SVD factorization on a tensor.

Keyword arguments

  • left_inds: left indices to be used in the SVD factorization. Defaults to all indices of t except right_inds.

  • right_inds: right indices to be used in the SVD factorization. Defaults to all indices of t except left_inds.

  • virtualind: name of the virtual bond. Defaults to a random Symbol.

source

LinearAlgebra.qr Method
julia
LinearAlgebra.qr(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform QR factorization on a tensor.

Keyword arguments

  • left_inds: left indices to be used in the QR factorization. Defaults to all indices of t except right_inds.

  • right_inds: right indices to be used in the QR factorization. Defaults to all indices of t except left_inds.

  • virtualind: name of the virtual bond. Defaults to a random Symbol.

source

LinearAlgebra.lu Method
julia
LinearAlgebra.lu(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform LU factorization on a tensor.

Keyword arguments

  • left_inds: left indices to be used in the LU factorization. Defaults to all indices of t except right_inds.

  • right_inds: right indices to be used in the LU factorization. Defaults to all indices of t except left_inds.

  • virtualind: name of the virtual bond. Defaults to a random Symbol.

source

Made with DocumenterVitepress.jl

+ \ No newline at end of file diff --git a/previews/PR262/api/tensornetwork.html b/previews/PR262/api/tensornetwork.html index b425eb1f..ba022948 100644 --- a/previews/PR262/api/tensornetwork.html +++ b/previews/PR262/api/tensornetwork.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,14 +21,14 @@ -
Skip to content

TensorNetwork

Tenet.TensorNetwork Type
julia
TensorNetwork

Graph of interconnected tensors, representing a multilinear equation. Graph vertices represent tensors and graph edges, tensor indices.

source

Missing docstring.

Missing docstring for inds(::Tenet.TensorNetwork). Check Documenter's build log for details.

Base.size Method
julia
size(tn::AbstractTensorNetwork)
-size(tn::AbstractTensorNetwork, index)

Return a mapping from indices to their dimensionalities.

If index is set, return the dimensionality of index. This is equivalent to size(tn)[index].

source

Missing docstring.

Missing docstring for tensors(::Tenet.TensorNetwork). Check Documenter's build log for details.

Base.push! Method
julia
push!(tn::AbstractTensorNetwork, tensor::Tensor)

Add a new tensor to the Tensor Network.

See also: append!, pop!.

source

Base.pop! Method
julia
pop!(tn::TensorNetwork, tensor::Tensor)
-pop!(tn::TensorNetwork, i::Union{Symbol,AbstractVecOrTuple{Symbol}})

Remove a tensor from the Tensor Network and returns it. If a Tensor is passed, then the first tensor satisfies egality (i.e. or ===) will be removed. If a Symbol or a list of Symbols is passed, then remove and return the tensors that contain all the indices.

See also: push!, delete!.

source

Base.append! Method
julia
append!(tn::TensorNetwork, tensors::AbstractVecOrTuple{<:Tensor})

Add a list of tensors to a TensorNetwork.

See also: push!, merge!.

source

Base.merge! Method
julia
merge!(self::TensorNetwork, others::TensorNetwork...)
-merge(self::TensorNetwork, others::TensorNetwork...)

Fuse various TensorNetworks into one.

See also: append!.

source

Base.delete! Method
julia
delete!(tn::TensorNetwork, x)

Like pop! but return the TensorNetwork instead.

source

Base.replace! Function
julia
replace!(tn::AbstractTensorNetwork, old => new...)
-replace(tn::AbstractTensorNetwork, old => new...)

Replace the element in old with the one in new. Depending on the types of old and new, the following behaviour is expected:

  • If Symbols, it will correspond to a index renaming.

  • If Tensors, first element that satisfies egality ( or ===) will be replaced.

source

Base.selectdim Function
julia
selectdim(tn::AbstractTensorNetwork, index::Symbol, i)

Return a copy of the AbstractTensorNetwork where index has been projected to dimension i.

See also: view, slice!.

source

Tenet.slice! Function
julia
slice!(tn::AbstractTensorNetwork, index::Symbol, i)

In-place projection of index on dimension i.

See also: selectdim, view.

source

Base.view Method
julia
view(tn::AbstractTensorNetwork, index => i...)

Return a copy of the AbstractTensorNetwork where each index has been projected to dimension i. It is equivalent to a recursive call of selectdim.

See also: selectdim, slice!.

source

Base.copy Method
julia
copy(tn::TensorNetwork)

Return a shallow copy of a TensorNetwork.

source

Missing docstring.

Missing docstring for Base.rand(::Type{TensorNetwork}, n::Integer, regularity::Integer). Check Documenter's build log for details.

Transformations

Tenet.transform Function
julia
transform(tn::TensorNetwork, config::Transformation)
-transform(tn::TensorNetwork, configs)

Return a new TensorNetwork where some Transformation has been performed into it.

See also: transform!.

source

Tenet.transform! Function
julia
transform!(tn::TensorNetwork, config::Transformation)
-transform!(tn::TensorNetwork, configs)

In-place version of transform.

source

Tenet.HyperFlatten Type
julia
HyperFlatten <: Transformation

Convert hyperindices to COPY-tensors, represented by DeltaArrays. This transformation is always used by default when visualizing a TensorNetwork with plot.

See also: HyperGroup.

source

Tenet.HyperGroup Type
julia
HyperGroup <: Transformation

Convert COPY-tensors, represented by DeltaArrays, to hyperindices.

See also: HyperFlatten.

source

Tenet.ContractSimplification Type
julia
ContractSimplification <: Transformation

Preemptively contract tensors whose result doesn't increase in size.

source

Tenet.DiagonalReduction Type
julia
DiagonalReduction <: Transformation

Reduce the dimension of a Tensor in a TensorNetwork when it has a pair of indices that fulfil a diagonal structure.

Keyword Arguments

  • atol Absolute tolerance. Defaults to 1e-12.

source

Tenet.AntiDiagonalGauging Type
julia
AntiDiagonalGauging <: Transformation

Reverse the order of tensor indices that fulfill the anti-diagonal condition. While this transformation doesn't directly enhance computational efficiency, it sets up the TensorNetwork for other operations that do.

Keyword Arguments

  • atol Absolute tolerance. Defaults to 1e-12.

  • skip List of indices to skip. Defaults to [].

source

Tenet.Truncate Type
julia
Truncate <: Transformation

Truncate the dimension of a Tensor in a TensorNetwork when it contains columns with all elements smaller than atol.

Keyword Arguments

  • atol Absolute tolerance. Defaults to 1e-12.

  • skip List of indices to skip. Defaults to [].

source

Missing docstring.

Missing docstring for Tenet.SplitSimplificationd. Check Documenter's build log for details.

Made with DocumenterVitepress.jl

- +
Skip to content

TensorNetwork

Tenet.TensorNetwork Type
julia
TensorNetwork

Graph of interconnected tensors, representing a multilinear equation. Graph vertices represent tensors and graph edges, tensor indices.

source

Missing docstring.

Missing docstring for inds(::Tenet.TensorNetwork). Check Documenter's build log for details.

Base.size Method
julia
size(tn::AbstractTensorNetwork)
+size(tn::AbstractTensorNetwork, index)

Return a mapping from indices to their dimensionalities.

If index is set, return the dimensionality of index. This is equivalent to size(tn)[index].

source

Missing docstring.

Missing docstring for tensors(::Tenet.TensorNetwork). Check Documenter's build log for details.

Base.push! Method
julia
push!(tn::AbstractTensorNetwork, tensor::Tensor)

Add a new tensor to the Tensor Network.

See also: append!, pop!.

source

Base.pop! Method
julia
pop!(tn::TensorNetwork, tensor::Tensor)
+pop!(tn::TensorNetwork, i::Union{Symbol,AbstractVecOrTuple{Symbol}})

Remove a tensor from the Tensor Network and returns it. If a Tensor is passed, then the first tensor satisfies egality (i.e. or ===) will be removed. If a Symbol or a list of Symbols is passed, then remove and return the tensors that contain all the indices.

See also: push!, delete!.

source

Base.append! Method
julia
append!(tn::TensorNetwork, tensors::AbstractVecOrTuple{<:Tensor})

Add a list of tensors to a TensorNetwork.

See also: push!, merge!.

source

Base.merge! Method
julia
merge!(self::TensorNetwork, others::TensorNetwork...)
+merge(self::TensorNetwork, others::TensorNetwork...)

Fuse various TensorNetworks into one.

See also: append!.

source

Base.delete! Method
julia
delete!(tn::TensorNetwork, x)

Like pop! but return the TensorNetwork instead.

source

Base.replace! Function
julia
replace!(tn::AbstractTensorNetwork, old => new...)
+replace(tn::AbstractTensorNetwork, old => new...)

Replace the element in old with the one in new. Depending on the types of old and new, the following behaviour is expected:

  • If Symbols, it will correspond to a index renaming.

  • If Tensors, first element that satisfies egality ( or ===) will be replaced.

source

Base.selectdim Function
julia
selectdim(tn::AbstractTensorNetwork, index::Symbol, i)

Return a copy of the AbstractTensorNetwork where index has been projected to dimension i.

See also: view, slice!.

source

Tenet.slice! Function
julia
slice!(tn::AbstractTensorNetwork, index::Symbol, i)

In-place projection of index on dimension i.

See also: selectdim, view.

source

Base.view Method
julia
view(tn::AbstractTensorNetwork, index => i...)

Return a copy of the AbstractTensorNetwork where each index has been projected to dimension i. It is equivalent to a recursive call of selectdim.

See also: selectdim, slice!.

source

Base.copy Method
julia
copy(tn::TensorNetwork)

Return a shallow copy of a TensorNetwork.

source

Missing docstring.

Missing docstring for Base.rand(::Type{TensorNetwork}, n::Integer, regularity::Integer). Check Documenter's build log for details.

Transformations

Tenet.transform Function
julia
transform(tn::TensorNetwork, config::Transformation)
+transform(tn::TensorNetwork, configs)

Return a new TensorNetwork where some Transformation has been performed into it.

See also: transform!.

source

Tenet.transform! Function
julia
transform!(tn::TensorNetwork, config::Transformation)
+transform!(tn::TensorNetwork, configs)

In-place version of transform.

source

Tenet.HyperFlatten Type
julia
HyperFlatten <: Transformation

Convert hyperindices to COPY-tensors, represented by DeltaArrays. This transformation is always used by default when visualizing a TensorNetwork with plot.

See also: HyperGroup.

source

Tenet.HyperGroup Type
julia
HyperGroup <: Transformation

Convert COPY-tensors, represented by DeltaArrays, to hyperindices.

See also: HyperFlatten.

source

Tenet.ContractSimplification Type
julia
ContractSimplification <: Transformation

Preemptively contract tensors whose result doesn't increase in size.

source

Tenet.DiagonalReduction Type
julia
DiagonalReduction <: Transformation

Reduce the dimension of a Tensor in a TensorNetwork when it has a pair of indices that fulfil a diagonal structure.

Keyword Arguments

  • atol Absolute tolerance. Defaults to 1e-12.

source

Tenet.AntiDiagonalGauging Type
julia
AntiDiagonalGauging <: Transformation

Reverse the order of tensor indices that fulfill the anti-diagonal condition. While this transformation doesn't directly enhance computational efficiency, it sets up the TensorNetwork for other operations that do.

Keyword Arguments

  • atol Absolute tolerance. Defaults to 1e-12.

  • skip List of indices to skip. Defaults to [].

source

Tenet.Truncate Type
julia
Truncate <: Transformation

Truncate the dimension of a Tensor in a TensorNetwork when it contains columns with all elements smaller than atol.

Keyword Arguments

  • atol Absolute tolerance. Defaults to 1e-12.

  • skip List of indices to skip. Defaults to [].

source

Missing docstring.

Missing docstring for Tenet.SplitSimplificationd. Check Documenter's build log for details.

Made with DocumenterVitepress.jl

+ \ No newline at end of file diff --git a/previews/PR262/assets/api_ansatz.md.C5te6Lyn.js b/previews/PR262/assets/api_ansatz.md.Bc21y-jm.js similarity index 77% rename from previews/PR262/assets/api_ansatz.md.C5te6Lyn.js rename to previews/PR262/assets/api_ansatz.md.Bc21y-jm.js index 8550fcbb..2da848e4 100644 --- a/previews/PR262/assets/api_ansatz.md.C5te6Lyn.js +++ b/previews/PR262/assets/api_ansatz.md.Bc21y-jm.js @@ -1 +1 @@ -import{_ as n,c as i,j as e,a as t,G as r,a5 as l,B as o,o as d}from"./chunks/framework.BqptwCCd.js";const P=JSON.parse('{"title":"Ansatz","description":"","frontmatter":{},"headers":[],"relativePath":"api/ansatz.md","filePath":"api/ansatz.md","lastUpdated":null}'),p={name:"api/ansatz.md"},c={class:"jldocstring custom-block",open:""};function h(m,a,u,b,f,k){const s=o("Badge");return d(),i("div",null,[a[3]||(a[3]=e("h1",{id:"ansatz",tabindex:"-1"},[t("Ansatz "),e("a",{class:"header-anchor",href:"#ansatz","aria-label":'Permalink to "Ansatz"'},"​")],-1)),a[4]||(a[4]=e("h2",{id:"mps",tabindex:"-1"},[t("MPS "),e("a",{class:"header-anchor",href:"#mps","aria-label":'Permalink to "MPS"'},"​")],-1)),e("details",c,[e("summary",null,[a[0]||(a[0]=e("a",{id:"Tenet.MPS",href:"#Tenet.MPS"},[e("span",{class:"jlbinding"},"Tenet.MPS")],-1)),a[1]||(a[1]=t()),r(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[2]||(a[2]=l('
julia
MPS <: AbstractAnsatz

A Matrix Product State Ansatz Tensor Network.

source

',3))])])}const z=n(p,[["render",h]]);export{P as __pageData,z as default}; +import{_ as n,c as i,j as e,a as t,G as r,a5 as l,B as o,o as p}from"./chunks/framework.BqptwCCd.js";const P=JSON.parse('{"title":"Ansatz","description":"","frontmatter":{},"headers":[],"relativePath":"api/ansatz.md","filePath":"api/ansatz.md","lastUpdated":null}'),d={name:"api/ansatz.md"},c={class:"jldocstring custom-block",open:""};function h(b,a,m,u,k,f){const s=o("Badge");return p(),i("div",null,[a[3]||(a[3]=e("h1",{id:"ansatz",tabindex:"-1"},[t("Ansatz "),e("a",{class:"header-anchor",href:"#ansatz","aria-label":'Permalink to "Ansatz"'},"​")],-1)),a[4]||(a[4]=e("h2",{id:"mps",tabindex:"-1"},[t("MPS "),e("a",{class:"header-anchor",href:"#mps","aria-label":'Permalink to "MPS"'},"​")],-1)),e("details",c,[e("summary",null,[a[0]||(a[0]=e("a",{id:"Tenet.MPS",href:"#Tenet.MPS"},[e("span",{class:"jlbinding"},"Tenet.MPS")],-1)),a[1]||(a[1]=t()),r(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[2]||(a[2]=l('
julia
MPS <: AbstractAnsatz

A Matrix Product State Ansatz Tensor Network.

source

',3))])])}const z=n(d,[["render",h]]);export{P as __pageData,z as default}; diff --git a/previews/PR262/assets/api_ansatz.md.C5te6Lyn.lean.js b/previews/PR262/assets/api_ansatz.md.Bc21y-jm.lean.js similarity index 77% rename from previews/PR262/assets/api_ansatz.md.C5te6Lyn.lean.js rename to previews/PR262/assets/api_ansatz.md.Bc21y-jm.lean.js index 8550fcbb..2da848e4 100644 --- a/previews/PR262/assets/api_ansatz.md.C5te6Lyn.lean.js +++ b/previews/PR262/assets/api_ansatz.md.Bc21y-jm.lean.js @@ -1 +1 @@ -import{_ as n,c as i,j as e,a as t,G as r,a5 as l,B as o,o as d}from"./chunks/framework.BqptwCCd.js";const P=JSON.parse('{"title":"Ansatz","description":"","frontmatter":{},"headers":[],"relativePath":"api/ansatz.md","filePath":"api/ansatz.md","lastUpdated":null}'),p={name:"api/ansatz.md"},c={class:"jldocstring custom-block",open:""};function h(m,a,u,b,f,k){const s=o("Badge");return d(),i("div",null,[a[3]||(a[3]=e("h1",{id:"ansatz",tabindex:"-1"},[t("Ansatz "),e("a",{class:"header-anchor",href:"#ansatz","aria-label":'Permalink to "Ansatz"'},"​")],-1)),a[4]||(a[4]=e("h2",{id:"mps",tabindex:"-1"},[t("MPS "),e("a",{class:"header-anchor",href:"#mps","aria-label":'Permalink to "MPS"'},"​")],-1)),e("details",c,[e("summary",null,[a[0]||(a[0]=e("a",{id:"Tenet.MPS",href:"#Tenet.MPS"},[e("span",{class:"jlbinding"},"Tenet.MPS")],-1)),a[1]||(a[1]=t()),r(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[2]||(a[2]=l('
julia
MPS <: AbstractAnsatz

A Matrix Product State Ansatz Tensor Network.

source

',3))])])}const z=n(p,[["render",h]]);export{P as __pageData,z as default}; +import{_ as n,c as i,j as e,a as t,G as r,a5 as l,B as o,o as p}from"./chunks/framework.BqptwCCd.js";const P=JSON.parse('{"title":"Ansatz","description":"","frontmatter":{},"headers":[],"relativePath":"api/ansatz.md","filePath":"api/ansatz.md","lastUpdated":null}'),d={name:"api/ansatz.md"},c={class:"jldocstring custom-block",open:""};function h(b,a,m,u,k,f){const s=o("Badge");return p(),i("div",null,[a[3]||(a[3]=e("h1",{id:"ansatz",tabindex:"-1"},[t("Ansatz "),e("a",{class:"header-anchor",href:"#ansatz","aria-label":'Permalink to "Ansatz"'},"​")],-1)),a[4]||(a[4]=e("h2",{id:"mps",tabindex:"-1"},[t("MPS "),e("a",{class:"header-anchor",href:"#mps","aria-label":'Permalink to "MPS"'},"​")],-1)),e("details",c,[e("summary",null,[a[0]||(a[0]=e("a",{id:"Tenet.MPS",href:"#Tenet.MPS"},[e("span",{class:"jlbinding"},"Tenet.MPS")],-1)),a[1]||(a[1]=t()),r(s,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[2]||(a[2]=l('
julia
MPS <: AbstractAnsatz

A Matrix Product State Ansatz Tensor Network.

source

',3))])])}const z=n(d,[["render",h]]);export{P as __pageData,z as default}; diff --git a/previews/PR262/assets/api_quantum.md.COFd6Zb6.js b/previews/PR262/assets/api_quantum.md.CP7925tk.js similarity index 92% rename from previews/PR262/assets/api_quantum.md.COFd6Zb6.js rename to previews/PR262/assets/api_quantum.md.CP7925tk.js index 7f117d84..9d96349c 100644 --- a/previews/PR262/assets/api_quantum.md.COFd6Zb6.js +++ b/previews/PR262/assets/api_quantum.md.CP7925tk.js @@ -1 +1 @@ -import{_ as l,c as o,j as t,a as e,G as n,a5 as i,B as p,o as r}from"./chunks/framework.BqptwCCd.js";const Q=JSON.parse('{"title":"Quantum","description":"","frontmatter":{},"headers":[],"relativePath":"api/quantum.md","filePath":"api/quantum.md","lastUpdated":null}'),d={name:"api/quantum.md"},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""};function j(T,s,v,E,C,w){const a=p("Badge");return r(),o("div",null,[s[27]||(s[27]=t("h1",{id:"quantum",tabindex:"-1"},[e("Quantum "),t("a",{class:"header-anchor",href:"#quantum","aria-label":'Permalink to "Quantum"'},"​")],-1)),t("details",u,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Tenet.Quantum",href:"#Tenet.Quantum"},[t("span",{class:"jlbinding"},"Tenet.Quantum")],-1)),s[1]||(s[1]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=i('
julia
Quantum

Tensor Network with a notion of "causality". This leads to the notion of sites and directionality (input/output).

Notes

source

',5))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Tenet.TensorNetwork-Tuple{Quantum}",href:"#Tenet.TensorNetwork-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[4]||(s[4]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=i('
julia
TensorNetwork(q::AbstractQuantum)

Returns the underlying TensorNetwork of an AbstractQuantum.

source

',3))]),t("details",k,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Base.adjoint-Tuple{Quantum}",href:"#Base.adjoint-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Base.adjoint")],-1)),s[7]||(s[7]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=i('
julia
adjoint(q::Quantum)

Returns the adjoint of a Quantum Tensor Network; i.e. the conjugate Tensor Network with the inputs and outputs swapped.

source

',3))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Tenet.sites",href:"#Tenet.sites"},[t("span",{class:"jlbinding"},"Tenet.sites")],-1)),s[10]||(s[10]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=i('
julia
sites(q::AbstractQuantum)

Returns the sites of a AbstractQuantum Tensor Network.

source

',3))]),t("details",g,[t("summary",null,[s[12]||(s[12]=t("a",{id:"Tenet.nsites",href:"#Tenet.nsites"},[t("span",{class:"jlbinding"},"Tenet.nsites")],-1)),s[13]||(s[13]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=i('
julia
nsites(q::AbstractQuantum)

Returns the number of sites of a AbstractQuantum Tensor Network.

source

',3))]),s[28]||(s[28]=i('

Missing docstring.

Missing docstring for Tenet.inds(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for Tenet.tensors(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for outputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for ninputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for noutputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for nlanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Socket. Check Documenter's build log for details.

',9)),t("details",b,[t("summary",null,[s[15]||(s[15]=t("a",{id:"Tenet.socket-Tuple{Quantum}",href:"#Tenet.socket-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.socket")],-1)),s[16]||(s[16]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=i('
julia
socket(q::Quantum)

Returns the socket of a Quantum Tensor Network; i.e. whether it is a Scalar, State or Operator.

source

',3))]),t("details",m,[t("summary",null,[s[18]||(s[18]=t("a",{id:"Tenet.Scalar",href:"#Tenet.Scalar"},[t("span",{class:"jlbinding"},"Tenet.Scalar")],-1)),s[19]||(s[19]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=i('
julia
Scalar <: Socket

Socket representing a scalar; i.e. a Tensor Network with no open sites.

source

',3))]),t("details",f,[t("summary",null,[s[21]||(s[21]=t("a",{id:"Tenet.State",href:"#Tenet.State"},[t("span",{class:"jlbinding"},"Tenet.State")],-1)),s[22]||(s[22]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=i('
julia
State <: Socket

Socket representing a state; i.e. a Tensor Network with only input sites (or only output sites if dual = true).

source

',3))]),t("details",y,[t("summary",null,[s[24]||(s[24]=t("a",{id:"Tenet.Operator",href:"#Tenet.Operator"},[t("span",{class:"jlbinding"},"Tenet.Operator")],-1)),s[25]||(s[25]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=i('
julia
Operator <: Socket

Socket representing an operator; i.e. a Tensor Network with both input and output sites.

source

',3))]),s[29]||(s[29]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Missing docstring."),t("p",null,[e("Missing docstring for "),t("code",null,"Base.merge(::Quantum, ::Quantum...)"),e(". Check Documenter's build log for details.")])],-1))])}const q=l(d,[["render",j]]);export{Q as __pageData,q as default}; +import{_ as l,c as o,j as t,a as e,G as n,a5 as i,B as p,o as r}from"./chunks/framework.BqptwCCd.js";const Q=JSON.parse('{"title":"Quantum","description":"","frontmatter":{},"headers":[],"relativePath":"api/quantum.md","filePath":"api/quantum.md","lastUpdated":null}'),d={name:"api/quantum.md"},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""};function j(T,s,v,E,C,w){const a=p("Badge");return r(),o("div",null,[s[27]||(s[27]=t("h1",{id:"quantum",tabindex:"-1"},[e("Quantum "),t("a",{class:"header-anchor",href:"#quantum","aria-label":'Permalink to "Quantum"'},"​")],-1)),t("details",u,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Tenet.Quantum",href:"#Tenet.Quantum"},[t("span",{class:"jlbinding"},"Tenet.Quantum")],-1)),s[1]||(s[1]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=i('
julia
Quantum

Tensor Network with a notion of "causality". This leads to the notion of sites and directionality (input/output).

Notes

source

',5))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Tenet.TensorNetwork-Tuple{Quantum}",href:"#Tenet.TensorNetwork-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[4]||(s[4]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=i('
julia
TensorNetwork(q::AbstractQuantum)

Returns the underlying TensorNetwork of an AbstractQuantum.

source

',3))]),t("details",k,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Base.adjoint-Tuple{Quantum}",href:"#Base.adjoint-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Base.adjoint")],-1)),s[7]||(s[7]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=i('
julia
adjoint(q::Quantum)

Returns the adjoint of a Quantum Tensor Network; i.e. the conjugate Tensor Network with the inputs and outputs swapped.

source

',3))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Tenet.sites",href:"#Tenet.sites"},[t("span",{class:"jlbinding"},"Tenet.sites")],-1)),s[10]||(s[10]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=i('
julia
sites(q::AbstractQuantum)

Returns the sites of a AbstractQuantum Tensor Network.

source

',3))]),t("details",g,[t("summary",null,[s[12]||(s[12]=t("a",{id:"Tenet.nsites",href:"#Tenet.nsites"},[t("span",{class:"jlbinding"},"Tenet.nsites")],-1)),s[13]||(s[13]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=i('
julia
nsites(q::AbstractQuantum)

Returns the number of sites of a AbstractQuantum Tensor Network.

source

',3))]),s[28]||(s[28]=i('

Missing docstring.

Missing docstring for Tenet.inds(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for Tenet.tensors(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for outputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for ninputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for noutputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for nlanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Socket. Check Documenter's build log for details.

',9)),t("details",b,[t("summary",null,[s[15]||(s[15]=t("a",{id:"Tenet.socket-Tuple{Quantum}",href:"#Tenet.socket-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.socket")],-1)),s[16]||(s[16]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=i('
julia
socket(q::Quantum)

Returns the socket of a Quantum Tensor Network; i.e. whether it is a Scalar, State or Operator.

source

',3))]),t("details",m,[t("summary",null,[s[18]||(s[18]=t("a",{id:"Tenet.Scalar",href:"#Tenet.Scalar"},[t("span",{class:"jlbinding"},"Tenet.Scalar")],-1)),s[19]||(s[19]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=i('
julia
Scalar <: Socket

Socket representing a scalar; i.e. a Tensor Network with no open sites.

source

',3))]),t("details",f,[t("summary",null,[s[21]||(s[21]=t("a",{id:"Tenet.State",href:"#Tenet.State"},[t("span",{class:"jlbinding"},"Tenet.State")],-1)),s[22]||(s[22]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=i('
julia
State <: Socket

Socket representing a state; i.e. a Tensor Network with only input sites (or only output sites if dual = true).

source

',3))]),t("details",y,[t("summary",null,[s[24]||(s[24]=t("a",{id:"Tenet.Operator",href:"#Tenet.Operator"},[t("span",{class:"jlbinding"},"Tenet.Operator")],-1)),s[25]||(s[25]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=i('
julia
Operator <: Socket

Socket representing an operator; i.e. a Tensor Network with both input and output sites.

source

',3))]),s[29]||(s[29]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Missing docstring."),t("p",null,[e("Missing docstring for "),t("code",null,"Base.merge(::Quantum, ::Quantum...)"),e(". Check Documenter's build log for details.")])],-1))])}const q=l(d,[["render",j]]);export{Q as __pageData,q as default}; diff --git a/previews/PR262/assets/api_quantum.md.COFd6Zb6.lean.js b/previews/PR262/assets/api_quantum.md.CP7925tk.lean.js similarity index 92% rename from previews/PR262/assets/api_quantum.md.COFd6Zb6.lean.js rename to previews/PR262/assets/api_quantum.md.CP7925tk.lean.js index 7f117d84..9d96349c 100644 --- a/previews/PR262/assets/api_quantum.md.COFd6Zb6.lean.js +++ b/previews/PR262/assets/api_quantum.md.CP7925tk.lean.js @@ -1 +1 @@ -import{_ as l,c as o,j as t,a as e,G as n,a5 as i,B as p,o as r}from"./chunks/framework.BqptwCCd.js";const Q=JSON.parse('{"title":"Quantum","description":"","frontmatter":{},"headers":[],"relativePath":"api/quantum.md","filePath":"api/quantum.md","lastUpdated":null}'),d={name:"api/quantum.md"},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""};function j(T,s,v,E,C,w){const a=p("Badge");return r(),o("div",null,[s[27]||(s[27]=t("h1",{id:"quantum",tabindex:"-1"},[e("Quantum "),t("a",{class:"header-anchor",href:"#quantum","aria-label":'Permalink to "Quantum"'},"​")],-1)),t("details",u,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Tenet.Quantum",href:"#Tenet.Quantum"},[t("span",{class:"jlbinding"},"Tenet.Quantum")],-1)),s[1]||(s[1]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=i('
julia
Quantum

Tensor Network with a notion of "causality". This leads to the notion of sites and directionality (input/output).

Notes

source

',5))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Tenet.TensorNetwork-Tuple{Quantum}",href:"#Tenet.TensorNetwork-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[4]||(s[4]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=i('
julia
TensorNetwork(q::AbstractQuantum)

Returns the underlying TensorNetwork of an AbstractQuantum.

source

',3))]),t("details",k,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Base.adjoint-Tuple{Quantum}",href:"#Base.adjoint-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Base.adjoint")],-1)),s[7]||(s[7]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=i('
julia
adjoint(q::Quantum)

Returns the adjoint of a Quantum Tensor Network; i.e. the conjugate Tensor Network with the inputs and outputs swapped.

source

',3))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Tenet.sites",href:"#Tenet.sites"},[t("span",{class:"jlbinding"},"Tenet.sites")],-1)),s[10]||(s[10]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=i('
julia
sites(q::AbstractQuantum)

Returns the sites of a AbstractQuantum Tensor Network.

source

',3))]),t("details",g,[t("summary",null,[s[12]||(s[12]=t("a",{id:"Tenet.nsites",href:"#Tenet.nsites"},[t("span",{class:"jlbinding"},"Tenet.nsites")],-1)),s[13]||(s[13]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=i('
julia
nsites(q::AbstractQuantum)

Returns the number of sites of a AbstractQuantum Tensor Network.

source

',3))]),s[28]||(s[28]=i('

Missing docstring.

Missing docstring for Tenet.inds(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for Tenet.tensors(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for outputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for ninputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for noutputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for nlanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Socket. Check Documenter's build log for details.

',9)),t("details",b,[t("summary",null,[s[15]||(s[15]=t("a",{id:"Tenet.socket-Tuple{Quantum}",href:"#Tenet.socket-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.socket")],-1)),s[16]||(s[16]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=i('
julia
socket(q::Quantum)

Returns the socket of a Quantum Tensor Network; i.e. whether it is a Scalar, State or Operator.

source

',3))]),t("details",m,[t("summary",null,[s[18]||(s[18]=t("a",{id:"Tenet.Scalar",href:"#Tenet.Scalar"},[t("span",{class:"jlbinding"},"Tenet.Scalar")],-1)),s[19]||(s[19]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=i('
julia
Scalar <: Socket

Socket representing a scalar; i.e. a Tensor Network with no open sites.

source

',3))]),t("details",f,[t("summary",null,[s[21]||(s[21]=t("a",{id:"Tenet.State",href:"#Tenet.State"},[t("span",{class:"jlbinding"},"Tenet.State")],-1)),s[22]||(s[22]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=i('
julia
State <: Socket

Socket representing a state; i.e. a Tensor Network with only input sites (or only output sites if dual = true).

source

',3))]),t("details",y,[t("summary",null,[s[24]||(s[24]=t("a",{id:"Tenet.Operator",href:"#Tenet.Operator"},[t("span",{class:"jlbinding"},"Tenet.Operator")],-1)),s[25]||(s[25]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=i('
julia
Operator <: Socket

Socket representing an operator; i.e. a Tensor Network with both input and output sites.

source

',3))]),s[29]||(s[29]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Missing docstring."),t("p",null,[e("Missing docstring for "),t("code",null,"Base.merge(::Quantum, ::Quantum...)"),e(". Check Documenter's build log for details.")])],-1))])}const q=l(d,[["render",j]]);export{Q as __pageData,q as default}; +import{_ as l,c as o,j as t,a as e,G as n,a5 as i,B as p,o as r}from"./chunks/framework.BqptwCCd.js";const Q=JSON.parse('{"title":"Quantum","description":"","frontmatter":{},"headers":[],"relativePath":"api/quantum.md","filePath":"api/quantum.md","lastUpdated":null}'),d={name:"api/quantum.md"},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""};function j(T,s,v,E,C,w){const a=p("Badge");return r(),o("div",null,[s[27]||(s[27]=t("h1",{id:"quantum",tabindex:"-1"},[e("Quantum "),t("a",{class:"header-anchor",href:"#quantum","aria-label":'Permalink to "Quantum"'},"​")],-1)),t("details",u,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Tenet.Quantum",href:"#Tenet.Quantum"},[t("span",{class:"jlbinding"},"Tenet.Quantum")],-1)),s[1]||(s[1]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=i('
julia
Quantum

Tensor Network with a notion of "causality". This leads to the notion of sites and directionality (input/output).

Notes

source

',5))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Tenet.TensorNetwork-Tuple{Quantum}",href:"#Tenet.TensorNetwork-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[4]||(s[4]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=i('
julia
TensorNetwork(q::AbstractQuantum)

Returns the underlying TensorNetwork of an AbstractQuantum.

source

',3))]),t("details",k,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Base.adjoint-Tuple{Quantum}",href:"#Base.adjoint-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Base.adjoint")],-1)),s[7]||(s[7]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=i('
julia
adjoint(q::Quantum)

Returns the adjoint of a Quantum Tensor Network; i.e. the conjugate Tensor Network with the inputs and outputs swapped.

source

',3))]),t("details",h,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Tenet.sites",href:"#Tenet.sites"},[t("span",{class:"jlbinding"},"Tenet.sites")],-1)),s[10]||(s[10]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=i('
julia
sites(q::AbstractQuantum)

Returns the sites of a AbstractQuantum Tensor Network.

source

',3))]),t("details",g,[t("summary",null,[s[12]||(s[12]=t("a",{id:"Tenet.nsites",href:"#Tenet.nsites"},[t("span",{class:"jlbinding"},"Tenet.nsites")],-1)),s[13]||(s[13]=e()),n(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=i('
julia
nsites(q::AbstractQuantum)

Returns the number of sites of a AbstractQuantum Tensor Network.

source

',3))]),s[28]||(s[28]=i('

Missing docstring.

Missing docstring for Tenet.inds(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for Tenet.tensors(::Quantum; kwargs...). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for outputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for lanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for ninputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for noutputs. Check Documenter's build log for details.

Missing docstring.

Missing docstring for nlanes. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Socket. Check Documenter's build log for details.

',9)),t("details",b,[t("summary",null,[s[15]||(s[15]=t("a",{id:"Tenet.socket-Tuple{Quantum}",href:"#Tenet.socket-Tuple{Quantum}"},[t("span",{class:"jlbinding"},"Tenet.socket")],-1)),s[16]||(s[16]=e()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=i('
julia
socket(q::Quantum)

Returns the socket of a Quantum Tensor Network; i.e. whether it is a Scalar, State or Operator.

source

',3))]),t("details",m,[t("summary",null,[s[18]||(s[18]=t("a",{id:"Tenet.Scalar",href:"#Tenet.Scalar"},[t("span",{class:"jlbinding"},"Tenet.Scalar")],-1)),s[19]||(s[19]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=i('
julia
Scalar <: Socket

Socket representing a scalar; i.e. a Tensor Network with no open sites.

source

',3))]),t("details",f,[t("summary",null,[s[21]||(s[21]=t("a",{id:"Tenet.State",href:"#Tenet.State"},[t("span",{class:"jlbinding"},"Tenet.State")],-1)),s[22]||(s[22]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=i('
julia
State <: Socket

Socket representing a state; i.e. a Tensor Network with only input sites (or only output sites if dual = true).

source

',3))]),t("details",y,[t("summary",null,[s[24]||(s[24]=t("a",{id:"Tenet.Operator",href:"#Tenet.Operator"},[t("span",{class:"jlbinding"},"Tenet.Operator")],-1)),s[25]||(s[25]=e()),n(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=i('
julia
Operator <: Socket

Socket representing an operator; i.e. a Tensor Network with both input and output sites.

source

',3))]),s[29]||(s[29]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Missing docstring."),t("p",null,[e("Missing docstring for "),t("code",null,"Base.merge(::Quantum, ::Quantum...)"),e(". Check Documenter's build log for details.")])],-1))])}const q=l(d,[["render",j]]);export{Q as __pageData,q as default}; diff --git a/previews/PR262/assets/api_tensor.md.BhYHa3xI.js b/previews/PR262/assets/api_tensor.md.BhYHa3xI.js new file mode 100644 index 00000000..ee6de859 --- /dev/null +++ b/previews/PR262/assets/api_tensor.md.BhYHa3xI.js @@ -0,0 +1 @@ +import{_ as l,c as o,a5 as e,j as i,a as t,G as n,B as r,o as d}from"./chunks/framework.BqptwCCd.js";const T=JSON.parse('{"title":"Tensor","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensor.md","filePath":"api/tensor.md","lastUpdated":null}'),p={name:"api/tensor.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function b(E,s,f,y,m,j){const a=r("Badge");return d(),o("div",null,[s[15]||(s[15]=e('

Tensor

Missing docstring.

Missing docstring for Base.parent(::Tensor). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inds(::Tensor). Check Documenter's build log for details.

',3)),i("details",h,[i("summary",null,[s[0]||(s[0]=i("a",{id:"Base.size-Tuple{Tensor}",href:"#Base.size-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"Base.size")],-1)),s[1]||(s[1]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e('
julia
Base.size(::Tensor[, i])

Return the size of the underlying array or the dimension i (specified by Symbol or Integer).

source

',3))]),i("details",c,[i("summary",null,[s[3]||(s[3]=i("a",{id:"Graphs.LinAlg.contract-Tuple{Tensor, Tensor}",href:"#Graphs.LinAlg.contract-Tuple{Tensor, Tensor}"},[i("span",{class:"jlbinding"},"Graphs.LinAlg.contract")],-1)),s[4]||(s[4]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=e('
julia
contract(a::Tensor[, b::Tensor]; dims=nonunique([inds(a)..., inds(b)...]))

Perform tensor contraction operation.

source

',3))]),i("details",k,[i("summary",null,[s[6]||(s[6]=i("a",{id:"LinearAlgebra.svd-Tuple{Tensor}",href:"#LinearAlgebra.svd-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.svd")],-1)),s[7]||(s[7]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
LinearAlgebra.svd(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform SVD factorization on a tensor.

Keyword arguments

source

',5))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"LinearAlgebra.qr-Tuple{Tensor}",href:"#LinearAlgebra.qr-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.qr")],-1)),s[10]||(s[10]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=e('
julia
LinearAlgebra.qr(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform QR factorization on a tensor.

Keyword arguments

source

',5))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"LinearAlgebra.lu-Tuple{Tensor}",href:"#LinearAlgebra.lu-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.lu")],-1)),s[13]||(s[13]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=e('
julia
LinearAlgebra.lu(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform LU factorization on a tensor.

Keyword arguments

source

',5))])])}const F=l(p,[["render",b]]);export{T as __pageData,F as default}; diff --git a/previews/PR262/assets/api_tensor.md.BhYHa3xI.lean.js b/previews/PR262/assets/api_tensor.md.BhYHa3xI.lean.js new file mode 100644 index 00000000..ee6de859 --- /dev/null +++ b/previews/PR262/assets/api_tensor.md.BhYHa3xI.lean.js @@ -0,0 +1 @@ +import{_ as l,c as o,a5 as e,j as i,a as t,G as n,B as r,o as d}from"./chunks/framework.BqptwCCd.js";const T=JSON.parse('{"title":"Tensor","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensor.md","filePath":"api/tensor.md","lastUpdated":null}'),p={name:"api/tensor.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function b(E,s,f,y,m,j){const a=r("Badge");return d(),o("div",null,[s[15]||(s[15]=e('

Tensor

Missing docstring.

Missing docstring for Base.parent(::Tensor). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inds(::Tensor). Check Documenter's build log for details.

',3)),i("details",h,[i("summary",null,[s[0]||(s[0]=i("a",{id:"Base.size-Tuple{Tensor}",href:"#Base.size-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"Base.size")],-1)),s[1]||(s[1]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e('
julia
Base.size(::Tensor[, i])

Return the size of the underlying array or the dimension i (specified by Symbol or Integer).

source

',3))]),i("details",c,[i("summary",null,[s[3]||(s[3]=i("a",{id:"Graphs.LinAlg.contract-Tuple{Tensor, Tensor}",href:"#Graphs.LinAlg.contract-Tuple{Tensor, Tensor}"},[i("span",{class:"jlbinding"},"Graphs.LinAlg.contract")],-1)),s[4]||(s[4]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=e('
julia
contract(a::Tensor[, b::Tensor]; dims=nonunique([inds(a)..., inds(b)...]))

Perform tensor contraction operation.

source

',3))]),i("details",k,[i("summary",null,[s[6]||(s[6]=i("a",{id:"LinearAlgebra.svd-Tuple{Tensor}",href:"#LinearAlgebra.svd-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.svd")],-1)),s[7]||(s[7]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
LinearAlgebra.svd(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform SVD factorization on a tensor.

Keyword arguments

source

',5))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"LinearAlgebra.qr-Tuple{Tensor}",href:"#LinearAlgebra.qr-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.qr")],-1)),s[10]||(s[10]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=e('
julia
LinearAlgebra.qr(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform QR factorization on a tensor.

Keyword arguments

source

',5))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"LinearAlgebra.lu-Tuple{Tensor}",href:"#LinearAlgebra.lu-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.lu")],-1)),s[13]||(s[13]=t()),n(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=e('
julia
LinearAlgebra.lu(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform LU factorization on a tensor.

Keyword arguments

source

',5))])])}const F=l(p,[["render",b]]);export{T as __pageData,F as default}; diff --git a/previews/PR262/assets/api_tensor.md.DmbTPrJK.js b/previews/PR262/assets/api_tensor.md.DmbTPrJK.js deleted file mode 100644 index aecd8ffa..00000000 --- a/previews/PR262/assets/api_tensor.md.DmbTPrJK.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,c as o,a5 as e,j as i,a,G as n,B as r,o as d}from"./chunks/framework.BqptwCCd.js";const T=JSON.parse('{"title":"Tensor","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensor.md","filePath":"api/tensor.md","lastUpdated":null}'),p={name:"api/tensor.md"},h={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function b(f,s,E,y,m,j){const t=r("Badge");return d(),o("div",null,[s[15]||(s[15]=e('

Tensor

Missing docstring.

Missing docstring for Base.parent(::Tensor). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inds(::Tensor). Check Documenter's build log for details.

',3)),i("details",h,[i("summary",null,[s[0]||(s[0]=i("a",{id:"Base.size-Tuple{Tensor}",href:"#Base.size-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"Base.size")],-1)),s[1]||(s[1]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e('
julia
Base.size(::Tensor[, i])

Return the size of the underlying array or the dimension i (specified by Symbol or Integer).

source

',3))]),i("details",k,[i("summary",null,[s[3]||(s[3]=i("a",{id:"Graphs.LinAlg.contract-Tuple{Tensor, Tensor}",href:"#Graphs.LinAlg.contract-Tuple{Tensor, Tensor}"},[i("span",{class:"jlbinding"},"Graphs.LinAlg.contract")],-1)),s[4]||(s[4]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=e('
julia
contract(a::Tensor[, b::Tensor]; dims=nonunique([inds(a)..., inds(b)...]))

Perform tensor contraction operation.

source

',3))]),i("details",c,[i("summary",null,[s[6]||(s[6]=i("a",{id:"LinearAlgebra.svd-Tuple{Tensor}",href:"#LinearAlgebra.svd-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.svd")],-1)),s[7]||(s[7]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
LinearAlgebra.svd(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform SVD factorization on a tensor.

Keyword arguments

source

',5))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"LinearAlgebra.qr-Tuple{Tensor}",href:"#LinearAlgebra.qr-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.qr")],-1)),s[10]||(s[10]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=e('
julia
LinearAlgebra.qr(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform QR factorization on a tensor.

Keyword arguments

source

',5))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"LinearAlgebra.lu-Tuple{Tensor}",href:"#LinearAlgebra.lu-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.lu")],-1)),s[13]||(s[13]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=e('
julia
LinearAlgebra.lu(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform LU factorization on a tensor.

Keyword arguments

source

',5))])])}const F=l(p,[["render",b]]);export{T as __pageData,F as default}; diff --git a/previews/PR262/assets/api_tensor.md.DmbTPrJK.lean.js b/previews/PR262/assets/api_tensor.md.DmbTPrJK.lean.js deleted file mode 100644 index aecd8ffa..00000000 --- a/previews/PR262/assets/api_tensor.md.DmbTPrJK.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,c as o,a5 as e,j as i,a,G as n,B as r,o as d}from"./chunks/framework.BqptwCCd.js";const T=JSON.parse('{"title":"Tensor","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensor.md","filePath":"api/tensor.md","lastUpdated":null}'),p={name:"api/tensor.md"},h={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""};function b(f,s,E,y,m,j){const t=r("Badge");return d(),o("div",null,[s[15]||(s[15]=e('

Tensor

Missing docstring.

Missing docstring for Base.parent(::Tensor). Check Documenter's build log for details.

Missing docstring.

Missing docstring for inds(::Tensor). Check Documenter's build log for details.

',3)),i("details",h,[i("summary",null,[s[0]||(s[0]=i("a",{id:"Base.size-Tuple{Tensor}",href:"#Base.size-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"Base.size")],-1)),s[1]||(s[1]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=e('
julia
Base.size(::Tensor[, i])

Return the size of the underlying array or the dimension i (specified by Symbol or Integer).

source

',3))]),i("details",k,[i("summary",null,[s[3]||(s[3]=i("a",{id:"Graphs.LinAlg.contract-Tuple{Tensor, Tensor}",href:"#Graphs.LinAlg.contract-Tuple{Tensor, Tensor}"},[i("span",{class:"jlbinding"},"Graphs.LinAlg.contract")],-1)),s[4]||(s[4]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=e('
julia
contract(a::Tensor[, b::Tensor]; dims=nonunique([inds(a)..., inds(b)...]))

Perform tensor contraction operation.

source

',3))]),i("details",c,[i("summary",null,[s[6]||(s[6]=i("a",{id:"LinearAlgebra.svd-Tuple{Tensor}",href:"#LinearAlgebra.svd-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.svd")],-1)),s[7]||(s[7]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=e('
julia
LinearAlgebra.svd(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform SVD factorization on a tensor.

Keyword arguments

source

',5))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"LinearAlgebra.qr-Tuple{Tensor}",href:"#LinearAlgebra.qr-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.qr")],-1)),s[10]||(s[10]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=e('
julia
LinearAlgebra.qr(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform QR factorization on a tensor.

Keyword arguments

source

',5))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"LinearAlgebra.lu-Tuple{Tensor}",href:"#LinearAlgebra.lu-Tuple{Tensor}"},[i("span",{class:"jlbinding"},"LinearAlgebra.lu")],-1)),s[13]||(s[13]=a()),n(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=e('
julia
LinearAlgebra.lu(tensor::Tensor; left_inds, right_inds, virtualind, kwargs...)

Perform LU factorization on a tensor.

Keyword arguments

source

',5))])])}const F=l(p,[["render",b]]);export{T as __pageData,F as default}; diff --git a/previews/PR262/assets/api_tensornetwork.md.DUbIDWMl.js b/previews/PR262/assets/api_tensornetwork.md.gc29p5Pz.js similarity index 94% rename from previews/PR262/assets/api_tensornetwork.md.DUbIDWMl.js rename to previews/PR262/assets/api_tensornetwork.md.gc29p5Pz.js index 1a003df8..7a3fe22e 100644 --- a/previews/PR262/assets/api_tensornetwork.md.DUbIDWMl.js +++ b/previews/PR262/assets/api_tensornetwork.md.gc29p5Pz.js @@ -1,7 +1,7 @@ -import{_ as l,c as o,j as e,a as i,G as a,a5 as n,B as r,o as p}from"./chunks/framework.BqptwCCd.js";const M=JSON.parse('{"title":"TensorNetwork","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensornetwork.md","filePath":"api/tensornetwork.md","lastUpdated":null}'),d={name:"api/tensornetwork.md"},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""};function x(L,s,R,q,P,O){const t=r("Badge");return p(),o("div",null,[s[60]||(s[60]=e("h1",{id:"tensornetwork",tabindex:"-1"},[i("TensorNetwork "),e("a",{class:"header-anchor",href:"#tensornetwork","aria-label":'Permalink to "TensorNetwork"'},"​")],-1)),e("details",k,[e("summary",null,[s[0]||(s[0]=e("a",{id:"Tenet.TensorNetwork",href:"#Tenet.TensorNetwork"},[e("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[1]||(s[1]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=n('
julia
TensorNetwork

Graph of interconnected tensors, representing a multilinear equation. Graph vertices represent tensors and graph edges, tensor indices.

source

',3))]),s[61]||(s[61]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"inds(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",h,[e("summary",null,[s[3]||(s[3]=e("a",{id:"Base.size-Tuple{TensorNetwork}",href:"#Base.size-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.size")],-1)),s[4]||(s[4]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
size(tn::AbstractTensorNetwork)
-size(tn::AbstractTensorNetwork, index)

Return a mapping from indices to their dimensionalities.

If index is set, return the dimensionality of index. This is equivalent to size(tn)[index].

source

`,4))]),s[62]||(s[62]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"tensors(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",c,[e("summary",null,[s[6]||(s[6]=e("a",{id:"Base.push!-Tuple{TensorNetwork, Tensor}",href:"#Base.push!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.push!")],-1)),s[7]||(s[7]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=n('
julia
push!(tn::AbstractTensorNetwork, tensor::Tensor)

Add a new tensor to the Tensor Network.

See also: append!, pop!.

source

',4))]),e("details",g,[e("summary",null,[s[9]||(s[9]=e("a",{id:"Base.pop!-Tuple{TensorNetwork, Tensor}",href:"#Base.pop!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.pop!")],-1)),s[10]||(s[10]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=n(`
julia
pop!(tn::TensorNetwork, tensor::Tensor)
-pop!(tn::TensorNetwork, i::Union{Symbol,AbstractVecOrTuple{Symbol}})

Remove a tensor from the Tensor Network and returns it. If a Tensor is passed, then the first tensor satisfies egality (i.e. or ===) will be removed. If a Symbol or a list of Symbols is passed, then remove and return the tensors that contain all the indices.

See also: push!, delete!.

source

`,4))]),e("details",u,[e("summary",null,[s[12]||(s[12]=e("a",{id:'Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}',href:'#Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}'},[e("span",{class:"jlbinding"},"Base.append!")],-1)),s[13]||(s[13]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=n('
julia
append!(tn::TensorNetwork, tensors::AbstractVecOrTuple{<:Tensor})

Add a list of tensors to a TensorNetwork.

See also: push!, merge!.

source

',4))]),e("details",b,[e("summary",null,[s[15]||(s[15]=e("a",{id:"Base.merge!-Tuple{TensorNetwork, TensorNetwork}",href:"#Base.merge!-Tuple{TensorNetwork, TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.merge!")],-1)),s[16]||(s[16]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=n(`
julia
merge!(self::TensorNetwork, others::TensorNetwork...)
-merge(self::TensorNetwork, others::TensorNetwork...)

Fuse various TensorNetworks into one.

See also: append!.

source

`,4))]),e("details",y,[e("summary",null,[s[18]||(s[18]=e("a",{id:"Base.delete!-Tuple{TensorNetwork, Any}",href:"#Base.delete!-Tuple{TensorNetwork, Any}"},[e("span",{class:"jlbinding"},"Base.delete!")],-1)),s[19]||(s[19]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=n('
julia
delete!(tn::TensorNetwork, x)

Like pop! but return the TensorNetwork instead.

source

',3))]),e("details",T,[e("summary",null,[s[21]||(s[21]=e("a",{id:"Base.replace!",href:"#Base.replace!"},[e("span",{class:"jlbinding"},"Base.replace!")],-1)),s[22]||(s[22]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=n(`
julia
replace!(tn::AbstractTensorNetwork, old => new...)
-replace(tn::AbstractTensorNetwork, old => new...)

Replace the element in old with the one in new. Depending on the types of old and new, the following behaviour is expected:

source

`,4))]),e("details",f,[e("summary",null,[s[24]||(s[24]=e("a",{id:"Base.selectdim",href:"#Base.selectdim"},[e("span",{class:"jlbinding"},"Base.selectdim")],-1)),s[25]||(s[25]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=n('
julia
selectdim(tn::AbstractTensorNetwork, index::Symbol, i)

Return a copy of the AbstractTensorNetwork where index has been projected to dimension i.

See also: view, slice!.

source

',4))]),e("details",E,[e("summary",null,[s[27]||(s[27]=e("a",{id:"Tenet.slice!",href:"#Tenet.slice!"},[e("span",{class:"jlbinding"},"Tenet.slice!")],-1)),s[28]||(s[28]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=n('
julia
slice!(tn::AbstractTensorNetwork, index::Symbol, i)

In-place projection of index on dimension i.

See also: selectdim, view.

source

',4))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"Base.view-Tuple{TensorNetwork}",href:"#Base.view-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.view")],-1)),s[31]||(s[31]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=n('
julia
view(tn::AbstractTensorNetwork, index => i...)

Return a copy of the AbstractTensorNetwork where each index has been projected to dimension i. It is equivalent to a recursive call of selectdim.

See also: selectdim, slice!.

source

',4))]),e("details",j,[e("summary",null,[s[33]||(s[33]=e("a",{id:"Base.copy-Tuple{TensorNetwork}",href:"#Base.copy-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.copy")],-1)),s[34]||(s[34]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[35]=n('
julia
copy(tn::TensorNetwork)

Return a shallow copy of a TensorNetwork.

source

',3))]),s[63]||(s[63]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Base.rand(::Type{TensorNetwork}, n::Integer, regularity::Integer)"),i(". Check Documenter's build log for details.")])],-1)),s[64]||(s[64]=e("h2",{id:"transformations",tabindex:"-1"},[i("Transformations "),e("a",{class:"header-anchor",href:"#transformations","aria-label":'Permalink to "Transformations"'},"​")],-1)),e("details",w,[e("summary",null,[s[36]||(s[36]=e("a",{id:"Tenet.transform",href:"#Tenet.transform"},[e("span",{class:"jlbinding"},"Tenet.transform")],-1)),s[37]||(s[37]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=n(`
julia
transform(tn::TensorNetwork, config::Transformation)
-transform(tn::TensorNetwork, configs)

Return a new TensorNetwork where some Transformation has been performed into it.

See also: transform!.

source

`,4))]),e("details",v,[e("summary",null,[s[39]||(s[39]=e("a",{id:"Tenet.transform!",href:"#Tenet.transform!"},[e("span",{class:"jlbinding"},"Tenet.transform!")],-1)),s[40]||(s[40]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=n(`
julia
transform!(tn::TensorNetwork, config::Transformation)
-transform!(tn::TensorNetwork, configs)

In-place version of transform.

source

`,3))]),e("details",F,[e("summary",null,[s[42]||(s[42]=e("a",{id:"Tenet.HyperFlatten",href:"#Tenet.HyperFlatten"},[e("span",{class:"jlbinding"},"Tenet.HyperFlatten")],-1)),s[43]||(s[43]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=n('
julia
HyperFlatten <: Transformation

Convert hyperindices to COPY-tensors, represented by DeltaArrays. This transformation is always used by default when visualizing a TensorNetwork with plot.

See also: HyperGroup.

source

',4))]),e("details",C,[e("summary",null,[s[45]||(s[45]=e("a",{id:"Tenet.HyperGroup",href:"#Tenet.HyperGroup"},[e("span",{class:"jlbinding"},"Tenet.HyperGroup")],-1)),s[46]||(s[46]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=n('
julia
HyperGroup <: Transformation

Convert COPY-tensors, represented by DeltaArrays, to hyperindices.

See also: HyperFlatten.

source

',4))]),e("details",B,[e("summary",null,[s[48]||(s[48]=e("a",{id:"Tenet.ContractSimplification",href:"#Tenet.ContractSimplification"},[e("span",{class:"jlbinding"},"Tenet.ContractSimplification")],-1)),s[49]||(s[49]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=n('
julia
ContractSimplification <: Transformation

Preemptively contract tensors whose result doesn't increase in size.

source

',3))]),e("details",N,[e("summary",null,[s[51]||(s[51]=e("a",{id:"Tenet.DiagonalReduction",href:"#Tenet.DiagonalReduction"},[e("span",{class:"jlbinding"},"Tenet.DiagonalReduction")],-1)),s[52]||(s[52]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=n('
julia
DiagonalReduction <: Transformation

Reduce the dimension of a Tensor in a TensorNetwork when it has a pair of indices that fulfil a diagonal structure.

Keyword Arguments

source

',5))]),e("details",A,[e("summary",null,[s[54]||(s[54]=e("a",{id:"Tenet.AntiDiagonalGauging",href:"#Tenet.AntiDiagonalGauging"},[e("span",{class:"jlbinding"},"Tenet.AntiDiagonalGauging")],-1)),s[55]||(s[55]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=n('
julia
AntiDiagonalGauging <: Transformation

Reverse the order of tensor indices that fulfill the anti-diagonal condition. While this transformation doesn't directly enhance computational efficiency, it sets up the TensorNetwork for other operations that do.

Keyword Arguments

source

',5))]),e("details",D,[e("summary",null,[s[57]||(s[57]=e("a",{id:"Tenet.Truncate",href:"#Tenet.Truncate"},[e("span",{class:"jlbinding"},"Tenet.Truncate")],-1)),s[58]||(s[58]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=n('
julia
Truncate <: Transformation

Truncate the dimension of a Tensor in a TensorNetwork when it contains columns with all elements smaller than atol.

Keyword Arguments

source

',5))]),s[65]||(s[65]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Tenet.SplitSimplificationd"),i(". Check Documenter's build log for details.")])],-1))])}const V=l(d,[["render",x]]);export{M as __pageData,V as default}; +import{_ as l,c as o,j as e,a as i,G as a,a5 as n,B as r,o as p}from"./chunks/framework.BqptwCCd.js";const M=JSON.parse('{"title":"TensorNetwork","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensornetwork.md","filePath":"api/tensornetwork.md","lastUpdated":null}'),d={name:"api/tensornetwork.md"},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""};function x(L,s,R,q,P,O){const t=r("Badge");return p(),o("div",null,[s[60]||(s[60]=e("h1",{id:"tensornetwork",tabindex:"-1"},[i("TensorNetwork "),e("a",{class:"header-anchor",href:"#tensornetwork","aria-label":'Permalink to "TensorNetwork"'},"​")],-1)),e("details",k,[e("summary",null,[s[0]||(s[0]=e("a",{id:"Tenet.TensorNetwork",href:"#Tenet.TensorNetwork"},[e("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[1]||(s[1]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=n('
julia
TensorNetwork

Graph of interconnected tensors, representing a multilinear equation. Graph vertices represent tensors and graph edges, tensor indices.

source

',3))]),s[61]||(s[61]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"inds(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",h,[e("summary",null,[s[3]||(s[3]=e("a",{id:"Base.size-Tuple{TensorNetwork}",href:"#Base.size-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.size")],-1)),s[4]||(s[4]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
size(tn::AbstractTensorNetwork)
+size(tn::AbstractTensorNetwork, index)

Return a mapping from indices to their dimensionalities.

If index is set, return the dimensionality of index. This is equivalent to size(tn)[index].

source

`,4))]),s[62]||(s[62]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"tensors(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",c,[e("summary",null,[s[6]||(s[6]=e("a",{id:"Base.push!-Tuple{TensorNetwork, Tensor}",href:"#Base.push!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.push!")],-1)),s[7]||(s[7]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=n('
julia
push!(tn::AbstractTensorNetwork, tensor::Tensor)

Add a new tensor to the Tensor Network.

See also: append!, pop!.

source

',4))]),e("details",g,[e("summary",null,[s[9]||(s[9]=e("a",{id:"Base.pop!-Tuple{TensorNetwork, Tensor}",href:"#Base.pop!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.pop!")],-1)),s[10]||(s[10]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=n(`
julia
pop!(tn::TensorNetwork, tensor::Tensor)
+pop!(tn::TensorNetwork, i::Union{Symbol,AbstractVecOrTuple{Symbol}})

Remove a tensor from the Tensor Network and returns it. If a Tensor is passed, then the first tensor satisfies egality (i.e. or ===) will be removed. If a Symbol or a list of Symbols is passed, then remove and return the tensors that contain all the indices.

See also: push!, delete!.

source

`,4))]),e("details",u,[e("summary",null,[s[12]||(s[12]=e("a",{id:'Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}',href:'#Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}'},[e("span",{class:"jlbinding"},"Base.append!")],-1)),s[13]||(s[13]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=n('
julia
append!(tn::TensorNetwork, tensors::AbstractVecOrTuple{<:Tensor})

Add a list of tensors to a TensorNetwork.

See also: push!, merge!.

source

',4))]),e("details",b,[e("summary",null,[s[15]||(s[15]=e("a",{id:"Base.merge!-Tuple{TensorNetwork, TensorNetwork}",href:"#Base.merge!-Tuple{TensorNetwork, TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.merge!")],-1)),s[16]||(s[16]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=n(`
julia
merge!(self::TensorNetwork, others::TensorNetwork...)
+merge(self::TensorNetwork, others::TensorNetwork...)

Fuse various TensorNetworks into one.

See also: append!.

source

`,4))]),e("details",y,[e("summary",null,[s[18]||(s[18]=e("a",{id:"Base.delete!-Tuple{TensorNetwork, Any}",href:"#Base.delete!-Tuple{TensorNetwork, Any}"},[e("span",{class:"jlbinding"},"Base.delete!")],-1)),s[19]||(s[19]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=n('
julia
delete!(tn::TensorNetwork, x)

Like pop! but return the TensorNetwork instead.

source

',3))]),e("details",T,[e("summary",null,[s[21]||(s[21]=e("a",{id:"Base.replace!",href:"#Base.replace!"},[e("span",{class:"jlbinding"},"Base.replace!")],-1)),s[22]||(s[22]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=n(`
julia
replace!(tn::AbstractTensorNetwork, old => new...)
+replace(tn::AbstractTensorNetwork, old => new...)

Replace the element in old with the one in new. Depending on the types of old and new, the following behaviour is expected:

source

`,4))]),e("details",f,[e("summary",null,[s[24]||(s[24]=e("a",{id:"Base.selectdim",href:"#Base.selectdim"},[e("span",{class:"jlbinding"},"Base.selectdim")],-1)),s[25]||(s[25]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=n('
julia
selectdim(tn::AbstractTensorNetwork, index::Symbol, i)

Return a copy of the AbstractTensorNetwork where index has been projected to dimension i.

See also: view, slice!.

source

',4))]),e("details",E,[e("summary",null,[s[27]||(s[27]=e("a",{id:"Tenet.slice!",href:"#Tenet.slice!"},[e("span",{class:"jlbinding"},"Tenet.slice!")],-1)),s[28]||(s[28]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=n('
julia
slice!(tn::AbstractTensorNetwork, index::Symbol, i)

In-place projection of index on dimension i.

See also: selectdim, view.

source

',4))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"Base.view-Tuple{TensorNetwork}",href:"#Base.view-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.view")],-1)),s[31]||(s[31]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=n('
julia
view(tn::AbstractTensorNetwork, index => i...)

Return a copy of the AbstractTensorNetwork where each index has been projected to dimension i. It is equivalent to a recursive call of selectdim.

See also: selectdim, slice!.

source

',4))]),e("details",j,[e("summary",null,[s[33]||(s[33]=e("a",{id:"Base.copy-Tuple{TensorNetwork}",href:"#Base.copy-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.copy")],-1)),s[34]||(s[34]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[35]=n('
julia
copy(tn::TensorNetwork)

Return a shallow copy of a TensorNetwork.

source

',3))]),s[63]||(s[63]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Base.rand(::Type{TensorNetwork}, n::Integer, regularity::Integer)"),i(". Check Documenter's build log for details.")])],-1)),s[64]||(s[64]=e("h2",{id:"transformations",tabindex:"-1"},[i("Transformations "),e("a",{class:"header-anchor",href:"#transformations","aria-label":'Permalink to "Transformations"'},"​")],-1)),e("details",w,[e("summary",null,[s[36]||(s[36]=e("a",{id:"Tenet.transform",href:"#Tenet.transform"},[e("span",{class:"jlbinding"},"Tenet.transform")],-1)),s[37]||(s[37]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=n(`
julia
transform(tn::TensorNetwork, config::Transformation)
+transform(tn::TensorNetwork, configs)

Return a new TensorNetwork where some Transformation has been performed into it.

See also: transform!.

source

`,4))]),e("details",v,[e("summary",null,[s[39]||(s[39]=e("a",{id:"Tenet.transform!",href:"#Tenet.transform!"},[e("span",{class:"jlbinding"},"Tenet.transform!")],-1)),s[40]||(s[40]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=n(`
julia
transform!(tn::TensorNetwork, config::Transformation)
+transform!(tn::TensorNetwork, configs)

In-place version of transform.

source

`,3))]),e("details",F,[e("summary",null,[s[42]||(s[42]=e("a",{id:"Tenet.HyperFlatten",href:"#Tenet.HyperFlatten"},[e("span",{class:"jlbinding"},"Tenet.HyperFlatten")],-1)),s[43]||(s[43]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=n('
julia
HyperFlatten <: Transformation

Convert hyperindices to COPY-tensors, represented by DeltaArrays. This transformation is always used by default when visualizing a TensorNetwork with plot.

See also: HyperGroup.

source

',4))]),e("details",C,[e("summary",null,[s[45]||(s[45]=e("a",{id:"Tenet.HyperGroup",href:"#Tenet.HyperGroup"},[e("span",{class:"jlbinding"},"Tenet.HyperGroup")],-1)),s[46]||(s[46]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=n('
julia
HyperGroup <: Transformation

Convert COPY-tensors, represented by DeltaArrays, to hyperindices.

See also: HyperFlatten.

source

',4))]),e("details",B,[e("summary",null,[s[48]||(s[48]=e("a",{id:"Tenet.ContractSimplification",href:"#Tenet.ContractSimplification"},[e("span",{class:"jlbinding"},"Tenet.ContractSimplification")],-1)),s[49]||(s[49]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=n('
julia
ContractSimplification <: Transformation

Preemptively contract tensors whose result doesn't increase in size.

source

',3))]),e("details",N,[e("summary",null,[s[51]||(s[51]=e("a",{id:"Tenet.DiagonalReduction",href:"#Tenet.DiagonalReduction"},[e("span",{class:"jlbinding"},"Tenet.DiagonalReduction")],-1)),s[52]||(s[52]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=n('
julia
DiagonalReduction <: Transformation

Reduce the dimension of a Tensor in a TensorNetwork when it has a pair of indices that fulfil a diagonal structure.

Keyword Arguments

source

',5))]),e("details",A,[e("summary",null,[s[54]||(s[54]=e("a",{id:"Tenet.AntiDiagonalGauging",href:"#Tenet.AntiDiagonalGauging"},[e("span",{class:"jlbinding"},"Tenet.AntiDiagonalGauging")],-1)),s[55]||(s[55]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=n('
julia
AntiDiagonalGauging <: Transformation

Reverse the order of tensor indices that fulfill the anti-diagonal condition. While this transformation doesn't directly enhance computational efficiency, it sets up the TensorNetwork for other operations that do.

Keyword Arguments

source

',5))]),e("details",D,[e("summary",null,[s[57]||(s[57]=e("a",{id:"Tenet.Truncate",href:"#Tenet.Truncate"},[e("span",{class:"jlbinding"},"Tenet.Truncate")],-1)),s[58]||(s[58]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=n('
julia
Truncate <: Transformation

Truncate the dimension of a Tensor in a TensorNetwork when it contains columns with all elements smaller than atol.

Keyword Arguments

source

',5))]),s[65]||(s[65]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Tenet.SplitSimplificationd"),i(". Check Documenter's build log for details.")])],-1))])}const V=l(d,[["render",x]]);export{M as __pageData,V as default}; diff --git a/previews/PR262/assets/api_tensornetwork.md.DUbIDWMl.lean.js b/previews/PR262/assets/api_tensornetwork.md.gc29p5Pz.lean.js similarity index 94% rename from previews/PR262/assets/api_tensornetwork.md.DUbIDWMl.lean.js rename to previews/PR262/assets/api_tensornetwork.md.gc29p5Pz.lean.js index 1a003df8..7a3fe22e 100644 --- a/previews/PR262/assets/api_tensornetwork.md.DUbIDWMl.lean.js +++ b/previews/PR262/assets/api_tensornetwork.md.gc29p5Pz.lean.js @@ -1,7 +1,7 @@ -import{_ as l,c as o,j as e,a as i,G as a,a5 as n,B as r,o as p}from"./chunks/framework.BqptwCCd.js";const M=JSON.parse('{"title":"TensorNetwork","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensornetwork.md","filePath":"api/tensornetwork.md","lastUpdated":null}'),d={name:"api/tensornetwork.md"},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""};function x(L,s,R,q,P,O){const t=r("Badge");return p(),o("div",null,[s[60]||(s[60]=e("h1",{id:"tensornetwork",tabindex:"-1"},[i("TensorNetwork "),e("a",{class:"header-anchor",href:"#tensornetwork","aria-label":'Permalink to "TensorNetwork"'},"​")],-1)),e("details",k,[e("summary",null,[s[0]||(s[0]=e("a",{id:"Tenet.TensorNetwork",href:"#Tenet.TensorNetwork"},[e("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[1]||(s[1]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=n('
julia
TensorNetwork

Graph of interconnected tensors, representing a multilinear equation. Graph vertices represent tensors and graph edges, tensor indices.

source

',3))]),s[61]||(s[61]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"inds(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",h,[e("summary",null,[s[3]||(s[3]=e("a",{id:"Base.size-Tuple{TensorNetwork}",href:"#Base.size-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.size")],-1)),s[4]||(s[4]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
size(tn::AbstractTensorNetwork)
-size(tn::AbstractTensorNetwork, index)

Return a mapping from indices to their dimensionalities.

If index is set, return the dimensionality of index. This is equivalent to size(tn)[index].

source

`,4))]),s[62]||(s[62]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"tensors(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",c,[e("summary",null,[s[6]||(s[6]=e("a",{id:"Base.push!-Tuple{TensorNetwork, Tensor}",href:"#Base.push!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.push!")],-1)),s[7]||(s[7]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=n('
julia
push!(tn::AbstractTensorNetwork, tensor::Tensor)

Add a new tensor to the Tensor Network.

See also: append!, pop!.

source

',4))]),e("details",g,[e("summary",null,[s[9]||(s[9]=e("a",{id:"Base.pop!-Tuple{TensorNetwork, Tensor}",href:"#Base.pop!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.pop!")],-1)),s[10]||(s[10]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=n(`
julia
pop!(tn::TensorNetwork, tensor::Tensor)
-pop!(tn::TensorNetwork, i::Union{Symbol,AbstractVecOrTuple{Symbol}})

Remove a tensor from the Tensor Network and returns it. If a Tensor is passed, then the first tensor satisfies egality (i.e. or ===) will be removed. If a Symbol or a list of Symbols is passed, then remove and return the tensors that contain all the indices.

See also: push!, delete!.

source

`,4))]),e("details",u,[e("summary",null,[s[12]||(s[12]=e("a",{id:'Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}',href:'#Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}'},[e("span",{class:"jlbinding"},"Base.append!")],-1)),s[13]||(s[13]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=n('
julia
append!(tn::TensorNetwork, tensors::AbstractVecOrTuple{<:Tensor})

Add a list of tensors to a TensorNetwork.

See also: push!, merge!.

source

',4))]),e("details",b,[e("summary",null,[s[15]||(s[15]=e("a",{id:"Base.merge!-Tuple{TensorNetwork, TensorNetwork}",href:"#Base.merge!-Tuple{TensorNetwork, TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.merge!")],-1)),s[16]||(s[16]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=n(`
julia
merge!(self::TensorNetwork, others::TensorNetwork...)
-merge(self::TensorNetwork, others::TensorNetwork...)

Fuse various TensorNetworks into one.

See also: append!.

source

`,4))]),e("details",y,[e("summary",null,[s[18]||(s[18]=e("a",{id:"Base.delete!-Tuple{TensorNetwork, Any}",href:"#Base.delete!-Tuple{TensorNetwork, Any}"},[e("span",{class:"jlbinding"},"Base.delete!")],-1)),s[19]||(s[19]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=n('
julia
delete!(tn::TensorNetwork, x)

Like pop! but return the TensorNetwork instead.

source

',3))]),e("details",T,[e("summary",null,[s[21]||(s[21]=e("a",{id:"Base.replace!",href:"#Base.replace!"},[e("span",{class:"jlbinding"},"Base.replace!")],-1)),s[22]||(s[22]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=n(`
julia
replace!(tn::AbstractTensorNetwork, old => new...)
-replace(tn::AbstractTensorNetwork, old => new...)

Replace the element in old with the one in new. Depending on the types of old and new, the following behaviour is expected:

source

`,4))]),e("details",f,[e("summary",null,[s[24]||(s[24]=e("a",{id:"Base.selectdim",href:"#Base.selectdim"},[e("span",{class:"jlbinding"},"Base.selectdim")],-1)),s[25]||(s[25]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=n('
julia
selectdim(tn::AbstractTensorNetwork, index::Symbol, i)

Return a copy of the AbstractTensorNetwork where index has been projected to dimension i.

See also: view, slice!.

source

',4))]),e("details",E,[e("summary",null,[s[27]||(s[27]=e("a",{id:"Tenet.slice!",href:"#Tenet.slice!"},[e("span",{class:"jlbinding"},"Tenet.slice!")],-1)),s[28]||(s[28]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=n('
julia
slice!(tn::AbstractTensorNetwork, index::Symbol, i)

In-place projection of index on dimension i.

See also: selectdim, view.

source

',4))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"Base.view-Tuple{TensorNetwork}",href:"#Base.view-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.view")],-1)),s[31]||(s[31]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=n('
julia
view(tn::AbstractTensorNetwork, index => i...)

Return a copy of the AbstractTensorNetwork where each index has been projected to dimension i. It is equivalent to a recursive call of selectdim.

See also: selectdim, slice!.

source

',4))]),e("details",j,[e("summary",null,[s[33]||(s[33]=e("a",{id:"Base.copy-Tuple{TensorNetwork}",href:"#Base.copy-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.copy")],-1)),s[34]||(s[34]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[35]=n('
julia
copy(tn::TensorNetwork)

Return a shallow copy of a TensorNetwork.

source

',3))]),s[63]||(s[63]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Base.rand(::Type{TensorNetwork}, n::Integer, regularity::Integer)"),i(". Check Documenter's build log for details.")])],-1)),s[64]||(s[64]=e("h2",{id:"transformations",tabindex:"-1"},[i("Transformations "),e("a",{class:"header-anchor",href:"#transformations","aria-label":'Permalink to "Transformations"'},"​")],-1)),e("details",w,[e("summary",null,[s[36]||(s[36]=e("a",{id:"Tenet.transform",href:"#Tenet.transform"},[e("span",{class:"jlbinding"},"Tenet.transform")],-1)),s[37]||(s[37]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=n(`
julia
transform(tn::TensorNetwork, config::Transformation)
-transform(tn::TensorNetwork, configs)

Return a new TensorNetwork where some Transformation has been performed into it.

See also: transform!.

source

`,4))]),e("details",v,[e("summary",null,[s[39]||(s[39]=e("a",{id:"Tenet.transform!",href:"#Tenet.transform!"},[e("span",{class:"jlbinding"},"Tenet.transform!")],-1)),s[40]||(s[40]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=n(`
julia
transform!(tn::TensorNetwork, config::Transformation)
-transform!(tn::TensorNetwork, configs)

In-place version of transform.

source

`,3))]),e("details",F,[e("summary",null,[s[42]||(s[42]=e("a",{id:"Tenet.HyperFlatten",href:"#Tenet.HyperFlatten"},[e("span",{class:"jlbinding"},"Tenet.HyperFlatten")],-1)),s[43]||(s[43]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=n('
julia
HyperFlatten <: Transformation

Convert hyperindices to COPY-tensors, represented by DeltaArrays. This transformation is always used by default when visualizing a TensorNetwork with plot.

See also: HyperGroup.

source

',4))]),e("details",C,[e("summary",null,[s[45]||(s[45]=e("a",{id:"Tenet.HyperGroup",href:"#Tenet.HyperGroup"},[e("span",{class:"jlbinding"},"Tenet.HyperGroup")],-1)),s[46]||(s[46]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=n('
julia
HyperGroup <: Transformation

Convert COPY-tensors, represented by DeltaArrays, to hyperindices.

See also: HyperFlatten.

source

',4))]),e("details",B,[e("summary",null,[s[48]||(s[48]=e("a",{id:"Tenet.ContractSimplification",href:"#Tenet.ContractSimplification"},[e("span",{class:"jlbinding"},"Tenet.ContractSimplification")],-1)),s[49]||(s[49]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=n('
julia
ContractSimplification <: Transformation

Preemptively contract tensors whose result doesn't increase in size.

source

',3))]),e("details",N,[e("summary",null,[s[51]||(s[51]=e("a",{id:"Tenet.DiagonalReduction",href:"#Tenet.DiagonalReduction"},[e("span",{class:"jlbinding"},"Tenet.DiagonalReduction")],-1)),s[52]||(s[52]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=n('
julia
DiagonalReduction <: Transformation

Reduce the dimension of a Tensor in a TensorNetwork when it has a pair of indices that fulfil a diagonal structure.

Keyword Arguments

source

',5))]),e("details",A,[e("summary",null,[s[54]||(s[54]=e("a",{id:"Tenet.AntiDiagonalGauging",href:"#Tenet.AntiDiagonalGauging"},[e("span",{class:"jlbinding"},"Tenet.AntiDiagonalGauging")],-1)),s[55]||(s[55]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=n('
julia
AntiDiagonalGauging <: Transformation

Reverse the order of tensor indices that fulfill the anti-diagonal condition. While this transformation doesn't directly enhance computational efficiency, it sets up the TensorNetwork for other operations that do.

Keyword Arguments

source

',5))]),e("details",D,[e("summary",null,[s[57]||(s[57]=e("a",{id:"Tenet.Truncate",href:"#Tenet.Truncate"},[e("span",{class:"jlbinding"},"Tenet.Truncate")],-1)),s[58]||(s[58]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=n('
julia
Truncate <: Transformation

Truncate the dimension of a Tensor in a TensorNetwork when it contains columns with all elements smaller than atol.

Keyword Arguments

source

',5))]),s[65]||(s[65]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Tenet.SplitSimplificationd"),i(". Check Documenter's build log for details.")])],-1))])}const V=l(d,[["render",x]]);export{M as __pageData,V as default}; +import{_ as l,c as o,j as e,a as i,G as a,a5 as n,B as r,o as p}from"./chunks/framework.BqptwCCd.js";const M=JSON.parse('{"title":"TensorNetwork","description":"","frontmatter":{},"headers":[],"relativePath":"api/tensornetwork.md","filePath":"api/tensornetwork.md","lastUpdated":null}'),d={name:"api/tensornetwork.md"},k={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""};function x(L,s,R,q,P,O){const t=r("Badge");return p(),o("div",null,[s[60]||(s[60]=e("h1",{id:"tensornetwork",tabindex:"-1"},[i("TensorNetwork "),e("a",{class:"header-anchor",href:"#tensornetwork","aria-label":'Permalink to "TensorNetwork"'},"​")],-1)),e("details",k,[e("summary",null,[s[0]||(s[0]=e("a",{id:"Tenet.TensorNetwork",href:"#Tenet.TensorNetwork"},[e("span",{class:"jlbinding"},"Tenet.TensorNetwork")],-1)),s[1]||(s[1]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=n('
julia
TensorNetwork

Graph of interconnected tensors, representing a multilinear equation. Graph vertices represent tensors and graph edges, tensor indices.

source

',3))]),s[61]||(s[61]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"inds(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",h,[e("summary",null,[s[3]||(s[3]=e("a",{id:"Base.size-Tuple{TensorNetwork}",href:"#Base.size-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.size")],-1)),s[4]||(s[4]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=n(`
julia
size(tn::AbstractTensorNetwork)
+size(tn::AbstractTensorNetwork, index)

Return a mapping from indices to their dimensionalities.

If index is set, return the dimensionality of index. This is equivalent to size(tn)[index].

source

`,4))]),s[62]||(s[62]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"tensors(::Tenet.TensorNetwork)"),i(". Check Documenter's build log for details.")])],-1)),e("details",c,[e("summary",null,[s[6]||(s[6]=e("a",{id:"Base.push!-Tuple{TensorNetwork, Tensor}",href:"#Base.push!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.push!")],-1)),s[7]||(s[7]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=n('
julia
push!(tn::AbstractTensorNetwork, tensor::Tensor)

Add a new tensor to the Tensor Network.

See also: append!, pop!.

source

',4))]),e("details",g,[e("summary",null,[s[9]||(s[9]=e("a",{id:"Base.pop!-Tuple{TensorNetwork, Tensor}",href:"#Base.pop!-Tuple{TensorNetwork, Tensor}"},[e("span",{class:"jlbinding"},"Base.pop!")],-1)),s[10]||(s[10]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=n(`
julia
pop!(tn::TensorNetwork, tensor::Tensor)
+pop!(tn::TensorNetwork, i::Union{Symbol,AbstractVecOrTuple{Symbol}})

Remove a tensor from the Tensor Network and returns it. If a Tensor is passed, then the first tensor satisfies egality (i.e. or ===) will be removed. If a Symbol or a list of Symbols is passed, then remove and return the tensors that contain all the indices.

See also: push!, delete!.

source

`,4))]),e("details",u,[e("summary",null,[s[12]||(s[12]=e("a",{id:'Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}',href:'#Base.append!-Tuple{TensorNetwork, Union{Tuple{Vararg{var"#s12"}}, AbstractVector{<:var"#s12"}} where var"#s12"<:Tensor}'},[e("span",{class:"jlbinding"},"Base.append!")],-1)),s[13]||(s[13]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[14]||(s[14]=n('
julia
append!(tn::TensorNetwork, tensors::AbstractVecOrTuple{<:Tensor})

Add a list of tensors to a TensorNetwork.

See also: push!, merge!.

source

',4))]),e("details",b,[e("summary",null,[s[15]||(s[15]=e("a",{id:"Base.merge!-Tuple{TensorNetwork, TensorNetwork}",href:"#Base.merge!-Tuple{TensorNetwork, TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.merge!")],-1)),s[16]||(s[16]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[17]||(s[17]=n(`
julia
merge!(self::TensorNetwork, others::TensorNetwork...)
+merge(self::TensorNetwork, others::TensorNetwork...)

Fuse various TensorNetworks into one.

See also: append!.

source

`,4))]),e("details",y,[e("summary",null,[s[18]||(s[18]=e("a",{id:"Base.delete!-Tuple{TensorNetwork, Any}",href:"#Base.delete!-Tuple{TensorNetwork, Any}"},[e("span",{class:"jlbinding"},"Base.delete!")],-1)),s[19]||(s[19]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[20]||(s[20]=n('
julia
delete!(tn::TensorNetwork, x)

Like pop! but return the TensorNetwork instead.

source

',3))]),e("details",T,[e("summary",null,[s[21]||(s[21]=e("a",{id:"Base.replace!",href:"#Base.replace!"},[e("span",{class:"jlbinding"},"Base.replace!")],-1)),s[22]||(s[22]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=n(`
julia
replace!(tn::AbstractTensorNetwork, old => new...)
+replace(tn::AbstractTensorNetwork, old => new...)

Replace the element in old with the one in new. Depending on the types of old and new, the following behaviour is expected:

source

`,4))]),e("details",f,[e("summary",null,[s[24]||(s[24]=e("a",{id:"Base.selectdim",href:"#Base.selectdim"},[e("span",{class:"jlbinding"},"Base.selectdim")],-1)),s[25]||(s[25]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=n('
julia
selectdim(tn::AbstractTensorNetwork, index::Symbol, i)

Return a copy of the AbstractTensorNetwork where index has been projected to dimension i.

See also: view, slice!.

source

',4))]),e("details",E,[e("summary",null,[s[27]||(s[27]=e("a",{id:"Tenet.slice!",href:"#Tenet.slice!"},[e("span",{class:"jlbinding"},"Tenet.slice!")],-1)),s[28]||(s[28]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=n('
julia
slice!(tn::AbstractTensorNetwork, index::Symbol, i)

In-place projection of index on dimension i.

See also: selectdim, view.

source

',4))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"Base.view-Tuple{TensorNetwork}",href:"#Base.view-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.view")],-1)),s[31]||(s[31]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[32]||(s[32]=n('
julia
view(tn::AbstractTensorNetwork, index => i...)

Return a copy of the AbstractTensorNetwork where each index has been projected to dimension i. It is equivalent to a recursive call of selectdim.

See also: selectdim, slice!.

source

',4))]),e("details",j,[e("summary",null,[s[33]||(s[33]=e("a",{id:"Base.copy-Tuple{TensorNetwork}",href:"#Base.copy-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"Base.copy")],-1)),s[34]||(s[34]=i()),a(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[35]||(s[35]=n('
julia
copy(tn::TensorNetwork)

Return a shallow copy of a TensorNetwork.

source

',3))]),s[63]||(s[63]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Base.rand(::Type{TensorNetwork}, n::Integer, regularity::Integer)"),i(". Check Documenter's build log for details.")])],-1)),s[64]||(s[64]=e("h2",{id:"transformations",tabindex:"-1"},[i("Transformations "),e("a",{class:"header-anchor",href:"#transformations","aria-label":'Permalink to "Transformations"'},"​")],-1)),e("details",w,[e("summary",null,[s[36]||(s[36]=e("a",{id:"Tenet.transform",href:"#Tenet.transform"},[e("span",{class:"jlbinding"},"Tenet.transform")],-1)),s[37]||(s[37]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=n(`
julia
transform(tn::TensorNetwork, config::Transformation)
+transform(tn::TensorNetwork, configs)

Return a new TensorNetwork where some Transformation has been performed into it.

See also: transform!.

source

`,4))]),e("details",v,[e("summary",null,[s[39]||(s[39]=e("a",{id:"Tenet.transform!",href:"#Tenet.transform!"},[e("span",{class:"jlbinding"},"Tenet.transform!")],-1)),s[40]||(s[40]=i()),a(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=n(`
julia
transform!(tn::TensorNetwork, config::Transformation)
+transform!(tn::TensorNetwork, configs)

In-place version of transform.

source

`,3))]),e("details",F,[e("summary",null,[s[42]||(s[42]=e("a",{id:"Tenet.HyperFlatten",href:"#Tenet.HyperFlatten"},[e("span",{class:"jlbinding"},"Tenet.HyperFlatten")],-1)),s[43]||(s[43]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=n('
julia
HyperFlatten <: Transformation

Convert hyperindices to COPY-tensors, represented by DeltaArrays. This transformation is always used by default when visualizing a TensorNetwork with plot.

See also: HyperGroup.

source

',4))]),e("details",C,[e("summary",null,[s[45]||(s[45]=e("a",{id:"Tenet.HyperGroup",href:"#Tenet.HyperGroup"},[e("span",{class:"jlbinding"},"Tenet.HyperGroup")],-1)),s[46]||(s[46]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=n('
julia
HyperGroup <: Transformation

Convert COPY-tensors, represented by DeltaArrays, to hyperindices.

See also: HyperFlatten.

source

',4))]),e("details",B,[e("summary",null,[s[48]||(s[48]=e("a",{id:"Tenet.ContractSimplification",href:"#Tenet.ContractSimplification"},[e("span",{class:"jlbinding"},"Tenet.ContractSimplification")],-1)),s[49]||(s[49]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=n('
julia
ContractSimplification <: Transformation

Preemptively contract tensors whose result doesn't increase in size.

source

',3))]),e("details",N,[e("summary",null,[s[51]||(s[51]=e("a",{id:"Tenet.DiagonalReduction",href:"#Tenet.DiagonalReduction"},[e("span",{class:"jlbinding"},"Tenet.DiagonalReduction")],-1)),s[52]||(s[52]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=n('
julia
DiagonalReduction <: Transformation

Reduce the dimension of a Tensor in a TensorNetwork when it has a pair of indices that fulfil a diagonal structure.

Keyword Arguments

source

',5))]),e("details",A,[e("summary",null,[s[54]||(s[54]=e("a",{id:"Tenet.AntiDiagonalGauging",href:"#Tenet.AntiDiagonalGauging"},[e("span",{class:"jlbinding"},"Tenet.AntiDiagonalGauging")],-1)),s[55]||(s[55]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=n('
julia
AntiDiagonalGauging <: Transformation

Reverse the order of tensor indices that fulfill the anti-diagonal condition. While this transformation doesn't directly enhance computational efficiency, it sets up the TensorNetwork for other operations that do.

Keyword Arguments

source

',5))]),e("details",D,[e("summary",null,[s[57]||(s[57]=e("a",{id:"Tenet.Truncate",href:"#Tenet.Truncate"},[e("span",{class:"jlbinding"},"Tenet.Truncate")],-1)),s[58]||(s[58]=i()),a(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=n('
julia
Truncate <: Transformation

Truncate the dimension of a Tensor in a TensorNetwork when it contains columns with all elements smaller than atol.

Keyword Arguments

source

',5))]),s[65]||(s[65]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[i("Missing docstring for "),e("code",null,"Tenet.SplitSimplificationd"),i(". Check Documenter's build log for details.")])],-1))])}const V=l(d,[["render",x]]);export{M as __pageData,V as default}; diff --git a/previews/PR262/assets/app.CFabq2M8.js b/previews/PR262/assets/app.D9eGT1wM.js similarity index 95% rename from previews/PR262/assets/app.CFabq2M8.js rename to previews/PR262/assets/app.D9eGT1wM.js index 6609c191..57692476 100644 --- a/previews/PR262/assets/app.CFabq2M8.js +++ b/previews/PR262/assets/app.D9eGT1wM.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.xArc5YRl.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a4 as S}from"./chunks/framework.BqptwCCd.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{R as p}from"./chunks/theme.BaN35FQU.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a4 as S}from"./chunks/framework.BqptwCCd.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/previews/PR262/assets/chunks/@localSearchIndexroot.BrNAULNl.js b/previews/PR262/assets/chunks/@localSearchIndexroot.BrNAULNl.js new file mode 100644 index 00000000..5adfb751 --- /dev/null +++ b/previews/PR262/assets/chunks/@localSearchIndexroot.BrNAULNl.js @@ -0,0 +1 @@ +const e='{"documentCount":39,"nextId":39,"documentIds":{"0":"/Tenet.jl/previews/PR262/api/ansatz#ansatz","1":"/Tenet.jl/previews/PR262/api/ansatz#mps","2":"/Tenet.jl/previews/PR262/api/tensor#tensor","3":"/Tenet.jl/previews/PR262/api/quantum#quantum","4":"/Tenet.jl/previews/PR262/api/tensornetwork#tensornetwork","5":"/Tenet.jl/previews/PR262/api/tensornetwork#transformations","6":"/Tenet.jl/previews/PR262/developer/cached-field#Cached-field","7":"/Tenet.jl/previews/PR262/developer/type-hierarchy#Inheritance-and-Traits","8":"/Tenet.jl/previews/PR262/developer/unsafe-region#Unsafe-regions","9":"/Tenet.jl/previews/PR262/friends#friends","10":"/Tenet.jl/previews/PR262/manual/ansatz/#ansatz","11":"/Tenet.jl/previews/PR262/#features","12":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Matrix-Product-States-(MPS)","13":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Canonical-Forms","14":"/Tenet.jl/previews/PR262/manual/ansatz/mps#NonCanonical-Form","15":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Canonical-Form","16":"/Tenet.jl/previews/PR262/manual/ansatz/mps#MixedCanonical-Form","17":"/Tenet.jl/previews/PR262/manual/ansatz/product#Product-ansatz","18":"/Tenet.jl/previews/PR262/manual/quantum#Quantum-Tensor-Networks","19":"/Tenet.jl/previews/PR262/manual/quantum#queries","20":"/Tenet.jl/previews/PR262/manual/quantum#Connecting-Quantum-Tensor-Networks","21":"/Tenet.jl/previews/PR262/manual/contraction#contraction","22":"/Tenet.jl/previews/PR262/manual/tensor-network#Tensor-Networks","23":"/Tenet.jl/previews/PR262/manual/tensor-network#Query-information","24":"/Tenet.jl/previews/PR262/manual/tensor-network#modification","25":"/Tenet.jl/previews/PR262/manual/tensor-network#Add/Remove-tensors","26":"/Tenet.jl/previews/PR262/manual/tensor-network#Replace-existing-elements","27":"/Tenet.jl/previews/PR262/manual/tensor-network#slicing","28":"/Tenet.jl/previews/PR262/manual/tensors#tensors","29":"/Tenet.jl/previews/PR262/manual/tensors#The-Tensor-type","30":"/Tenet.jl/previews/PR262/manual/transformations#transformations","31":"/Tenet.jl/previews/PR262/manual/transformations#Available-transformations","32":"/Tenet.jl/previews/PR262/manual/transformations#Hyperindex-converter","33":"/Tenet.jl/previews/PR262/manual/transformations#Contraction-simplification","34":"/Tenet.jl/previews/PR262/manual/transformations#Diagonal-reduction","35":"/Tenet.jl/previews/PR262/manual/transformations#Anti-diagonal-reduction","36":"/Tenet.jl/previews/PR262/manual/transformations#Dimension-truncation","37":"/Tenet.jl/previews/PR262/manual/transformations#Split-simplification","38":"/Tenet.jl/previews/PR262/visualization#visualization"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[1,1,14],"2":[1,1,70],"3":[1,1,92],"4":[1,1,148],"5":[1,1,120],"6":[2,1,1],"7":[3,1,123],"8":[2,1,25],"9":[1,1,61],"10":[1,1,1],"11":[1,1,21],"12":[5,1,97],"13":[2,5,84],"14":[2,6,39],"15":[2,6,47],"16":[2,6,158],"17":[2,1,1],"18":[3,1,1],"19":[1,3,1],"20":[4,3,1],"21":[1,1,99],"22":[2,1,47],"23":[2,2,1],"24":[1,2,1],"25":[3,3,1],"26":[3,3,1],"27":[1,2,1],"28":[1,1,118],"29":[3,1,134],"30":[1,1,96],"31":[2,1,1],"32":[2,3,1],"33":[2,3,1],"34":[2,3,1],"35":[3,3,1],"36":[2,3,1],"37":[2,3,1],"38":[1,1,53]},"averageFieldLength":[1.8717948717948718,2.076923076923077,42.69230769230768],"storedFields":{"0":{"title":"Ansatz","titles":[]},"1":{"title":"MPS","titles":["Ansatz"]},"2":{"title":"Tensor","titles":[]},"3":{"title":"Quantum","titles":[]},"4":{"title":"TensorNetwork","titles":[]},"5":{"title":"Transformations","titles":["TensorNetwork"]},"6":{"title":"Cached field","titles":[]},"7":{"title":"Inheritance and Traits","titles":[]},"8":{"title":"Unsafe regions","titles":[]},"9":{"title":"Friends","titles":[]},"10":{"title":"Ansatz","titles":[]},"11":{"title":"Features","titles":[]},"12":{"title":"Matrix Product States (MPS)","titles":[]},"13":{"title":"Canonical Forms","titles":["Matrix Product States (MPS)"]},"14":{"title":"NonCanonical Form","titles":["Matrix Product States (MPS)","Canonical Forms"]},"15":{"title":"Canonical Form","titles":["Matrix Product States (MPS)","Canonical Forms"]},"16":{"title":"MixedCanonical Form","titles":["Matrix Product States (MPS)","Canonical Forms"]},"17":{"title":"Product ansatz","titles":[]},"18":{"title":"Quantum Tensor Networks","titles":[]},"19":{"title":"Queries","titles":["Quantum Tensor Networks"]},"20":{"title":"Connecting Quantum Tensor Networks","titles":["Quantum Tensor Networks"]},"21":{"title":"Contraction","titles":[]},"22":{"title":"Tensor Networks","titles":[]},"23":{"title":"Query information","titles":["Tensor Networks"]},"24":{"title":"Modification","titles":["Tensor Networks"]},"25":{"title":"Add/Remove tensors","titles":["Tensor Networks","Modification"]},"26":{"title":"Replace existing elements","titles":["Tensor Networks","Modification"]},"27":{"title":"Slicing","titles":["Tensor Networks"]},"28":{"title":"Tensors","titles":[]},"29":{"title":"The Tensor type","titles":["Tensors"]},"30":{"title":"Transformations","titles":[]},"31":{"title":"Available transformations","titles":["Transformations"]},"32":{"title":"Hyperindex converter","titles":["Transformations","Available transformations"]},"33":{"title":"Contraction simplification","titles":["Transformations","Available transformations"]},"34":{"title":"Diagonal reduction","titles":["Transformations","Available transformations"]},"35":{"title":"Anti-diagonal reduction","titles":["Transformations","Available transformations"]},"36":{"title":"Dimension truncation","titles":["Transformations","Available transformations"]},"37":{"title":"Split simplification","titles":["Transformations","Available transformations"]},"38":{"title":"Visualization","titles":[]}},"dirtCount":0,"index":[["↩︎",{"2":{"29":3}}],["666828",{"2":{"29":1}}],["611271",{"2":{"29":1}}],["678244",{"2":{"29":1}}],["625493",{"2":{"29":1}}],["796033",{"2":{"29":1}}],["703756",{"2":{"29":1}}],["701557",{"2":{"29":1}}],["736615",{"2":{"29":1}}],["772719",{"2":{"29":1}}],["775472",{"2":{"29":1}}],["752601",{"2":{"29":1}}],["956991",{"2":{"29":1}}],["956189",{"2":{"29":1}}],["917511",{"2":{"29":1}}],["96778",{"2":{"29":1}}],["96",{"2":{"16":1}}],["0631172",{"2":{"29":1}}],["0802697",{"2":{"29":1}}],["0356729",{"2":{"29":1}}],["0",{"2":{"28":1,"29":30}}],["∈fdim⁡",{"2":{"28":1}}],["↦fin",{"2":{"28":1}}],["×⋯×fdim⁡",{"2":{"28":1}}],["∑ijklmnopaimbijpcnjkdpklemnofolcan",{"2":{"22":1}}],["```",{"2":{"16":1}}],["`",{"2":{"16":1}}],["`evolve",{"2":{"16":1}}],["`mps`",{"2":{"16":1}}],["`mpo`",{"2":{"16":2}}],["`tenet`",{"2":{"16":1}}],["`open`",{"2":{"16":1}}],["|ψ",{"2":{"15":1}}],["λn−1γn−1in−1λnγnin|i1",{"2":{"15":1}}],["λ",{"2":{"15":1}}],["γ",{"2":{"15":1}}],["⚠️",{"2":{"13":1}}],["859521",{"2":{"29":1}}],["806058",{"2":{"29":1}}],["8",{"2":{"12":2}}],["262625",{"2":{"29":1}}],["236731",{"2":{"29":1}}],["246324",{"2":{"29":1}}],["2021",{"2":{"30":1}}],["202628",{"2":{"29":1}}],["2011",{"2":{"16":1}}],["2",{"2":{"12":3,"13":7,"15":7,"16":9,"28":2,"29":3}}],["494982",{"2":{"29":1}}],["4",{"2":{"12":2}}],["30",{"2":{"29":1}}],["3×5×2",{"2":{"29":1}}],["326",{"2":{"16":1}}],["3",{"2":{"16":1,"28":1,"29":4}}],["3d",{"2":{"11":1}}],["39",{"2":{"2":2,"3":10,"4":3,"5":3,"7":2,"9":2,"15":1,"21":2,"22":1,"28":2,"30":2}}],["your",{"2":{"9":1,"30":1}}],["you",{"2":{"8":1,"12":1,"15":1,"16":3,"28":3,"29":1,"30":1,"38":1}}],["years",{"2":{"7":1}}],["530744",{"2":{"29":1}}],["535015",{"2":{"29":1}}],["531008",{"2":{"29":1}}],["5",{"2":{"7":10,"12":1,"16":1,"29":3}}],[">|contains|",{"2":{"7":5}}],[">|inherits|",{"2":{"7":10}}],["just",{"2":{"38":1}}],["juliagraphplot",{"2":{"38":2}}],["julia>",{"2":{"29":2}}],["juliajulia>",{"2":{"29":2}}],["juliaeinexpr",{"2":{"21":1}}],["julia",{"2":{"7":4,"8":1,"9":1}}],["juliadiagonalreduction",{"2":{"5":1}}],["juliadelete",{"2":{"4":1}}],["juliahypergroup",{"2":{"5":1}}],["juliahyperflatten",{"2":{"5":1}}],["juliatruncate",{"2":{"5":1}}],["juliatransform",{"2":{"5":2}}],["juliatensornetwork",{"2":{"3":1,"4":1}}],["juliacopy",{"2":{"4":1}}],["juliacontractsimplification",{"2":{"5":1}}],["juliacontract",{"2":{"2":1,"21":1}}],["juliaview",{"2":{"4":1}}],["juliareplace",{"2":{"4":1}}],["juliamermaid",{"2":{"7":1}}],["juliamerge",{"2":{"4":1}}],["juliamps",{"2":{"1":1,"12":1,"13":1,"15":1,"16":1}}],["juliaantidiagonalgauging",{"2":{"5":1}}],["juliaappend",{"2":{"4":1}}],["juliaadjoint",{"2":{"3":1}}],["juliapop",{"2":{"4":1}}],["juliapush",{"2":{"4":1}}],["juliaoperator",{"2":{"3":1}}],["juliaslice",{"2":{"4":1}}],["juliaselectdim",{"2":{"4":1}}],["juliasize",{"2":{"4":1}}],["juliasites",{"2":{"3":1}}],["juliastate",{"2":{"3":1}}],["juliascalar",{"2":{"3":1}}],["juliasocket",{"2":{"3":1}}],["juliansites",{"2":{"3":1}}],["juliaquantum",{"2":{"3":1}}],["julialinearalgebra",{"2":{"2":3}}],["juliabase",{"2":{"2":1}}],["j",{"2":{"28":1,"29":2}}],["jokes",{"2":{"28":1}}],["jl",{"2":{"9":2}}],["java",{"2":{"7":1}}],["giving",{"2":{"28":1}}],["give",{"2":{"28":1}}],["given",{"2":{"21":1}}],["gridposition",{"2":{"38":1}}],["gray",{"2":{"30":1}}],["graphplot",{"2":{"38":5}}],["graphmakie",{"2":{"38":3}}],["graphical",{"2":{"22":1}}],["graph",{"2":{"4":3,"7":1,"22":1,"38":1}}],["graphs",{"2":{"2":1}}],["greedy",{"2":{"21":1}}],["group",{"2":{"16":1}}],["good",{"2":{"28":1,"30":1}}],["gonna",{"2":{"28":1}}],["go",{"2":{"7":1}}],["generalization",{"2":{"28":1}}],["general",{"2":{"7":1,"14":1}}],["112213",{"2":{"29":1}}],["182884",{"2":{"29":1}}],["192",{"2":{"16":1}}],["1",{"2":{"12":4,"16":9,"28":4,"29":1}}],["1d",{"2":{"12":1}}],["12",{"2":{"5":3}}],["1e",{"2":{"5":3}}],["higher",{"2":{"28":1}}],["hierarchy",{"2":{"7":1}}],["however",{"2":{"29":1}}],["how",{"2":{"28":1}}],["hood",{"2":{"13":1}}],["here",{"2":{"28":2}}],["have",{"2":{"7":2,"16":2,"28":1}}],["has",{"2":{"4":2,"5":2,"7":2,"13":1,"21":1,"29":1}}],["hyperindex",{"0":{"32":1}}],["hyperindices",{"2":{"5":2}}],["hypergroup",{"2":{"5":2}}],["hyperflatten",{"2":{"5":2}}],["x",{"2":{"4":1}}],["x3c",{"2":{"1":1,"3":3,"4":1,"5":6}}],["≡",{"2":{"4":2}}],["v",{"2":{"28":3}}],["vector",{"2":{"16":1,"28":2,"29":1}}],["vectors",{"2":{"15":1,"28":2}}],["version",{"2":{"5":1,"16":1}}],["vertices",{"2":{"4":1}}],["visually",{"2":{"22":1}}],["visualization",{"0":{"38":1},"2":{"11":1}}],["visualizing",{"2":{"5":1}}],["viz",{"2":{"16":1}}],["vidal",{"2":{"15":1}}],["via",{"2":{"13":1}}],["viewed",{"2":{"28":1}}],["view",{"2":{"4":3}}],["virtual",{"2":{"2":3}}],["virtualind",{"2":{"2":6}}],["various",{"2":{"4":1,"30":1}}],["=c∈f∀i",{"2":{"28":1}}],["=∑i1",{"2":{"15":1}}],["=>",{"2":{"4":3}}],["===",{"2":{"4":2}}],["=",{"2":{"3":1,"12":3,"13":1,"15":1,"16":5,"21":2,"29":3}}],["wraps",{"2":{"29":1}}],["written",{"2":{"9":3}}],["writing",{"2":{"7":1}}],["word",{"2":{"29":1}}],["would",{"2":{"28":1}}],["won",{"2":{"21":1}}],["we",{"2":{"9":1,"28":2,"29":1,"30":1}}],["want",{"2":{"8":1}}],["why",{"2":{"30":1}}],["whatever",{"2":{"29":1}}],["wha",{"2":{"28":1}}],["which",{"2":{"7":2,"8":1,"9":1,"13":1,"16":2,"21":2,"29":1,"30":2}}],["while",{"2":{"5":1,"16":1}}],["whose",{"2":{"5":1,"12":1,"28":1}}],["when",{"2":{"5":3,"13":1,"14":1}}],["where",{"2":{"4":2,"5":1,"12":1,"28":1}}],["whether",{"2":{"3":1}}],["wild",{"2":{"9":1}}],["will",{"2":{"4":3,"13":1}}],["without",{"2":{"13":1,"14":1}}],["with",{"2":{"3":5,"4":1,"5":2,"7":1,"9":1,"22":1,"28":1,"29":2}}],["einsum",{"2":{"21":1}}],["einstein",{"2":{"21":1}}],["einexpr",{"2":{"21":3}}],["einexprs",{"2":{"11":2,"21":4}}],["every",{"2":{"21":1}}],["evolve",{"2":{"16":1}}],["effectively",{"2":{"16":1}}],["efficiency",{"2":{"5":1,"13":1}}],["enough",{"2":{"28":1}}],["entanglement",{"2":{"16":1}}],["ensure",{"2":{"13":1}}],["end",{"2":{"8":1}}],["enhance",{"2":{"5":1}}],["es",{"2":{"7":1}}],["each",{"2":{"4":1,"28":1,"29":1}}],["extension",{"2":{"38":1}}],["existing",{"0":{"26":1}}],["execution",{"2":{"21":1}}],["example",{"2":{"16":2,"22":1,"29":1}}],["examplefig",{"2":{"12":1}}],["expr",{"2":{"21":1}}],["expression",{"2":{"21":2}}],["expressed",{"2":{"15":1}}],["expected",{"2":{"4":1}}],["except",{"2":{"2":6}}],["elements",{"0":{"26":1},"2":{"5":1}}],["element",{"2":{"4":2}}],["egality",{"2":{"4":2}}],["equivalent",{"2":{"4":2}}],["equation",{"2":{"4":1,"22":1}}],["edges",{"2":{"4":1,"22":1}}],["e",{"2":{"3":5,"4":1,"7":1,"12":1,"16":1,"21":1}}],["q",{"2":{"3":5}}],["query",{"0":{"23":1}}],["queried",{"2":{"22":1}}],["queries",{"0":{"19":1}}],["quimb",{"2":{"9":1,"30":1}}],["quot",{"2":{"3":2,"7":2,"16":2,"28":2}}],["quantum",{"0":{"3":1,"18":1,"20":1},"1":{"19":1,"20":1},"2":{"3":9,"7":2,"12":1}}],["qr",{"2":{"2":5}}],["n=10",{"2":{"12":1,"16":3}}],["nice",{"2":{"9":1}}],["ninputs",{"2":{"3":1}}],["n",{"2":{"4":1,"28":5}}],["necessarily",{"2":{"30":1}}],["nevertheless",{"2":{"28":1}}],["new",{"2":{"4":5,"5":1,"9":1}}],["networks",{"0":{"18":1,"20":1,"22":1},"1":{"19":1,"20":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"11":1,"12":1,"22":1}}],["network",{"2":{"1":1,"3":9,"4":2,"9":4,"11":2,"12":1,"21":1,"30":5}}],["nlanes",{"2":{"3":1}}],["nor",{"2":{"29":1}}],["nodes",{"2":{"22":1}}],["node",{"2":{"21":1}}],["noncanonical",{"0":{"14":1},"2":{"13":1,"14":1}}],["no",{"2":{"3":1,"9":1}}],["noutputs",{"2":{"3":1}}],["nothing",{"2":{"29":1}}],["notation",{"2":{"22":1}}],["not",{"2":{"7":2,"13":1,"14":2,"28":1}}],["notes",{"2":{"3":1}}],["notion",{"2":{"3":2}}],["numbers",{"2":{"28":1}}],["number",{"2":{"3":1,"28":1}}],["nsites",{"2":{"3":1}}],["named",{"2":{"28":1}}],["name",{"2":{"2":3,"29":1}}],["u",{"2":{"16":1}}],["using",{"2":{"15":1,"16":2,"29":1,"30":1}}],["useful",{"2":{"14":1}}],["use",{"2":{"13":1,"16":1,"28":1,"29":1}}],["used",{"2":{"2":6,"5":1,"13":2,"28":1}}],["up",{"2":{"5":1}}],["under",{"2":{"13":1}}],["underlying",{"2":{"2":1,"3":1}}],["unique",{"2":{"13":1}}],["union",{"2":{"4":1,"38":2}}],["unsafe",{"0":{"8":1},"2":{"8":1}}],["kourtis",{"2":{"30":1}}],["k",{"2":{"28":1,"29":1}}],["kill",{"2":{"28":1}}],["kind",{"2":{"7":1}}],["know",{"2":{"28":1}}],["known",{"2":{"12":1,"15":1,"29":1}}],["keyword",{"2":{"2":3,"5":3,"12":1,"21":1,"38":1}}],["kwargs",{"2":{"2":3,"3":2,"21":2,"38":4}}],["float64",{"2":{"29":2}}],["flexible",{"2":{"9":1}}],["fdim⁡",{"2":{"28":1}}],["f",{"2":{"28":1,"38":1}}],["features",{"0":{"11":1}}],["framework",{"2":{"9":1}}],["friends",{"0":{"9":1}}],["from",{"2":{"4":2,"7":2,"14":1}}],["false",{"2":{"38":1}}],["factoring",{"2":{"30":1}}],["factorization",{"2":{"2":9}}],["favouring",{"2":{"7":1}}],["fig",{"2":{"12":3,"16":4}}],["figure",{"2":{"12":1,"16":1,"38":1}}],["fit",{"2":{"9":1}}],["fields",{"2":{"7":3,"12":1,"29":1}}],["field",{"0":{"6":1},"2":{"16":1,"28":1}}],["first",{"2":{"4":2,"16":1}}],["further",{"2":{"30":1}}],["full",{"2":{"13":1}}],["fulfill",{"2":{"5":1}}],["fulfil",{"2":{"5":1}}],["functions",{"2":{"16":1,"22":2,"30":1}}],["function",{"2":{"13":3,"16":1,"28":1,"29":1}}],["fuse",{"2":{"4":1}}],["found",{"2":{"30":1}}],["focus",{"2":{"9":1}}],["following",{"2":{"4":1,"22":2}}],["forbid",{"2":{"7":1}}],["forms",{"0":{"13":1},"1":{"14":1,"15":1,"16":1},"2":{"13":2,"16":1}}],["form",{"0":{"14":1,"15":1,"16":1},"2":{"7":1,"13":11,"14":3,"15":4,"16":4,"21":1}}],["for",{"2":{"2":4,"3":20,"4":6,"5":3,"9":1,"14":2,"16":1,"21":4,"22":2,"28":1,"29":1,"30":1,"38":1}}],["r",{"2":{"12":2}}],["rank",{"2":{"29":2,"30":2}}],["rand",{"2":{"4":1,"12":4,"13":3,"15":3,"16":6,"29":1}}],["random",{"2":{"2":3}}],["rather",{"2":{"7":1}}],["rust",{"2":{"7":1}}],["reduction",{"0":{"34":1,"35":1}}],["reducing",{"2":{"30":1}}],["reduces",{"2":{"30":1}}],["reduce",{"2":{"5":1,"30":2}}],["reason",{"2":{"30":1}}],["reached",{"2":{"28":1}}],["relationships",{"2":{"29":1}}],["relates",{"2":{"28":1}}],["remainder",{"2":{"28":1}}],["removed",{"2":{"4":1}}],["remove",{"0":{"25":1},"2":{"4":2}}],["ref",{"2":{"16":1}}],["refer",{"2":{"16":1}}],["referenced",{"2":{"3":1}}],["renormalization",{"2":{"16":1}}],["renaming",{"2":{"4":1}}],["requires",{"2":{"13":1}}],["region",{"2":{"8":1}}],["regions",{"0":{"8":1}}],["regularity",{"2":{"4":1}}],["recommend",{"2":{"9":1}}],["recent",{"2":{"7":1}}],["recursive",{"2":{"4":1,"29":1}}],["rest",{"2":{"38":1}}],["restricted",{"2":{"7":1}}],["resources",{"2":{"16":1}}],["respectively",{"2":{"12":1,"16":1}}],["result",{"2":{"5":1}}],["reverse",{"2":{"5":1}}],["replaced",{"2":{"4":1}}],["replace",{"0":{"26":1},"2":{"4":3}}],["represents",{"2":{"15":1,"21":1}}],["representation",{"2":{"13":1}}],["represented",{"2":{"5":2,"13":1,"22":2,"29":1}}],["represent",{"2":{"4":1,"12":1,"22":2}}],["representing",{"2":{"3":3,"4":1,"22":1}}],["returns",{"2":{"3":5,"4":1}}],["return",{"2":{"2":1,"4":7,"5":1,"16":1,"21":1}}],["right",{"2":{"2":12,"12":2,"16":6}}],["crucial",{"2":{"30":1}}],["create",{"2":{"29":1}}],["center",{"2":{"16":5}}],["certain",{"2":{"14":1}}],["c=0",{"2":{"12":1,"16":1}}],["current",{"2":{"13":1}}],["currently",{"2":{"12":1,"13":1,"16":1}}],["cuttings",{"2":{"11":1}}],["changing",{"2":{"13":1}}],["chains",{"2":{"12":1}}],["chain",{"2":{"12":1,"16":1}}],["chainrules",{"2":{"11":1}}],["choice",{"2":{"13":1}}],["checks",{"2":{"8":1}}],["check",{"2":{"2":2,"3":10,"4":3,"5":1,"13":2,"16":3,"21":2}}],["closed",{"2":{"12":1}}],["class",{"2":{"7":1}}],["clear",{"2":{"7":1}}],["c++",{"2":{"7":1}}],["careful",{"2":{"13":1}}],["case",{"2":{"9":1,"28":1}}],["cases",{"2":{"8":1}}],["canonize",{"2":{"15":2,"16":2}}],["canonicalform",{"2":{"13":1}}],["canonical",{"0":{"13":1,"15":1},"1":{"14":1,"15":1,"16":1},"2":{"13":5,"14":1,"15":2,"16":7}}],["cannot",{"2":{"7":1}}],["can",{"2":{"7":3,"12":2,"13":4,"15":1,"16":4,"22":1,"28":1,"29":4,"30":2,"38":1}}],["cached",{"0":{"6":1}}],["calling",{"2":{"15":1}}],["call",{"2":{"4":1,"38":1}}],["causality",{"2":{"3":1}}],["cost",{"2":{"30":1}}],["coefficients",{"2":{"15":1}}],["correct",{"2":{"13":2,"28":1}}],["correspond",{"2":{"4":1}}],["computer",{"2":{"28":1}}],["computations",{"2":{"14":1,"30":1}}],["computational",{"2":{"5":1,"30":1}}],["complex",{"2":{"22":1}}],["completely",{"2":{"7":1}}],["composition",{"2":{"7":1}}],["compared",{"2":{"7":1}}],["columns",{"2":{"5":1}}],["copy",{"2":{"4":4,"5":2}}],["connected",{"2":{"21":1}}],["connecting",{"0":{"20":1}}],["consulted",{"2":{"29":1}}],["constructor",{"2":{"12":1}}],["considered",{"2":{"7":1}}],["concrete",{"2":{"7":1}}],["conditions",{"2":{"12":3,"14":1,"16":1}}],["condition",{"2":{"5":1}}],["converter",{"0":{"32":1}}],["convert",{"2":{"5":2,"15":1,"16":1}}],["configs",{"2":{"5":2}}],["config",{"2":{"5":2}}],["containing",{"2":{"15":1}}],["contains",{"2":{"5":1,"16":1}}],["contain",{"2":{"4":1}}],["contracting",{"2":{"30":1}}],["contraction",{"0":{"21":1,"33":1},"2":{"2":1,"11":2,"21":5,"30":2}}],["contracted",{"2":{"21":1}}],["contractsimplification",{"2":{"5":1}}],["contract",{"2":{"2":1,"5":1,"21":4}}],["conjugate",{"2":{"3":1}}],["lt",{"2":{"16":1}}],["l",{"2":{"12":2}}],["layout=stress",{"2":{"38":1}}],["layout=spring",{"2":{"12":1,"16":1}}],["layman",{"2":{"28":1}}],["labels=true",{"2":{"38":1}}],["labels",{"2":{"38":2}}],["label",{"2":{"12":1,"16":1}}],["laid",{"2":{"12":1,"21":1}}],["large",{"2":{"11":1}}],["languages",{"2":{"7":2}}],["lanes",{"2":{"3":1}}],["locally",{"2":{"30":1}}],["lower",{"2":{"21":1}}],["look",{"2":{"9":1}}],["looks",{"2":{"7":1}}],["log",{"2":{"2":2,"3":10,"4":3,"5":1,"21":1}}],["lies",{"2":{"30":1}}],["library",{"2":{"9":2,"21":1}}],["libraries",{"2":{"9":1}}],["like",{"2":{"4":1,"7":3,"29":1}}],["list",{"2":{"4":2,"5":2,"29":2}}],["linear",{"2":{"22":1,"28":2,"29":2}}],["linearalgebra",{"2":{"2":3}}],["linalg",{"2":{"2":1}}],["length",{"2":{"29":1}}],["letters",{"2":{"28":1}}],["level",{"2":{"21":1}}],["leads",{"2":{"3":1}}],["left",{"2":{"2":12,"12":2,"16":6}}],["lu",{"2":{"2":5}}],["over",{"2":{"28":1}}],["our",{"2":{"28":1,"30":1}}],["outer",{"2":{"12":1}}],["out",{"2":{"12":1,"21":1}}],["outputs",{"2":{"3":2,"21":1}}],["output",{"2":{"3":3,"16":2,"21":1,"28":1,"29":1}}],["o",{"2":{"12":2}}],["options",{"2":{"21":1}}],["optimizer",{"2":{"21":4}}],["optimized",{"2":{"11":1}}],["optimization",{"2":{"21":1}}],["optimal",{"2":{"14":1}}],["open",{"2":{"3":1,"12":5,"16":3,"21":2}}],["operators",{"2":{"16":2}}],["operator",{"2":{"3":3,"16":1}}],["operations",{"2":{"5":1,"29":1,"30":1}}],["operation",{"2":{"2":1,"13":1}}],["oop",{"2":{"7":2}}],["objects",{"2":{"22":1}}],["object",{"2":{"7":1}}],["other",{"2":{"5":1,"9":1,"12":1,"29":1}}],["others",{"2":{"4":2}}],["old",{"2":{"4":4}}],["one",{"2":{"4":2,"16":1,"28":1}}],["only",{"2":{"3":2,"12":1,"16":2}}],["on",{"2":{"2":3,"4":2,"7":1,"8":1,"9":2,"12":2,"13":1,"16":1,"38":1}}],["orthog",{"2":{"16":1}}],["orthogonality",{"2":{"14":2,"16":4}}],["oriented",{"2":{"7":1}}],["order=",{"2":{"12":1}}],["ordering",{"2":{"12":2}}],["order",{"2":{"5":1,"12":1,"28":5,"29":2}}],["or",{"2":{"2":2,"3":2,"4":3,"7":2,"12":1,"16":2,"29":2,"30":3}}],["of",{"2":{"2":10,"3":8,"4":10,"5":7,"7":4,"9":3,"11":2,"12":1,"13":4,"15":1,"16":6,"21":2,"28":4,"29":6,"30":4,"38":2}}],["tᵢⱼₖ",{"2":{"29":4}}],["tijk⟺t",{"2":{"28":1}}],["time",{"2":{"7":1}}],["take",{"2":{"9":1}}],["terms",{"2":{"28":1}}],["temporarily",{"2":{"8":1}}],["tenpy",{"2":{"9":1}}],["tensorkrowch",{"2":{"9":1}}],["tensors",{"0":{"25":1,"28":1},"1":{"29":1},"2":{"3":1,"4":7,"5":3,"12":1,"14":1,"15":1,"16":5,"21":1,"22":1,"28":4,"30":2}}],["tensornetworks",{"2":{"4":1}}],["tensornetwork",{"0":{"4":1},"1":{"5":1},"2":{"3":2,"4":16,"5":9,"7":2,"8":1,"21":2,"22":2,"30":1,"38":5}}],["tensor",{"0":{"2":1,"18":1,"20":1,"22":1,"29":1},"1":{"19":1,"20":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"1":1,"2":15,"3":9,"4":12,"5":3,"9":4,"11":2,"12":2,"16":3,"21":1,"22":2,"28":5,"29":8,"30":2,"38":1}}],["tenet",{"2":{"1":1,"3":10,"4":4,"5":9,"7":1,"9":2,"12":1,"13":4,"21":2,"22":1,"29":1,"30":1,"38":1}}],["td",{"2":{"7":1}}],["tree",{"2":{"21":1}}],["trait",{"2":{"13":2}}],["traits",{"0":{"7":1}}],["trains",{"2":{"12":1}}],["transforms",{"2":{"29":1}}],["transformation",{"2":{"5":11}}],["transformations",{"0":{"5":1,"30":1,"31":1},"1":{"31":1,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2},"2":{"30":3}}],["transform",{"2":{"5":6,"30":2}}],["truncation",{"0":{"36":1}}],["truncating",{"2":{"30":1}}],["truncate",{"2":{"5":2}}],["true",{"2":{"3":1,"16":1,"38":1}}],["type",{"0":{"29":1},"2":{"4":1,"7":1,"22":1,"29":1}}],["types",{"2":{"4":1,"7":3}}],["tn",{"2":{"4":14,"5":4,"8":1,"11":1,"21":3,"22":1,"38":4}}],["think",{"2":{"28":1}}],["third",{"2":{"16":1}}],["this",{"2":{"3":1,"4":1,"5":2,"7":3,"12":1,"13":1,"14":1,"30":1}}],["than",{"2":{"5":1}}],["that",{"2":{"4":2,"5":3,"13":3,"14":1,"16":3,"21":1,"29":3}}],["these",{"2":{"12":1,"22":1,"29":1,"30":2}}],["there",{"2":{"8":1,"9":1,"28":1}}],["them",{"2":{"7":1,"16":1,"29":1}}],["they",{"2":{"7":1}}],["then",{"2":{"4":2}}],["their",{"2":{"4":1,"16":1,"30":1}}],["the",{"0":{"29":1},"2":{"2":12,"3":8,"4":13,"5":5,"7":2,"9":1,"12":8,"13":19,"14":4,"15":5,"16":24,"21":4,"22":4,"28":5,"29":10,"30":11,"38":3}}],["t",{"2":{"2":6,"5":2,"7":1,"9":1,"21":1,"28":4,"30":1}}],["top",{"2":{"9":1}}],["topic",{"2":{"7":1}}],["tolerance",{"2":{"5":3}}],["to",{"2":{"2":15,"3":1,"4":8,"5":9,"7":1,"8":2,"9":1,"12":1,"13":3,"15":1,"16":6,"21":6,"28":3,"29":3,"30":4,"38":2}}],["import",{"2":{"38":1}}],["importantly",{"2":{"30":1}}],["implementing",{"2":{"7":1}}],["implement",{"2":{"7":1}}],["identify",{"2":{"28":1}}],["id5",{"2":{"7":4}}],["id4",{"2":{"7":4}}],["id3",{"2":{"7":5}}],["id2",{"2":{"7":4}}],["id1",{"2":{"7":4}}],["if",{"2":{"3":1,"4":5,"9":1,"13":1,"16":3,"28":1,"38":1}}],["isisometry",{"2":{"16":2}}],["isrightcanonical",{"2":{"16":1}}],["isleftcanonical",{"2":{"16":1}}],["isometric",{"2":{"15":1}}],["is",{"2":{"3":1,"4":6,"5":1,"7":1,"12":1,"13":4,"14":3,"15":1,"16":6,"21":3,"28":6,"29":2,"30":2}}],["itself",{"2":{"30":1}}],["iterations=1000",{"2":{"12":1,"16":1}}],["itensornetworks",{"2":{"9":1}}],["itensors",{"2":{"9":1}}],["it",{"2":{"3":1,"4":3,"5":4,"13":1,"14":1,"21":2,"28":2,"29":3,"30":2}}],["involved",{"2":{"30":1}}],["involve",{"2":{"30":1}}],["info",{"2":{"21":1}}],["information",{"0":{"23":1},"2":{"16":2,"22":1}}],["inγ1i1λ2γ2i2",{"2":{"15":1}}],["initialized",{"2":{"14":1}}],["inspiration",{"2":{"9":1}}],["instantiated",{"2":{"7":2}}],["instead",{"2":{"4":1,"7":1}}],["increasingly",{"2":{"7":1}}],["increase",{"2":{"5":1}}],["inherited",{"2":{"7":2}}],["inheriting",{"2":{"7":1}}],["inheritance",{"0":{"7":1},"2":{"7":2}}],["intuitively",{"2":{"28":1}}],["into",{"2":{"4":1,"5":1}}],["internal",{"2":{"13":1}}],["interconnected",{"2":{"4":1}}],["integer",{"2":{"2":1,"4":2}}],["inputs",{"2":{"3":2,"28":1,"29":2}}],["input",{"2":{"3":3,"16":1}}],["in",{"2":{"2":6,"4":3,"5":4,"7":5,"8":1,"9":4,"12":3,"13":3,"14":2,"15":1,"16":6,"21":3,"22":1,"28":1,"29":2,"30":5}}],["indispensable",{"2":{"30":1}}],["indices",{"2":{"2":12,"3":1,"4":3,"5":4,"12":2,"16":1,"21":2,"22":1,"29":1,"38":1}}],["index",{"2":{"4":11,"8":1,"16":1,"21":2,"29":1}}],["inds",{"2":{"2":21,"3":1,"4":1,"21":1}}],["i",{"2":{"2":2,"3":5,"4":8,"7":1,"12":1,"16":1,"21":1,"28":3,"29":1}}],["drastically",{"2":{"30":1}}],["due",{"2":{"12":1}}],["dual",{"2":{"3":1}}],["dasharray",{"2":{"7":5}}],["don",{"2":{"28":1}}],["do",{"2":{"5":1,"7":1,"14":1,"29":1}}],["doesn",{"2":{"5":2,"9":1,"30":1}}],["documentation",{"2":{"21":1}}],["documenter",{"2":{"2":2,"3":10,"4":3,"5":1,"21":1}}],["docstring",{"2":{"2":4,"3":20,"4":6,"5":2,"21":2}}],["difference",{"2":{"16":1}}],["different",{"2":{"13":1}}],["differentiation",{"2":{"11":1}}],["dir=",{"2":{"16":2}}],["directly",{"2":{"5":1}}],["directionality",{"2":{"3":1}}],["dispatched",{"2":{"29":1}}],["dispatch",{"2":{"13":1}}],["diagonal",{"0":{"34":1,"35":1},"2":{"5":2,"15":1}}],["diagonalreduction",{"2":{"5":1}}],["dims=nonunique",{"2":{"2":1}}],["dimensions",{"2":{"28":1}}],["dimensional",{"2":{"28":1}}],["dimensionality",{"2":{"4":1,"29":3}}],["dimensionalities",{"2":{"4":1}}],["dimension",{"0":{"36":1},"2":{"2":1,"4":3,"5":2}}],["definitions",{"2":{"29":1}}],["definition",{"2":{"28":1}}],["define",{"2":{"28":1}}],["default",{"2":{"5":1,"12":1,"14":1}}],["defaults",{"2":{"2":9,"5":5,"21":1,"38":1}}],["density",{"2":{"16":1}}],["depth",{"2":{"16":1}}],["depending",{"2":{"4":1,"12":1,"13":1}}],["design",{"2":{"7":1,"9":1}}],["delegated",{"2":{"21":1}}],["delete",{"2":{"4":2}}],["deltaarrays",{"2":{"5":2}}],["details",{"2":{"2":2,"3":10,"4":3,"5":1,"21":1}}],["brief",{"2":{"28":1}}],["backend",{"2":{"38":1}}],["bad",{"2":{"7":1}}],["based",{"2":{"30":1}}],["base",{"2":{"2":2,"3":2,"4":11,"7":1}}],["built",{"2":{"9":1}}],["build",{"2":{"2":2,"3":10,"4":3,"5":1,"21":1}}],["but",{"2":{"4":1,"7":2,"12":1,"14":1,"21":1,"28":1,"30":1}}],["bottom",{"2":{"12":1,"16":1}}],["both",{"2":{"3":1,"30":1}}],["boundary",{"2":{"12":3,"16":1}}],["bond",{"2":{"2":3}}],["between",{"2":{"16":2,"28":1,"29":2}}],["benefit",{"2":{"14":1}}],["before",{"2":{"13":1}}],["begin",{"2":{"8":1}}],["been",{"2":{"4":2,"5":1,"7":1,"21":1}}],["behaviour",{"2":{"4":1}}],["be",{"2":{"2":6,"4":2,"7":4,"12":1,"13":4,"14":1,"16":1,"21":2,"22":2,"28":2,"29":4,"30":1}}],["b",{"2":{"2":2}}],["by",{"2":{"2":1,"3":1,"5":3,"11":3,"12":1,"15":1,"22":1,"29":2,"30":1}}],["purposes",{"2":{"14":1}}],["push",{"2":{"4":3,"8":1}}],["physical",{"2":{"12":2}}],["physics",{"2":{"9":1,"16":1}}],["permuting",{"2":{"30":1}}],["per",{"2":{"16":2}}],["periodic",{"2":{"12":1}}],["performing",{"2":{"13":1}}],["performed",{"2":{"5":1}}],["perform",{"2":{"2":4}}],["pytorch",{"2":{"9":1}}],["python",{"2":{"7":1,"9":2}}],["position",{"2":{"16":1}}],["powered",{"2":{"11":3}}],["polymorphic",{"2":{"7":1}}],["popular",{"2":{"7":1}}],["pop",{"2":{"4":4}}],["predefined",{"2":{"30":1}}],["prepare",{"2":{"30":1}}],["prefer",{"2":{"29":1}}],["preemptively",{"2":{"5":1}}],["practice",{"2":{"7":1,"30":1}}],["provides",{"2":{"38":1}}],["provide",{"2":{"30":1}}],["probably",{"2":{"28":1}}],["problem",{"2":{"9":1,"30":1}}],["programming",{"2":{"7":1}}],["projection",{"2":{"4":1}}],["projected",{"2":{"4":2}}],["product",{"0":{"12":1,"17":1},"1":{"13":1,"14":1,"15":1,"16":1},"2":{"1":1,"7":2,"12":1,"16":6}}],["please",{"2":{"28":1}}],["plot",{"2":{"5":1,"12":1,"16":1,"38":1}}],["place",{"2":{"4":1,"5":1,"21":1}}],["package",{"2":{"38":1}}],["path",{"2":{"21":4,"30":1}}],["passing",{"2":{"12":1,"29":1}}],["passed",{"2":{"4":2,"21":1,"38":1}}],["parts",{"2":{"16":1}}],["particular",{"2":{"7":1,"14":1,"16":1}}],["parent",{"2":{"2":1,"7":1}}],["pair",{"2":{"5":1}}],["show",{"2":{"38":1}}],["shallow",{"2":{"4":1}}],["subtypes",{"2":{"29":1}}],["summation",{"2":{"21":1}}],["support",{"2":{"38":1}}],["supports",{"2":{"13":1}}],["supported",{"2":{"12":1,"16":1}}],["superclass",{"2":{"7":1}}],["satisfy",{"2":{"14":1}}],["satisfies",{"2":{"4":2}}],["science",{"2":{"28":1}}],["scientific",{"2":{"12":1}}],["schollwöck",{"2":{"16":1}}],["schmidt",{"2":{"15":1}}],["scalar",{"2":{"3":3,"28":2}}],["slicing",{"0":{"27":1},"2":{"11":1}}],["slice",{"2":{"4":3}}],["split",{"0":{"37":1}}],["splitsimplificationd",{"2":{"5":1}}],["specifying",{"2":{"14":1}}],["specify",{"2":{"12":1,"16":1}}],["specified",{"2":{"2":1}}],["spaces",{"2":{"28":2}}],["space",{"2":{"7":1,"29":1}}],["smaller",{"2":{"5":1}}],["skip",{"2":{"5":4}}],["stored",{"2":{"13":1,"16":1}}],["stability",{"2":{"13":1}}],["states",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1},"2":{"12":1,"16":3}}],["state",{"2":{"1":1,"3":3,"16":1}}],["strong",{"2":{"9":1}}],["stroke",{"2":{"7":5}}],["structural",{"2":{"7":2}}],["structure",{"2":{"5":1,"30":2}}],["style",{"2":{"7":5}}],["search",{"2":{"21":1,"30":1}}],["sequence",{"2":{"15":1}}],["sense",{"2":{"7":1}}],["selectdim",{"2":{"4":4}}],["self",{"2":{"4":2}}],["seed=100",{"2":{"12":1,"16":1}}],["seemps",{"2":{"9":1}}],["see",{"2":{"4":7,"5":3,"21":2}}],["sets",{"2":{"5":1}}],["set",{"2":{"4":1,"30":1}}],["so",{"2":{"13":1}}],["some",{"2":{"5":1,"7":1}}],["socket",{"2":{"3":9}}],["source",{"2":{"1":1,"2":5,"3":9,"4":12,"5":8,"9":1,"21":2,"38":1}}],["swapped",{"2":{"3":1}}],["simplification",{"0":{"33":1,"37":1}}],["simplify",{"2":{"30":1}}],["similar",{"2":{"21":1}}],["since",{"2":{"29":1}}],["single",{"2":{"13":1}}],["site",{"2":{"16":6}}],["sites",{"2":{"3":9}}],["size",{"2":{"2":3,"4":3,"5":1,"8":1,"16":2,"29":4,"30":2}}],["svd",{"2":{"2":5}}],["symbolic",{"2":{"21":1}}],["symbols",{"2":{"4":2,"29":2}}],["symbol",{"2":{"2":4,"4":5}}],["s",{"2":{"2":2,"3":10,"4":3,"5":1,"7":1,"9":1,"15":1,"21":1,"22":1,"28":1,"30":1}}],["multi",{"2":{"22":1}}],["multilinear",{"2":{"4":1,"28":1}}],["most",{"2":{"28":1}}],["more",{"2":{"16":1,"21":1,"30":1}}],["modify",{"2":{"30":1}}],["modification",{"0":{"24":1},"1":{"25":1,"26":1}}],["modifications",{"2":{"13":1}}],["modern",{"2":{"7":1}}],["missleading",{"2":{"29":1}}],["missing",{"2":{"2":4,"3":20,"4":6,"5":2,"21":2}}],["mixed",{"2":{"16":3}}],["mixedcanonical",{"0":{"16":1},"2":{"13":1,"16":2}}],["might",{"2":{"13":1,"28":1}}],["mpos",{"2":{"16":1}}],["mpo",{"2":{"7":2,"16":7}}],["mpss",{"2":{"16":1}}],["mps",{"0":{"1":1,"12":1},"1":{"13":1,"14":1,"15":1,"16":1},"2":{"1":1,"7":2,"12":6,"13":8,"14":2,"15":6,"16":14}}],["meaning",{"2":{"29":1}}],["me",{"2":{"28":1}}],["methods",{"2":{"7":1,"30":1}}],["merge",{"2":{"3":1,"4":3}}],["maximum",{"2":{"30":1}}],["maxdim=100",{"2":{"16":1}}],["maxdim=4",{"2":{"12":1,"16":2}}],["many",{"2":{"28":1,"29":1}}],["manipulate",{"2":{"13":1}}],["major",{"2":{"16":1}}],["making",{"2":{"13":1}}],["makie",{"2":{"11":1,"38":2}}],["matrices",{"2":{"28":1}}],["matrix",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1},"2":{"1":1,"12":1,"16":7}}],["mathematicians",{"2":{"28":1}}],["mature",{"2":{"9":1}}],["main",{"2":{"9":1}}],["may",{"2":{"8":1,"14":1,"16":1,"29":1}}],["mapping",{"2":{"4":1}}],["axis3",{"2":{"38":1}}],["axis",{"2":{"38":1}}],["ax",{"2":{"38":1}}],["available",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1}}],["avoid",{"2":{"8":1}}],["ability",{"2":{"30":1}}],["about",{"2":{"22":1,"28":1}}],["absolute",{"2":{"5":3}}],["abstractarray",{"2":{"29":1}}],["abstractansatz",{"2":{"1":1,"7":1}}],["abstractmps",{"2":{"7":1}}],["abstractmpo",{"2":{"7":1}}],["abstract",{"2":{"7":2}}],["abstractvecortuple",{"2":{"4":2}}],["abstracttensornetwork",{"2":{"4":10,"7":1,"21":2}}],["abstractquantum",{"2":{"3":6,"7":1}}],["aka",{"2":{"21":1}}],["age",{"2":{"16":1}}],["approach",{"2":{"30":1}}],["appropriate",{"2":{"13":1}}],["application",{"2":{"28":1}}],["apply",{"2":{"16":1,"30":2}}],["append",{"2":{"4":3}}],["accessed",{"2":{"13":1}}],["act",{"2":{"7":1}}],["affect",{"2":{"13":1}}],["automatic",{"2":{"11":1}}],["at",{"2":{"9":1,"16":2}}],["atol",{"2":{"5":4}}],["assumes",{"2":{"13":1}}],["as",{"2":{"7":2,"12":1,"13":1,"15":2,"21":2,"22":1,"28":4,"29":3,"38":1}}],["algebra",{"2":{"28":2,"29":1}}],["algorithm",{"2":{"13":1}}],["algorithms",{"2":{"13":1}}],["alter",{"2":{"13":1}}],["always",{"2":{"5":1}}],["also",{"2":{"4":7,"5":3,"12":1,"15":1,"21":2,"29":1,"30":2}}],["all",{"2":{"2":6,"4":1,"5":1,"7":1}}],["additional",{"2":{"16":1}}],["additionally",{"2":{"16":1}}],["add",{"0":{"25":1},"2":{"4":2}}],["adjoint",{"2":{"3":2}}],["annals",{"2":{"16":1}}],["any",{"2":{"13":1,"14":1}}],["anti",{"0":{"35":1},"2":{"5":1}}],["antidiagonalgauging",{"2":{"5":1}}],["an",{"2":{"3":2,"13":1,"14":1,"15":1,"16":4,"21":1,"29":2}}],["and",{"0":{"7":1},"2":{"3":3,"4":4,"7":4,"9":1,"11":1,"12":2,"13":3,"15":1,"16":6,"21":2,"22":1,"28":1,"29":4,"30":2,"38":1}}],["ansatz",{"0":{"0":1,"10":1,"17":1},"1":{"1":1},"2":{"1":1,"7":5,"12":1}}],["argument",{"2":{"12":1}}],["arguments",{"2":{"2":3,"5":3,"21":1,"38":1}}],["are",{"2":{"3":1,"8":1,"9":1,"12":4,"16":4,"22":2,"28":5,"29":1,"30":1,"38":1}}],["arrays",{"2":{"28":1}}],["array",{"2":{"2":1,"29":4}}],["a",{"2":{"1":1,"2":8,"3":11,"4":15,"5":8,"7":2,"8":1,"9":3,"12":2,"13":1,"14":1,"15":1,"21":7,"22":2,"28":9,"29":8,"30":2,"38":5}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR262/assets/chunks/@localSearchIndexroot.CPuLW2tQ.js b/previews/PR262/assets/chunks/@localSearchIndexroot.CPuLW2tQ.js deleted file mode 100644 index 7dc476b2..00000000 --- a/previews/PR262/assets/chunks/@localSearchIndexroot.CPuLW2tQ.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":41,"nextId":41,"documentIds":{"0":"/Tenet.jl/previews/PR262/api/ansatz#ansatz","1":"/Tenet.jl/previews/PR262/api/ansatz#mps","2":"/Tenet.jl/previews/PR262/api/quantum#quantum","3":"/Tenet.jl/previews/PR262/api/tensor#tensor","4":"/Tenet.jl/previews/PR262/api/tensornetwork#tensornetwork","5":"/Tenet.jl/previews/PR262/api/tensornetwork#transformations","6":"/Tenet.jl/previews/PR262/developer/cached-field#Cached-field","7":"/Tenet.jl/previews/PR262/developer/type-hierarchy#Inheritance-and-Traits","8":"/Tenet.jl/previews/PR262/developer/unsafe-region#Unsafe-regions","9":"/Tenet.jl/previews/PR262/friends#friends","10":"/Tenet.jl/previews/PR262/#features","11":"/Tenet.jl/previews/PR262/manual/ansatz/#ansatz","12":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Matrix-Product-States-(MPS)","13":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Canonical-Forms","14":"/Tenet.jl/previews/PR262/manual/ansatz/mps#NonCanonical-Form","15":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Canonical-Form","16":"/Tenet.jl/previews/PR262/manual/ansatz/mps#MixedCanonical-Form","17":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Additional-Resources","18":"/Tenet.jl/previews/PR262/manual/ansatz/mps#Matrix-Product-Operators-(MPO)","19":"/Tenet.jl/previews/PR262/manual/ansatz/product#Product-ansatz","20":"/Tenet.jl/previews/PR262/manual/contraction#contraction","21":"/Tenet.jl/previews/PR262/manual/quantum#Quantum-Tensor-Networks","22":"/Tenet.jl/previews/PR262/manual/quantum#queries","23":"/Tenet.jl/previews/PR262/manual/quantum#Connecting-Quantum-Tensor-Networks","24":"/Tenet.jl/previews/PR262/manual/tensor-network#Tensor-Networks","25":"/Tenet.jl/previews/PR262/manual/tensor-network#Query-information","26":"/Tenet.jl/previews/PR262/manual/tensor-network#modification","27":"/Tenet.jl/previews/PR262/manual/tensor-network#Add/Remove-tensors","28":"/Tenet.jl/previews/PR262/manual/tensor-network#Replace-existing-elements","29":"/Tenet.jl/previews/PR262/manual/tensor-network#slicing","30":"/Tenet.jl/previews/PR262/manual/tensors#tensors","31":"/Tenet.jl/previews/PR262/manual/tensors#The-Tensor-type","32":"/Tenet.jl/previews/PR262/manual/transformations#transformations","33":"/Tenet.jl/previews/PR262/manual/transformations#Available-transformations","34":"/Tenet.jl/previews/PR262/manual/transformations#Hyperindex-converter","35":"/Tenet.jl/previews/PR262/manual/transformations#Contraction-simplification","36":"/Tenet.jl/previews/PR262/manual/transformations#Diagonal-reduction","37":"/Tenet.jl/previews/PR262/manual/transformations#Anti-diagonal-reduction","38":"/Tenet.jl/previews/PR262/manual/transformations#Dimension-truncation","39":"/Tenet.jl/previews/PR262/manual/transformations#Split-simplification","40":"/Tenet.jl/previews/PR262/visualization#visualization"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,1],"1":[1,1,14],"2":[1,1,92],"3":[1,1,70],"4":[1,1,148],"5":[1,1,120],"6":[2,1,1],"7":[3,1,123],"8":[2,1,25],"9":[1,1,61],"10":[1,1,21],"11":[1,1,1],"12":[5,1,97],"13":[2,5,84],"14":[2,6,39],"15":[2,6,47],"16":[2,6,66],"17":[2,8,37],"18":[5,5,60],"19":[2,1,1],"20":[1,1,99],"21":[3,1,1],"22":[1,3,1],"23":[4,3,1],"24":[2,1,47],"25":[2,2,1],"26":[1,2,1],"27":[3,3,1],"28":[3,3,1],"29":[1,2,1],"30":[1,1,118],"31":[3,1,134],"32":[1,1,96],"33":[2,1,1],"34":[2,3,1],"35":[2,3,1],"36":[2,3,1],"37":[3,3,1],"38":[2,3,1],"39":[2,3,1],"40":[1,1,53]},"averageFieldLength":[1.951219512195122,2.292682926829268,40.73170731707317],"storedFields":{"0":{"title":"Ansatz","titles":[]},"1":{"title":"MPS","titles":["Ansatz"]},"2":{"title":"Quantum","titles":[]},"3":{"title":"Tensor","titles":[]},"4":{"title":"TensorNetwork","titles":[]},"5":{"title":"Transformations","titles":["TensorNetwork"]},"6":{"title":"Cached field","titles":[]},"7":{"title":"Inheritance and Traits","titles":[]},"8":{"title":"Unsafe regions","titles":[]},"9":{"title":"Friends","titles":[]},"10":{"title":"Features","titles":[]},"11":{"title":"Ansatz","titles":[]},"12":{"title":"Matrix Product States (MPS)","titles":[]},"13":{"title":"Canonical Forms","titles":["Matrix Product States (MPS)"]},"14":{"title":"NonCanonical Form","titles":["Matrix Product States (MPS)","Canonical Forms"]},"15":{"title":"Canonical Form","titles":["Matrix Product States (MPS)","Canonical Forms"]},"16":{"title":"MixedCanonical Form","titles":["Matrix Product States (MPS)","Canonical Forms"]},"17":{"title":"Additional Resources","titles":["Matrix Product States (MPS)","Canonical Forms","MixedCanonical Form"]},"18":{"title":"Matrix Product Operators (MPO)","titles":["Matrix Product States (MPS)"]},"19":{"title":"Product ansatz","titles":[]},"20":{"title":"Contraction","titles":[]},"21":{"title":"Quantum Tensor Networks","titles":[]},"22":{"title":"Queries","titles":["Quantum Tensor Networks"]},"23":{"title":"Connecting Quantum Tensor Networks","titles":["Quantum Tensor Networks"]},"24":{"title":"Tensor Networks","titles":[]},"25":{"title":"Query information","titles":["Tensor Networks"]},"26":{"title":"Modification","titles":["Tensor Networks"]},"27":{"title":"Add/Remove tensors","titles":["Tensor Networks","Modification"]},"28":{"title":"Replace existing elements","titles":["Tensor Networks","Modification"]},"29":{"title":"Slicing","titles":["Tensor Networks"]},"30":{"title":"Tensors","titles":[]},"31":{"title":"The Tensor type","titles":["Tensors"]},"32":{"title":"Transformations","titles":[]},"33":{"title":"Available transformations","titles":["Transformations"]},"34":{"title":"Hyperindex converter","titles":["Transformations","Available transformations"]},"35":{"title":"Contraction simplification","titles":["Transformations","Available transformations"]},"36":{"title":"Diagonal reduction","titles":["Transformations","Available transformations"]},"37":{"title":"Anti-diagonal reduction","titles":["Transformations","Available transformations"]},"38":{"title":"Dimension truncation","titles":["Transformations","Available transformations"]},"39":{"title":"Split simplification","titles":["Transformations","Available transformations"]},"40":{"title":"Visualization","titles":[]}},"dirtCount":0,"index":[["↩︎",{"2":{"31":3}}],["775862",{"2":{"31":1}}],["797624",{"2":{"31":1}}],["762536",{"2":{"31":1}}],["72426",{"2":{"31":1}}],["722715",{"2":{"31":1}}],["705777",{"2":{"31":1}}],["944622",{"2":{"31":1}}],["915701",{"2":{"31":1}}],["963517",{"2":{"31":1}}],["96",{"2":{"17":1}}],["690868",{"2":{"31":1}}],["643453",{"2":{"31":1}}],["688589",{"2":{"31":1}}],["0802031",{"2":{"31":1}}],["0512209",{"2":{"31":1}}],["0935597",{"2":{"31":1}}],["0302424",{"2":{"31":1}}],["0711621",{"2":{"31":1}}],["0",{"2":{"30":1,"31":30}}],["∈fdim⁡",{"2":{"30":1}}],["↦fin",{"2":{"30":1}}],["×⋯×fdim⁡",{"2":{"30":1}}],["∑ijklmnopaimbijpcnjkdpklemnofolcan",{"2":{"24":1}}],["|ψ",{"2":{"15":1}}],["λn−1γn−1in−1λnγnin|i1",{"2":{"15":1}}],["λ",{"2":{"15":1}}],["γ",{"2":{"15":1}}],["⚠️",{"2":{"13":1}}],["8",{"2":{"12":2}}],["2021",{"2":{"32":1}}],["2011",{"2":{"17":1}}],["270657",{"2":{"31":1}}],["218395",{"2":{"31":1}}],["2",{"2":{"12":3,"13":7,"15":7,"16":8,"18":1,"30":2,"31":3}}],["499171",{"2":{"31":1}}],["445072",{"2":{"31":1}}],["4",{"2":{"12":2}}],["30",{"2":{"31":1}}],["345115",{"2":{"31":1}}],["31609",{"2":{"31":1}}],["3×5×2",{"2":{"31":1}}],["326",{"2":{"17":1}}],["3",{"2":{"16":1,"30":1,"31":4}}],["3d",{"2":{"10":1}}],["39",{"2":{"2":10,"3":2,"4":3,"5":3,"7":2,"9":2,"15":1,"20":2,"24":1,"30":2,"32":2}}],["your",{"2":{"9":1,"32":1}}],["you",{"2":{"8":1,"12":1,"15":1,"16":1,"17":1,"30":3,"31":1,"32":1,"40":1}}],["years",{"2":{"7":1}}],["50807",{"2":{"31":1}}],["569817",{"2":{"31":1}}],["559118",{"2":{"31":1}}],["532194",{"2":{"31":1}}],["5",{"2":{"7":10,"12":1,"18":1,"31":3}}],[">|contains|",{"2":{"7":5}}],[">|inherits|",{"2":{"7":10}}],["just",{"2":{"40":1}}],["juliagraphplot",{"2":{"40":2}}],["julia>",{"2":{"31":2}}],["juliajulia>",{"2":{"31":2}}],["juliaeinexpr",{"2":{"20":1}}],["julia",{"2":{"7":4,"8":1,"9":1}}],["juliadiagonalreduction",{"2":{"5":1}}],["juliadelete",{"2":{"4":1}}],["juliahypergroup",{"2":{"5":1}}],["juliahyperflatten",{"2":{"5":1}}],["juliatruncate",{"2":{"5":1}}],["juliatransform",{"2":{"5":2}}],["juliatensornetwork",{"2":{"2":1,"4":1}}],["juliacopy",{"2":{"4":1}}],["juliacontractsimplification",{"2":{"5":1}}],["juliacontract",{"2":{"3":1,"20":1}}],["juliaview",{"2":{"4":1}}],["juliareplace",{"2":{"4":1}}],["juliamermaid",{"2":{"7":1}}],["juliamerge",{"2":{"4":1}}],["juliamps",{"2":{"1":1,"12":1,"13":1,"15":1,"16":1}}],["juliaantidiagonalgauging",{"2":{"5":1}}],["juliaappend",{"2":{"4":1}}],["juliaadjoint",{"2":{"2":1}}],["juliapop",{"2":{"4":1}}],["juliapush",{"2":{"4":1}}],["julialinearalgebra",{"2":{"3":3}}],["juliabase",{"2":{"3":1}}],["juliaoperator",{"2":{"2":1}}],["juliaslice",{"2":{"4":1}}],["juliaselectdim",{"2":{"4":1}}],["juliasize",{"2":{"4":1}}],["juliasites",{"2":{"2":1}}],["juliastate",{"2":{"2":1}}],["juliascalar",{"2":{"2":1}}],["juliasocket",{"2":{"2":1}}],["juliansites",{"2":{"2":1}}],["juliaquantum",{"2":{"2":1}}],["j",{"2":{"30":1,"31":2}}],["jokes",{"2":{"30":1}}],["jl",{"2":{"9":2}}],["java",{"2":{"7":1}}],["giving",{"2":{"30":1}}],["give",{"2":{"30":1}}],["given",{"2":{"20":1}}],["gridposition",{"2":{"40":1}}],["gray",{"2":{"32":1}}],["graphplot",{"2":{"40":5}}],["graphmakie",{"2":{"40":3}}],["graphical",{"2":{"24":1}}],["graph",{"2":{"4":3,"7":1,"24":1,"40":1}}],["graphs",{"2":{"3":1}}],["greedy",{"2":{"20":1}}],["group",{"2":{"17":1}}],["good",{"2":{"30":1,"32":1}}],["gonna",{"2":{"30":1}}],["go",{"2":{"7":1}}],["generalization",{"2":{"30":1}}],["general",{"2":{"7":1,"14":1}}],["147625",{"2":{"31":1}}],["189977",{"2":{"31":1}}],["138145",{"2":{"31":1}}],["192",{"2":{"17":1}}],["1",{"2":{"12":4,"16":1,"17":1,"18":7,"30":4,"31":1}}],["1d",{"2":{"12":1}}],["12",{"2":{"5":3}}],["1e",{"2":{"5":3}}],["higher",{"2":{"30":1}}],["hierarchy",{"2":{"7":1}}],["however",{"2":{"31":1}}],["how",{"2":{"30":1}}],["hood",{"2":{"13":1}}],["here",{"2":{"30":2}}],["have",{"2":{"7":2,"18":2,"30":1}}],["has",{"2":{"4":2,"5":2,"7":2,"13":1,"20":1,"31":1}}],["hyperindex",{"0":{"34":1}}],["hyperindices",{"2":{"5":2}}],["hypergroup",{"2":{"5":2}}],["hyperflatten",{"2":{"5":2}}],["x",{"2":{"4":1}}],["x3c",{"2":{"1":1,"2":3,"4":1,"5":6}}],["≡",{"2":{"4":2}}],["v",{"2":{"30":3}}],["vector",{"2":{"16":1,"30":2,"31":1}}],["vectors",{"2":{"15":1,"30":2}}],["version",{"2":{"5":1,"18":1}}],["vertices",{"2":{"4":1}}],["visually",{"2":{"24":1}}],["visualization",{"0":{"40":1},"2":{"10":1}}],["visualizing",{"2":{"5":1}}],["vidal",{"2":{"15":1}}],["via",{"2":{"13":1}}],["viewed",{"2":{"30":1}}],["view",{"2":{"4":3}}],["virtual",{"2":{"3":3}}],["virtualind",{"2":{"3":6}}],["various",{"2":{"4":1,"32":1}}],["u",{"2":{"17":1}}],["using",{"2":{"15":1,"16":2,"31":1,"32":1}}],["useful",{"2":{"14":1}}],["use",{"2":{"13":1,"30":1,"31":1}}],["used",{"2":{"3":6,"5":1,"13":2,"30":1}}],["up",{"2":{"5":1}}],["under",{"2":{"13":1}}],["underlying",{"2":{"2":1,"3":1}}],["unique",{"2":{"13":1}}],["union",{"2":{"4":1,"40":2}}],["unsafe",{"0":{"8":1},"2":{"8":1}}],["kourtis",{"2":{"32":1}}],["k",{"2":{"30":1,"31":1}}],["kill",{"2":{"30":1}}],["kind",{"2":{"7":1}}],["know",{"2":{"30":1}}],["known",{"2":{"12":1,"15":1,"31":1}}],["keyword",{"2":{"3":3,"5":3,"12":1,"20":1,"40":1}}],["kwargs",{"2":{"2":2,"3":3,"20":2,"40":4}}],["float64",{"2":{"31":2}}],["flexible",{"2":{"9":1}}],["fdim⁡",{"2":{"30":1}}],["f",{"2":{"30":1,"40":1}}],["features",{"0":{"10":1}}],["framework",{"2":{"9":1}}],["friends",{"0":{"9":1}}],["from",{"2":{"4":2,"7":2,"14":1}}],["false",{"2":{"40":1}}],["factoring",{"2":{"32":1}}],["factorization",{"2":{"3":9}}],["favouring",{"2":{"7":1}}],["fig",{"2":{"12":3,"18":3}}],["figure",{"2":{"12":1,"18":1,"40":1}}],["fit",{"2":{"9":1}}],["fields",{"2":{"7":3,"12":1,"31":1}}],["field",{"0":{"6":1},"2":{"16":1,"30":1}}],["first",{"2":{"4":2}}],["further",{"2":{"32":1}}],["full",{"2":{"13":1}}],["fulfill",{"2":{"5":1}}],["fulfil",{"2":{"5":1}}],["functions",{"2":{"16":1,"24":2,"32":1}}],["function",{"2":{"13":3,"30":1,"31":1}}],["fuse",{"2":{"4":1}}],["found",{"2":{"32":1}}],["focus",{"2":{"9":1}}],["following",{"2":{"4":1,"24":2}}],["forbid",{"2":{"7":1}}],["forms",{"0":{"13":1},"1":{"14":1,"15":1,"16":1,"17":1},"2":{"13":2,"17":1}}],["form",{"0":{"14":1,"15":1,"16":1},"1":{"17":1},"2":{"7":1,"13":11,"14":3,"15":4,"16":4,"20":1}}],["for",{"2":{"2":20,"3":4,"4":6,"5":3,"9":1,"14":2,"17":1,"20":4,"24":2,"30":1,"31":1,"32":1,"40":1}}],["r",{"2":{"12":2}}],["rank",{"2":{"31":2,"32":2}}],["rand",{"2":{"4":1,"12":4,"13":3,"15":3,"16":3,"18":1,"31":1}}],["random",{"2":{"3":3}}],["rather",{"2":{"7":1}}],["rust",{"2":{"7":1}}],["right",{"2":{"3":12,"12":2,"16":4}}],["reduction",{"0":{"36":1,"37":1}}],["reducing",{"2":{"32":1}}],["reduces",{"2":{"32":1}}],["reduce",{"2":{"5":1,"32":2}}],["reason",{"2":{"32":1}}],["reached",{"2":{"30":1}}],["relationships",{"2":{"31":1}}],["relates",{"2":{"30":1}}],["remainder",{"2":{"30":1}}],["removed",{"2":{"4":1}}],["remove",{"0":{"27":1},"2":{"4":2}}],["renormalization",{"2":{"17":1}}],["renaming",{"2":{"4":1}}],["refer",{"2":{"17":1}}],["referenced",{"2":{"2":1}}],["requires",{"2":{"13":1}}],["region",{"2":{"8":1}}],["regions",{"0":{"8":1}}],["regularity",{"2":{"4":1}}],["recommend",{"2":{"9":1}}],["recent",{"2":{"7":1}}],["recursive",{"2":{"4":1,"31":1}}],["rest",{"2":{"40":1}}],["restricted",{"2":{"7":1}}],["resources",{"0":{"17":1}}],["respectively",{"2":{"12":1,"16":1}}],["result",{"2":{"5":1}}],["reverse",{"2":{"5":1}}],["replaced",{"2":{"4":1}}],["replace",{"0":{"28":1},"2":{"4":3}}],["represents",{"2":{"15":1,"20":1}}],["representation",{"2":{"13":1}}],["represented",{"2":{"5":2,"13":1,"24":2,"31":1}}],["represent",{"2":{"4":1,"12":1,"24":2}}],["representing",{"2":{"2":3,"4":1,"24":1}}],["return",{"2":{"3":1,"4":7,"5":1,"16":1,"20":1}}],["returns",{"2":{"2":5,"4":1}}],["purposes",{"2":{"14":1}}],["push",{"2":{"4":3,"8":1}}],["physical",{"2":{"12":2}}],["physics",{"2":{"9":1,"17":1}}],["permuting",{"2":{"32":1}}],["per",{"2":{"18":2}}],["periodic",{"2":{"12":1}}],["performing",{"2":{"13":1}}],["performed",{"2":{"5":1}}],["perform",{"2":{"3":4}}],["pytorch",{"2":{"9":1}}],["python",{"2":{"7":1,"9":2}}],["position",{"2":{"16":1}}],["powered",{"2":{"10":3}}],["polymorphic",{"2":{"7":1}}],["popular",{"2":{"7":1}}],["pop",{"2":{"4":4}}],["predefined",{"2":{"32":1}}],["prepare",{"2":{"32":1}}],["prefer",{"2":{"31":1}}],["preemptively",{"2":{"5":1}}],["practice",{"2":{"7":1,"32":1}}],["provides",{"2":{"40":1}}],["provide",{"2":{"32":1}}],["probably",{"2":{"30":1}}],["problem",{"2":{"9":1,"32":1}}],["programming",{"2":{"7":1}}],["projection",{"2":{"4":1}}],["projected",{"2":{"4":2}}],["product",{"0":{"12":1,"18":1,"19":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"1":1,"7":2,"12":1,"17":2,"18":2}}],["please",{"2":{"30":1}}],["plot",{"2":{"5":1,"12":1,"18":1,"40":1}}],["place",{"2":{"4":1,"5":1,"20":1}}],["package",{"2":{"40":1}}],["path",{"2":{"20":4,"32":1}}],["passing",{"2":{"12":1,"31":1}}],["passed",{"2":{"4":2,"20":1,"40":1}}],["parts",{"2":{"16":1}}],["particular",{"2":{"7":1,"14":1,"16":1}}],["parent",{"2":{"3":1,"7":1}}],["pair",{"2":{"5":1}}],["=c∈f∀i",{"2":{"30":1}}],["=∑i1",{"2":{"15":1}}],["=>",{"2":{"4":3}}],["===",{"2":{"4":2}}],["=",{"2":{"2":1,"12":3,"13":1,"15":1,"16":1,"18":2,"20":2,"31":3}}],["wraps",{"2":{"31":1}}],["written",{"2":{"9":3}}],["writing",{"2":{"7":1}}],["word",{"2":{"31":1}}],["would",{"2":{"30":1}}],["won",{"2":{"20":1}}],["we",{"2":{"9":1,"30":2,"31":1,"32":1}}],["want",{"2":{"8":1}}],["why",{"2":{"32":1}}],["whatever",{"2":{"31":1}}],["wha",{"2":{"30":1}}],["which",{"2":{"7":2,"8":1,"9":1,"13":1,"16":2,"20":2,"31":1,"32":2}}],["while",{"2":{"5":1,"18":1}}],["whose",{"2":{"5":1,"12":1,"30":1}}],["when",{"2":{"5":3,"13":1,"14":1}}],["where",{"2":{"4":2,"5":1,"12":1,"30":1}}],["whether",{"2":{"2":1}}],["wild",{"2":{"9":1}}],["will",{"2":{"4":3,"13":1}}],["without",{"2":{"13":1,"14":1}}],["with",{"2":{"2":5,"4":1,"5":2,"7":1,"9":1,"24":1,"30":1,"31":2}}],["lt",{"2":{"16":1}}],["l",{"2":{"12":2}}],["layout=stress",{"2":{"40":1}}],["layout=spring",{"2":{"12":1,"18":1}}],["layman",{"2":{"30":1}}],["labels=true",{"2":{"40":1}}],["labels",{"2":{"40":2}}],["label",{"2":{"12":1,"18":1}}],["laid",{"2":{"12":1,"20":1}}],["large",{"2":{"10":1}}],["languages",{"2":{"7":2}}],["lanes",{"2":{"2":1}}],["locally",{"2":{"32":1}}],["lower",{"2":{"20":1}}],["look",{"2":{"9":1}}],["looks",{"2":{"7":1}}],["log",{"2":{"2":10,"3":2,"4":3,"5":1,"20":1}}],["lies",{"2":{"32":1}}],["library",{"2":{"9":2,"20":1}}],["libraries",{"2":{"9":1}}],["like",{"2":{"4":1,"7":3,"31":1}}],["list",{"2":{"4":2,"5":2,"31":2}}],["linear",{"2":{"24":1,"30":2,"31":2}}],["linearalgebra",{"2":{"3":3}}],["linalg",{"2":{"3":1}}],["lu",{"2":{"3":5}}],["length",{"2":{"31":1}}],["letters",{"2":{"30":1}}],["level",{"2":{"20":1}}],["left",{"2":{"3":12,"12":2,"16":4}}],["leads",{"2":{"2":1}}],["drastically",{"2":{"32":1}}],["due",{"2":{"12":1}}],["dual",{"2":{"2":1}}],["dasharray",{"2":{"7":5}}],["don",{"2":{"30":1}}],["do",{"2":{"5":1,"7":1,"14":1,"31":1}}],["doesn",{"2":{"5":2,"9":1,"32":1}}],["documentation",{"2":{"20":1}}],["documenter",{"2":{"2":10,"3":2,"4":3,"5":1,"20":1}}],["docstring",{"2":{"2":20,"3":4,"4":6,"5":2,"20":2}}],["definitions",{"2":{"31":1}}],["definition",{"2":{"30":1}}],["define",{"2":{"30":1}}],["default",{"2":{"5":1,"12":1,"14":1}}],["defaults",{"2":{"3":9,"5":5,"20":1,"40":1}}],["density",{"2":{"17":1}}],["depth",{"2":{"17":1}}],["depending",{"2":{"4":1,"12":1,"13":1}}],["design",{"2":{"7":1,"9":1}}],["delegated",{"2":{"20":1}}],["delete",{"2":{"4":2}}],["deltaarrays",{"2":{"5":2}}],["details",{"2":{"2":10,"3":2,"4":3,"5":1,"20":1}}],["difference",{"2":{"18":1}}],["different",{"2":{"13":1}}],["differentiation",{"2":{"10":1}}],["dispatched",{"2":{"31":1}}],["dispatch",{"2":{"13":1}}],["directly",{"2":{"5":1}}],["directionality",{"2":{"2":1}}],["diagonal",{"0":{"36":1,"37":1},"2":{"5":2,"15":1}}],["diagonalreduction",{"2":{"5":1}}],["dims=nonunique",{"2":{"3":1}}],["dimensions",{"2":{"30":1}}],["dimensional",{"2":{"30":1}}],["dimensionality",{"2":{"4":1,"31":3}}],["dimensionalities",{"2":{"4":1}}],["dimension",{"0":{"38":1},"2":{"3":1,"4":3,"5":2}}],["crucial",{"2":{"32":1}}],["create",{"2":{"31":1}}],["center",{"2":{"16":5}}],["certain",{"2":{"14":1}}],["c=0",{"2":{"12":1,"18":1}}],["current",{"2":{"13":1}}],["currently",{"2":{"12":1,"13":1,"18":1}}],["cuttings",{"2":{"10":1}}],["changing",{"2":{"13":1}}],["chains",{"2":{"12":1}}],["chain",{"2":{"12":1,"16":1}}],["chainrules",{"2":{"10":1}}],["choice",{"2":{"13":1}}],["checks",{"2":{"8":1}}],["check",{"2":{"2":10,"3":2,"4":3,"5":1,"13":2,"16":1,"20":2}}],["closed",{"2":{"12":1}}],["class",{"2":{"7":1}}],["clear",{"2":{"7":1}}],["c++",{"2":{"7":1}}],["careful",{"2":{"13":1}}],["case",{"2":{"9":1,"30":1}}],["cases",{"2":{"8":1}}],["canonize",{"2":{"15":2,"16":2}}],["canonicalform",{"2":{"13":1}}],["canonical",{"0":{"13":1,"15":1},"1":{"14":1,"15":1,"16":1,"17":1},"2":{"13":5,"14":1,"15":2,"16":4,"17":1}}],["cannot",{"2":{"7":1}}],["can",{"2":{"7":3,"12":2,"13":4,"15":1,"16":3,"24":1,"30":1,"31":4,"32":2,"40":1}}],["cached",{"0":{"6":1}}],["calling",{"2":{"15":1}}],["call",{"2":{"4":1,"40":1}}],["causality",{"2":{"2":1}}],["cost",{"2":{"32":1}}],["coefficients",{"2":{"15":1}}],["correct",{"2":{"13":2,"30":1}}],["correspond",{"2":{"4":1}}],["computer",{"2":{"30":1}}],["computations",{"2":{"14":1,"32":1}}],["computational",{"2":{"5":1,"32":1}}],["complex",{"2":{"24":1}}],["completely",{"2":{"7":1}}],["composition",{"2":{"7":1}}],["compared",{"2":{"7":1}}],["columns",{"2":{"5":1}}],["copy",{"2":{"4":4,"5":2}}],["connecting",{"0":{"23":1}}],["connected",{"2":{"20":1}}],["consulted",{"2":{"31":1}}],["constructor",{"2":{"12":1}}],["considered",{"2":{"7":1}}],["concrete",{"2":{"7":1}}],["conditions",{"2":{"12":3,"14":1,"18":1}}],["condition",{"2":{"5":1}}],["converter",{"0":{"34":1}}],["convert",{"2":{"5":2,"15":1,"16":1}}],["configs",{"2":{"5":2}}],["config",{"2":{"5":2}}],["containing",{"2":{"15":1}}],["contains",{"2":{"5":1,"16":1}}],["contain",{"2":{"4":1}}],["contracting",{"2":{"32":1}}],["contraction",{"0":{"20":1,"35":1},"2":{"3":1,"10":2,"20":5,"32":2}}],["contracted",{"2":{"20":1}}],["contractsimplification",{"2":{"5":1}}],["contract",{"2":{"3":1,"5":1,"20":4}}],["conjugate",{"2":{"2":1}}],["einsum",{"2":{"20":1}}],["einstein",{"2":{"20":1}}],["einexpr",{"2":{"20":3}}],["einexprs",{"2":{"10":2,"20":4}}],["every",{"2":{"20":1}}],["effectively",{"2":{"16":1}}],["efficiency",{"2":{"5":1,"13":1}}],["enough",{"2":{"30":1}}],["entanglement",{"2":{"16":1}}],["ensure",{"2":{"13":1}}],["end",{"2":{"8":1}}],["enhance",{"2":{"5":1}}],["es",{"2":{"7":1}}],["each",{"2":{"4":1,"30":1,"31":1}}],["extension",{"2":{"40":1}}],["existing",{"0":{"28":1}}],["example",{"2":{"24":1,"31":1}}],["examplefig",{"2":{"12":1,"18":1}}],["execution",{"2":{"20":1}}],["expr",{"2":{"20":1}}],["expression",{"2":{"20":2}}],["expressed",{"2":{"15":1}}],["expected",{"2":{"4":1}}],["except",{"2":{"3":6}}],["elements",{"0":{"28":1},"2":{"5":1}}],["element",{"2":{"4":2}}],["egality",{"2":{"4":2}}],["equivalent",{"2":{"4":2}}],["equation",{"2":{"4":1,"24":1}}],["edges",{"2":{"4":1,"24":1}}],["e",{"2":{"2":5,"4":1,"7":1,"12":1,"18":1,"20":1}}],["import",{"2":{"40":1}}],["importantly",{"2":{"32":1}}],["implementing",{"2":{"7":1}}],["implement",{"2":{"7":1}}],["identify",{"2":{"30":1}}],["id5",{"2":{"7":4}}],["id4",{"2":{"7":4}}],["id3",{"2":{"7":5}}],["id2",{"2":{"7":4}}],["id1",{"2":{"7":4}}],["if",{"2":{"2":1,"4":5,"9":1,"13":1,"16":1,"30":1,"40":1}}],["isrightcanonical",{"2":{"16":2}}],["isleftcanonical",{"2":{"16":2}}],["isometric",{"2":{"15":1}}],["is",{"2":{"2":1,"4":6,"5":1,"7":1,"12":1,"13":4,"14":3,"15":1,"16":3,"18":1,"20":3,"30":6,"31":2,"32":2}}],["itself",{"2":{"32":1}}],["iterations=1000",{"2":{"12":1,"18":1}}],["itensornetworks",{"2":{"9":1}}],["itensors",{"2":{"9":1}}],["it",{"2":{"2":1,"4":3,"5":4,"13":1,"14":1,"20":2,"30":2,"31":3,"32":2}}],["i",{"2":{"2":5,"3":2,"4":8,"7":1,"12":1,"18":1,"20":1,"30":3,"31":1}}],["involved",{"2":{"32":1}}],["involve",{"2":{"32":1}}],["info",{"2":{"20":1}}],["information",{"0":{"25":1},"2":{"16":1,"17":1,"24":1}}],["inγ1i1λ2γ2i2",{"2":{"15":1}}],["initialized",{"2":{"14":1}}],["inspiration",{"2":{"9":1}}],["instantiated",{"2":{"7":2}}],["instead",{"2":{"4":1,"7":1}}],["increasingly",{"2":{"7":1}}],["increase",{"2":{"5":1}}],["inherited",{"2":{"7":2}}],["inheriting",{"2":{"7":1}}],["inheritance",{"0":{"7":1},"2":{"7":2}}],["intuitively",{"2":{"30":1}}],["into",{"2":{"4":1,"5":1}}],["internal",{"2":{"13":1}}],["interconnected",{"2":{"4":1}}],["integer",{"2":{"3":1,"4":2}}],["in",{"2":{"3":6,"4":3,"5":4,"7":5,"8":1,"9":4,"12":3,"13":3,"14":2,"15":1,"16":3,"17":2,"18":1,"20":3,"24":1,"30":1,"31":2,"32":5}}],["indispensable",{"2":{"32":1}}],["indices",{"2":{"2":1,"3":12,"4":3,"5":4,"12":2,"18":1,"20":2,"24":1,"31":1,"40":1}}],["index",{"2":{"4":11,"8":1,"18":1,"20":2,"31":1}}],["inds",{"2":{"2":1,"3":21,"4":1,"20":1}}],["inputs",{"2":{"2":2,"30":1,"31":2}}],["input",{"2":{"2":3,"18":1}}],["brief",{"2":{"30":1}}],["backend",{"2":{"40":1}}],["bad",{"2":{"7":1}}],["based",{"2":{"32":1}}],["base",{"2":{"2":2,"3":2,"4":11,"7":1}}],["built",{"2":{"9":1}}],["build",{"2":{"2":10,"3":2,"4":3,"5":1,"20":1}}],["but",{"2":{"4":1,"7":2,"12":1,"14":1,"20":1,"30":1,"32":1}}],["bottom",{"2":{"12":1,"18":1}}],["both",{"2":{"2":1,"32":1}}],["boundary",{"2":{"12":3,"18":1}}],["bond",{"2":{"3":3}}],["between",{"2":{"16":1,"18":1,"30":1,"31":2}}],["benefit",{"2":{"14":1}}],["before",{"2":{"13":1}}],["begin",{"2":{"8":1}}],["been",{"2":{"4":2,"5":1,"7":1,"20":1}}],["behaviour",{"2":{"4":1}}],["be",{"2":{"3":6,"4":2,"7":4,"12":1,"13":4,"14":1,"16":1,"20":2,"24":2,"30":2,"31":4,"32":1}}],["b",{"2":{"3":2}}],["by",{"2":{"2":1,"3":1,"5":3,"10":3,"12":1,"15":1,"24":1,"31":2,"32":1}}],["qr",{"2":{"3":5}}],["q",{"2":{"2":5}}],["query",{"0":{"25":1}}],["queried",{"2":{"24":1}}],["queries",{"0":{"22":1}}],["quimb",{"2":{"9":1,"32":1}}],["quot",{"2":{"2":2,"7":2,"30":2}}],["quantum",{"0":{"2":1,"21":1,"23":1},"1":{"22":1,"23":1},"2":{"2":9,"7":2,"12":1}}],["over",{"2":{"30":1}}],["our",{"2":{"30":1,"32":1}}],["outer",{"2":{"12":1}}],["out",{"2":{"12":1,"20":1}}],["outputs",{"2":{"2":2,"20":1}}],["output",{"2":{"2":3,"18":2,"20":1,"30":1,"31":1}}],["o",{"2":{"12":2}}],["options",{"2":{"20":1}}],["optimizer",{"2":{"20":4}}],["optimized",{"2":{"10":1}}],["optimization",{"2":{"20":1}}],["optimal",{"2":{"14":1}}],["operations",{"2":{"5":1,"31":1,"32":1}}],["operation",{"2":{"3":1,"13":1}}],["operators",{"0":{"18":1},"2":{"18":1}}],["operator",{"2":{"2":3,"18":1}}],["open",{"2":{"2":1,"12":5,"18":4,"20":2}}],["oop",{"2":{"7":2}}],["objects",{"2":{"24":1}}],["object",{"2":{"7":1}}],["other",{"2":{"5":1,"9":1,"12":1,"31":1}}],["others",{"2":{"4":2}}],["old",{"2":{"4":4}}],["one",{"2":{"4":2,"16":1,"30":1}}],["on",{"2":{"3":3,"4":2,"7":1,"8":1,"9":2,"12":2,"13":1,"17":1,"40":1}}],["only",{"2":{"2":2,"12":1,"18":2}}],["orthog",{"2":{"16":1}}],["orthogonality",{"2":{"14":2,"16":4}}],["oriented",{"2":{"7":1}}],["order=",{"2":{"12":1}}],["ordering",{"2":{"12":2}}],["order",{"2":{"5":1,"12":1,"30":5,"31":2}}],["or",{"2":{"2":2,"3":2,"4":3,"7":2,"12":1,"16":2,"31":2,"32":3}}],["of",{"2":{"2":8,"3":10,"4":10,"5":7,"7":4,"9":3,"10":2,"12":1,"13":4,"15":1,"16":3,"17":2,"18":1,"20":2,"30":4,"31":6,"32":4,"40":2}}],["tᵢⱼₖ",{"2":{"31":4}}],["tijk⟺t",{"2":{"30":1}}],["time",{"2":{"7":1}}],["take",{"2":{"9":1}}],["terms",{"2":{"30":1}}],["temporarily",{"2":{"8":1}}],["tenpy",{"2":{"9":1}}],["tensorkrowch",{"2":{"9":1}}],["tensors",{"0":{"27":1,"30":1},"1":{"31":1},"2":{"2":1,"4":7,"5":3,"12":1,"14":1,"15":1,"16":3,"20":1,"24":1,"30":4,"32":2}}],["tensornetworks",{"2":{"4":1}}],["tensornetwork",{"0":{"4":1},"1":{"5":1},"2":{"2":2,"4":16,"5":9,"7":2,"8":1,"20":2,"24":2,"32":1,"40":5}}],["tensor",{"0":{"3":1,"21":1,"23":1,"24":1,"31":1},"1":{"22":1,"23":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"1":1,"2":9,"3":15,"4":12,"5":3,"9":4,"10":2,"12":2,"16":1,"20":1,"24":2,"30":5,"31":8,"32":2,"40":1}}],["tenet",{"2":{"1":1,"2":10,"4":4,"5":9,"7":1,"9":2,"12":1,"13":4,"18":1,"20":2,"24":1,"31":1,"32":1,"40":1}}],["td",{"2":{"7":1}}],["tree",{"2":{"20":1}}],["trait",{"2":{"13":2}}],["traits",{"0":{"7":1}}],["trains",{"2":{"12":1}}],["transforms",{"2":{"31":1}}],["transformation",{"2":{"5":11}}],["transformations",{"0":{"5":1,"32":1,"33":1},"1":{"33":1,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2},"2":{"32":3}}],["transform",{"2":{"5":6,"32":2}}],["truncation",{"0":{"38":1}}],["truncating",{"2":{"32":1}}],["truncate",{"2":{"5":2}}],["true",{"2":{"2":1,"16":1,"40":1}}],["type",{"0":{"31":1},"2":{"4":1,"7":1,"24":1,"31":1}}],["types",{"2":{"4":1,"7":3}}],["tn",{"2":{"4":14,"5":4,"8":1,"10":1,"20":3,"24":1,"40":4}}],["t",{"2":{"3":6,"5":2,"7":1,"9":1,"20":1,"30":4,"32":1}}],["think",{"2":{"30":1}}],["this",{"2":{"2":1,"4":1,"5":2,"7":3,"12":1,"13":1,"14":1,"32":1}}],["than",{"2":{"5":1}}],["that",{"2":{"4":2,"5":3,"13":3,"14":1,"16":2,"18":1,"20":1,"31":3}}],["these",{"2":{"12":1,"24":1,"31":1,"32":2}}],["there",{"2":{"8":1,"9":1,"30":1}}],["them",{"2":{"7":1,"18":1,"31":1}}],["they",{"2":{"7":1}}],["then",{"2":{"4":2}}],["their",{"2":{"4":1,"17":1,"32":1}}],["the",{"0":{"31":1},"2":{"2":8,"3":12,"4":13,"5":5,"7":2,"9":1,"12":8,"13":19,"14":4,"15":5,"16":17,"17":2,"18":2,"20":4,"24":4,"30":5,"31":10,"32":11,"40":3}}],["top",{"2":{"9":1}}],["topic",{"2":{"7":1}}],["tolerance",{"2":{"5":3}}],["to",{"2":{"2":1,"3":15,"4":8,"5":9,"7":1,"8":2,"9":1,"12":1,"13":3,"15":1,"16":3,"17":1,"20":6,"30":3,"31":3,"32":4,"40":2}}],["n=10",{"2":{"12":1,"18":1}}],["nice",{"2":{"9":1}}],["ninputs",{"2":{"2":1}}],["n",{"2":{"4":1,"30":5}}],["necessarily",{"2":{"32":1}}],["nevertheless",{"2":{"30":1}}],["new",{"2":{"4":5,"5":1,"9":1}}],["networks",{"0":{"21":1,"23":1,"24":1},"1":{"22":1,"23":1,"25":1,"26":1,"27":1,"28":1,"29":1},"2":{"10":1,"12":1,"24":1}}],["network",{"2":{"1":1,"2":9,"4":2,"9":4,"10":2,"12":1,"20":1,"32":5}}],["named",{"2":{"30":1}}],["name",{"2":{"3":3,"31":1}}],["nlanes",{"2":{"2":1}}],["nor",{"2":{"31":1}}],["nodes",{"2":{"24":1}}],["node",{"2":{"20":1}}],["noncanonical",{"0":{"14":1},"2":{"13":1,"14":1}}],["no",{"2":{"2":1,"9":1}}],["noutputs",{"2":{"2":1}}],["nothing",{"2":{"31":1}}],["notation",{"2":{"24":1}}],["not",{"2":{"7":2,"13":1,"14":2,"30":1}}],["notes",{"2":{"2":1}}],["notion",{"2":{"2":2}}],["numbers",{"2":{"30":1}}],["number",{"2":{"2":1,"30":1}}],["nsites",{"2":{"2":1}}],["show",{"2":{"40":1}}],["shallow",{"2":{"4":1}}],["subtypes",{"2":{"31":1}}],["summation",{"2":{"20":1}}],["support",{"2":{"40":1}}],["supports",{"2":{"13":1}}],["supported",{"2":{"12":1,"18":1}}],["superclass",{"2":{"7":1}}],["satisfy",{"2":{"14":1}}],["satisfies",{"2":{"4":2}}],["science",{"2":{"30":1}}],["scientific",{"2":{"12":1}}],["schollwöck",{"2":{"17":1}}],["schmidt",{"2":{"15":1}}],["scalar",{"2":{"2":3,"30":2}}],["slicing",{"0":{"29":1},"2":{"10":1}}],["slice",{"2":{"4":3}}],["split",{"0":{"39":1}}],["splitsimplificationd",{"2":{"5":1}}],["specifying",{"2":{"14":1}}],["specify",{"2":{"12":1,"16":1}}],["specified",{"2":{"3":1}}],["spaces",{"2":{"30":2}}],["space",{"2":{"7":1,"31":1}}],["smaller",{"2":{"5":1}}],["skip",{"2":{"5":4}}],["stored",{"2":{"13":1,"16":1}}],["stability",{"2":{"13":1}}],["states",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"12":1,"17":2}}],["state",{"2":{"1":1,"2":3,"18":1}}],["strong",{"2":{"9":1}}],["stroke",{"2":{"7":5}}],["structural",{"2":{"7":2}}],["structure",{"2":{"5":1,"32":2}}],["style",{"2":{"7":5}}],["search",{"2":{"20":1,"32":1}}],["sequence",{"2":{"15":1}}],["sense",{"2":{"7":1}}],["selectdim",{"2":{"4":4}}],["self",{"2":{"4":2}}],["seed=100",{"2":{"12":1,"18":1}}],["seemps",{"2":{"9":1}}],["see",{"2":{"4":7,"5":3,"20":2}}],["sets",{"2":{"5":1}}],["set",{"2":{"4":1,"32":1}}],["svd",{"2":{"3":5}}],["symbolic",{"2":{"20":1}}],["symbols",{"2":{"4":2,"31":2}}],["symbol",{"2":{"3":4,"4":5}}],["simplification",{"0":{"35":1,"39":1}}],["simplify",{"2":{"32":1}}],["similar",{"2":{"20":1}}],["since",{"2":{"31":1}}],["single",{"2":{"13":1}}],["site",{"2":{"16":4,"18":2}}],["sites",{"2":{"2":9}}],["size",{"2":{"3":3,"4":3,"5":1,"8":1,"31":4,"32":2}}],["so",{"2":{"13":1}}],["some",{"2":{"5":1,"7":1}}],["socket",{"2":{"2":9}}],["source",{"2":{"1":1,"2":9,"3":5,"4":12,"5":8,"9":1,"20":2,"40":1}}],["s",{"2":{"2":10,"3":2,"4":3,"5":1,"7":1,"9":1,"15":1,"20":1,"24":1,"30":1,"32":1}}],["swapped",{"2":{"2":1}}],["multi",{"2":{"24":1}}],["multilinear",{"2":{"4":1,"30":1}}],["most",{"2":{"30":1}}],["more",{"2":{"17":1,"20":1,"32":1}}],["modify",{"2":{"32":1}}],["modification",{"0":{"26":1},"1":{"27":1,"28":1}}],["modifications",{"2":{"13":1}}],["modern",{"2":{"7":1}}],["missleading",{"2":{"31":1}}],["missing",{"2":{"2":20,"3":4,"4":6,"5":2,"20":2}}],["mixed",{"2":{"16":3}}],["mixedcanonical",{"0":{"16":1},"1":{"17":1},"2":{"13":1,"16":2}}],["might",{"2":{"13":1,"30":1}}],["mpos",{"2":{"18":1}}],["mpo",{"0":{"18":1},"2":{"7":2,"18":4}}],["mpss",{"2":{"18":1}}],["mps",{"0":{"1":1,"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"1":1,"7":2,"12":6,"13":8,"14":2,"15":6,"16":7,"18":1}}],["meaning",{"2":{"31":1}}],["me",{"2":{"30":1}}],["methods",{"2":{"7":1,"32":1}}],["merge",{"2":{"2":1,"4":3}}],["maximum",{"2":{"32":1}}],["maxdim=4",{"2":{"12":1,"18":1}}],["many",{"2":{"30":1,"31":1}}],["manipulate",{"2":{"13":1}}],["major",{"2":{"18":1}}],["making",{"2":{"13":1}}],["makie",{"2":{"10":1,"40":2}}],["matrices",{"2":{"30":1}}],["matrix",{"0":{"12":1,"18":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"1":1,"12":1,"17":3,"18":2}}],["mathematicians",{"2":{"30":1}}],["mature",{"2":{"9":1}}],["main",{"2":{"9":1}}],["may",{"2":{"8":1,"14":1,"17":1,"31":1}}],["mapping",{"2":{"4":1}}],["axis3",{"2":{"40":1}}],["axis",{"2":{"40":1}}],["ax",{"2":{"40":1}}],["available",{"0":{"33":1},"1":{"34":1,"35":1,"36":1,"37":1,"38":1,"39":1}}],["avoid",{"2":{"8":1}}],["ability",{"2":{"32":1}}],["about",{"2":{"24":1,"30":1}}],["absolute",{"2":{"5":3}}],["abstractarray",{"2":{"31":1}}],["abstractansatz",{"2":{"1":1,"7":1}}],["abstractmps",{"2":{"7":1}}],["abstractmpo",{"2":{"7":1}}],["abstract",{"2":{"7":2}}],["abstractvecortuple",{"2":{"4":2}}],["abstracttensornetwork",{"2":{"4":10,"7":1,"20":2}}],["abstractquantum",{"2":{"2":6,"7":1}}],["aka",{"2":{"20":1}}],["age",{"2":{"17":1}}],["approach",{"2":{"32":1}}],["appropriate",{"2":{"13":1}}],["apply",{"2":{"32":2}}],["application",{"2":{"30":1}}],["append",{"2":{"4":3}}],["accessed",{"2":{"13":1}}],["act",{"2":{"7":1}}],["affect",{"2":{"13":1}}],["automatic",{"2":{"10":1}}],["at",{"2":{"9":1,"16":2}}],["atol",{"2":{"5":4}}],["assumes",{"2":{"13":1}}],["as",{"2":{"7":2,"12":1,"13":1,"15":2,"20":2,"24":1,"30":4,"31":3,"40":1}}],["algebra",{"2":{"30":2,"31":1}}],["algorithm",{"2":{"13":1}}],["algorithms",{"2":{"13":1}}],["alter",{"2":{"13":1}}],["always",{"2":{"5":1}}],["also",{"2":{"4":7,"5":3,"12":1,"15":1,"20":2,"31":1,"32":2}}],["all",{"2":{"3":6,"4":1,"5":1,"7":1}}],["additional",{"0":{"17":1}}],["additionally",{"2":{"16":1}}],["add",{"0":{"27":1},"2":{"4":2}}],["adjoint",{"2":{"2":2}}],["argument",{"2":{"12":1}}],["arguments",{"2":{"3":3,"5":3,"20":1,"40":1}}],["arrays",{"2":{"30":1}}],["array",{"2":{"3":1,"31":4}}],["are",{"2":{"2":1,"8":1,"9":1,"12":4,"16":2,"18":2,"24":2,"30":5,"31":1,"32":1,"40":1}}],["annals",{"2":{"17":1}}],["any",{"2":{"13":1,"14":1}}],["anti",{"0":{"37":1},"2":{"5":1}}],["antidiagonalgauging",{"2":{"5":1}}],["an",{"2":{"2":2,"13":1,"14":1,"15":1,"16":1,"18":1,"20":1,"31":2}}],["and",{"0":{"7":1},"2":{"2":3,"4":4,"7":4,"9":1,"10":1,"12":2,"13":3,"15":1,"16":4,"17":1,"18":1,"20":2,"24":1,"30":1,"31":4,"32":2,"40":1}}],["ansatz",{"0":{"0":1,"11":1,"19":1},"1":{"1":1},"2":{"1":1,"7":5,"12":1}}],["a",{"2":{"1":1,"2":11,"3":8,"4":15,"5":8,"7":2,"8":1,"9":3,"12":2,"13":1,"14":1,"15":1,"20":7,"24":2,"30":9,"31":8,"32":2,"40":5}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR262/assets/chunks/VPLocalSearchBox.D8zCF3DP.js b/previews/PR262/assets/chunks/VPLocalSearchBox.APAjKZUj.js similarity index 99% rename from previews/PR262/assets/chunks/VPLocalSearchBox.D8zCF3DP.js rename to previews/PR262/assets/chunks/VPLocalSearchBox.APAjKZUj.js index 03e15f2d..f3e2d95b 100644 --- a/previews/PR262/assets/chunks/VPLocalSearchBox.D8zCF3DP.js +++ b/previews/PR262/assets/chunks/VPLocalSearchBox.APAjKZUj.js @@ -1,4 +1,4 @@ -var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.BqptwCCd.js";import{u as ss,c as ns}from"./theme.xArc5YRl.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.CPuLW2tQ.js"),[])};/*! +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.BqptwCCd.js";import{u as ss,c as ns}from"./theme.BaN35FQU.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.BrNAULNl.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*! diff --git a/previews/PR262/assets/chunks/theme.xArc5YRl.js b/previews/PR262/assets/chunks/theme.BaN35FQU.js similarity index 99% rename from previews/PR262/assets/chunks/theme.xArc5YRl.js rename to previews/PR262/assets/chunks/theme.BaN35FQU.js index a6381a90..6cf67f76 100644 --- a/previews/PR262/assets/chunks/theme.xArc5YRl.js +++ b/previews/PR262/assets/chunks/theme.BaN35FQU.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.D8zCF3DP.js","assets/chunks/framework.BqptwCCd.js"])))=>i.map(i=>d[i]); -import{d as m,o as a,c as u,r as c,n as I,a as j,t as N,b,w as f,e as h,T as de,_ as $,u as je,i as ze,f as Ke,g as ve,h as y,j as p,k as i,l as z,m as re,p as T,q as H,s as x,v as F,x as pe,y as fe,z as We,A as qe,B as K,F as M,C as A,D as Le,E as ee,G as g,H as O,I as Te,J as Y,K as G,L as q,M as Je,N as we,O as ie,P as he,Q as Ne,R as te,S as Ye,U as Xe,V as Qe,W as Ie,X as me,Y as Ze,Z as xe,$ as et,a0 as tt,a1 as Me,a2 as nt,a3 as ot,a4 as st}from"./framework.BqptwCCd.js";const at=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(N(e.text),1)])],2))}}),rt={key:0,class:"VPBackdrop"},it=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),b(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",rt)):h("",!0)]),_:1}))}}),lt=$(it,[["__scopeId","data-v-b06cdb19"]]),L=je;function ct(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function _e(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(ze(s)||s.startsWith("#")||!n.startsWith("http")||!Ke(e))return s;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${o}`);return ve(l)}function X({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:r}=L(),l=y(()=>{var v,k;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((k=e.value.locales[t.value])==null?void 0:k.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,k])=>l.value.label===k.label?[]:{text:k.label,link:ut(k.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function ut(s,e,t,o){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const dt={class:"NotFound"},vt={class:"code"},pt={class:"title"},ft={class:"quote"},ht={class:"action"},mt=["href","aria-label"],_t=m({__name:"NotFound",setup(s){const{theme:e}=L(),{currentLang:t}=X();return(o,n)=>{var r,l,d,v,k;return a(),u("div",dt,[p("p",vt,N(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",pt,N(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ft,N(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",ht,[p("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((v=i(e).notFound)==null?void 0:v.linkLabel)??"go to home"},N(((k=i(e).notFound)==null?void 0:k.linkText)??"Take me home"),9,mt)])])}}}),bt=$(_t,[["__scopeId","data-v-951cab6c"]]);function Ee(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),o=t?s[t]:[];return Array.isArray(o)?Q(o):Q(o.items,o.base)}function kt(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function gt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ce(s,e){return Array.isArray(e)?e.some(t=>ce(s,t)):z(s,e.link)?!0:e.items?ce(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=Q(o.items,n)),o})}function R(){const{frontmatter:s,page:e,theme:t}=L(),o=re("(min-width: 960px)"),n=T(!1),r=y(()=>{const C=t.value.sidebar,w=e.value.relativePath;return C?Ee(C,w):[]}),l=T(r.value);H(r,(C,w)=>{JSON.stringify(C)!==JSON.stringify(w)&&(l.value=r.value)});const d=y(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=y(()=>k?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),k=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),V=y(()=>d.value&&o.value),_=y(()=>d.value?kt(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function E(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:k,leftAside:v,isSidebarEnabled:V,open:P,close:S,toggle:E}}function $t(s,e){let t;x(()=>{t=s.value?document.activeElement:void 0}),F(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function yt(s){const{page:e,hash:t}=L(),o=T(!1),n=y(()=>s.value.collapsed!=null),r=y(()=>!!s.value.link),l=T(!1),d=()=>{l.value=z(e.value.relativePath,s.value.link)};H([e,s,t],d),F(d);const v=y(()=>l.value?!0:s.value.items?ce(e.value.relativePath,s.value.items):!1),k=y(()=>!!(s.value.items&&s.value.items.length));x(()=>{o.value=!!(n.value&&s.value.collapsed)}),fe(()=>{(l.value||v.value)&&(o.value=!1)});function V(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:v,hasChildren:k,toggle:V}}function Pt(){const{hasSidebar:s}=R(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ue=[];function Ce(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function be(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:St(t),link:"#"+t.id,level:o}});return Vt(e,s)}function St(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Vt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return wt(s,o,n)}function Lt(s,e){const{isAsideEnabled:t}=Pt(),o=ct(r,100);let n=null;F(()=>{requestAnimationFrame(r),window.addEventListener("scroll",o)}),We(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function r(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,k=document.body.offsetHeight,V=Math.abs(d+v-k)<1,_=ue.map(({element:S,link:E})=>({link:E,top:Tt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,E)=>S.top-E.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(V){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:E}of _){if(E>d+qe()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Tt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function wt(s,e,t){ue.length=0;const o=[],n=[];return s.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,A(t.headers,({children:r,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},N(d),9,Nt),r!=null&&r.length?(a(),b(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ae=$(It,[["__scopeId","data-v-3f927ebe"]]),Mt={class:"content"},Et={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ct=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=L(),o=Le([]);ee(()=>{o.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return Lt(n,r),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[p("div",Mt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",Et,N(i(Ce)(i(t))),1),g(Ae,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),At=$(Ct,[["__scopeId","data-v-b38bf2ff"]]),Bt={class:"VPDocAsideCarbonAds"},Ht=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Bt,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ot={class:"VPDocAside"},Dt=m({__name:"VPDocAside",setup(s){const{theme:e}=L();return(t,o)=>(a(),u("div",Ot,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),g(At),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),b(Ht,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=$(Dt,[["__scopeId","data-v-6d7b3c46"]]);function Rt(){const{theme:s,page:e}=L();return y(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ut(){const{page:s,theme:e,frontmatter:t}=L();return y(()=>{var k,V,_,P,S,E,C,w;const o=Ee(e.value.sidebar,s.value.relativePath),n=gt(o),r=Gt(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>z(s.value.relativePath,B.link)),d=((k=e.value.docFooter)==null?void 0:k.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((V=e.value.docFooter)==null?void 0:V.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=r[l-1])==null?void 0:_.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((E=r[l+1])==null?void 0:E.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=r[l+1])==null?void 0:w.link)}}})}function Gt(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const D=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(n,r)=>(a(),b(O(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),jt={class:"VPLastUpdated"},zt=["datetime"],Kt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=L(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return F(()=>{x(()=>{var d,v,k;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?o.value:void 0,((k=e.value.lastUpdated)==null?void 0:k.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var k;return a(),u("p",jt,[j(N(((k=i(e).lastUpdated)==null?void 0:k.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},N(l.value),9,zt)])}}}),Wt=$(Kt,[["__scopeId","data-v-475f71b8"]]),qt={key:0,class:"VPDocFooter"},Jt={key:0,class:"edit-info"},Yt={key:0,class:"edit-link"},Xt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Zt={class:"pager"},xt=["innerHTML"],en=["innerHTML"],tn={class:"pager"},nn=["innerHTML"],on=["innerHTML"],sn=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=L(),n=Rt(),r=Ut(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||r.value.prev||r.value.next);return(k,V)=>{var _,P,S,E;return v.value?(a(),u("footer",qt,[c(k.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",Jt,[l.value?(a(),u("div",Yt,[g(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[V[0]||(V[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+N(i(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Xt,[g(Wt)])):h("",!0)])):h("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",Qt,[V[1]||(V[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Zt,[(S=i(r).prev)!=null&&S.link?(a(),b(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,xt),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,en)]}),_:1},8,["href"])):h("",!0)]),p("div",tn,[(E=i(r).next)!=null&&E.link?(a(),b(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,nn),p("span",{class:"title",innerHTML:i(r).next.text},null,8,on)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),an=$(sn,[["__scopeId","data-v-4f9813fa"]]),rn={class:"container"},ln={class:"aside-container"},cn={class:"aside-content"},un={class:"content"},dn={class:"content-container"},vn={class:"main"},pn=m({__name:"VPDoc",setup(s){const{theme:e}=L(),t=Y(),{hasSidebar:o,hasAside:n,leftAside:r}=R(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const k=K("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(o),"has-aside":i(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",rn,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",ln,[p("div",cn,[g(Ft,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",un,[p("div",dn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",vn,[g(k,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(an,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),fn=$(pn,[["__scopeId","data-v-83890dd9"]]),hn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&Te.test(e.href)),o=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),b(O(o.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),mn=$(hn,[["__scopeId","data-v-906d7fb4"]]),_n=["src","alt"],bn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=K("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,_n)):(a(),u(M,{key:1},[g(o,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(o,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Z=$(bn,[["__scopeId","data-v-35a7d0b8"]]),kn={class:"container"},gn={class:"main"},$n={key:0,class:"name"},yn=["innerHTML"],Pn=["innerHTML"],Sn=["innerHTML"],Vn={key:0,class:"actions"},Ln={key:0,class:"image"},Tn={class:"image-container"},wn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=q("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[p("div",kn,[p("div",gn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",$n,[p("span",{innerHTML:t.name,class:"clip"},null,8,yn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,Pn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Sn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Vn,[(a(!0),u(M,null,A(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[g(mn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Ln,[p("div",Tn,[o[0]||(o[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(Z,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Nn=$(wn,[["__scopeId","data-v-955009fc"]]),In=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).hero?(a(),b(Nn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Mn={class:"box"},En={key:0,class:"icon"},Cn=["innerHTML"],An=["innerHTML"],Bn=["innerHTML"],Hn={key:4,class:"link-text"},On={class:"link-text-value"},Dn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),b(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Mn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",En,[g(Z,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(Z,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Cn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,An),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Bn)):h("",!0),e.linkText?(a(),u("div",Hn,[p("p",On,[j(N(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Fn=$(Dn,[["__scopeId","data-v-f5e9645b"]]),Rn={key:0,class:"VPFeatures"},Un={class:"container"},Gn={class:"items"},jn=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",Rn,[p("div",Un,[p("div",Gn,[(a(!0),u(M,null,A(o.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[g(Fn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),zn=$(jn,[["__scopeId","data-v-d0a190d7"]]),Kn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).features?(a(),b(zn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),Wn=m({__name:"VPHomeContent",setup(s){const{width:e}=Je({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:we(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),qn=$(Wn,[["__scopeId","data-v-7a48a447"]]),Jn={class:"VPHome"},Yn=m({__name:"VPHome",setup(s){const{frontmatter:e}=L();return(t,o)=>{const n=K("Content");return a(),u("div",Jn,[c(t.$slots,"home-hero-before",{},void 0,!0),g(In,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),g(Kn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),b(qn,{key:0},{default:f(()=>[g(n)]),_:1})):(a(),b(n,{key:1}))])}}}),Xn=$(Yn,[["__scopeId","data-v-cbb6ec48"]]),Qn={},Zn={class:"VPPage"};function xn(s,e){const t=K("Content");return a(),u("div",Zn,[c(s.$slots,"page-top"),g(t),c(s.$slots,"page-bottom")])}const eo=$(Qn,[["render",xn]]),to=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=L(),{hasSidebar:o}=R();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(o),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[g(bt)],!0):i(t).layout==="page"?(a(),b(eo,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),b(Xn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),b(O(i(t).layout),{key:3})):(a(),b(fn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),no=$(to,[["__scopeId","data-v-91765379"]]),oo={class:"container"},so=["innerHTML"],ao=["innerHTML"],ro=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=R();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(o)}])},[p("div",oo,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,so)):h("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ao)):h("",!0)])],2)):h("",!0)}}),io=$(ro,[["__scopeId","data-v-c970a860"]]);function lo(){const{theme:s,frontmatter:e}=L(),t=Le([]),o=y(()=>t.value.length>0);return ee(()=>{t.value=be(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const co={class:"menu-text"},uo={class:"header"},vo={class:"outline"},po=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=L(),o=T(!1),n=T(0),r=T(),l=T();function d(_){var P;(P=r.value)!=null&&P.contains(_.target)||(o.value=!1)}H(o,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{o.value=!1}),ee(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function k(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{o.value=!1}))}function V(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:o.value})},[p("span",co,N(i(Ce)(i(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:V},N(i(t).returnToTopLabel||"Return to top"),1)),g(de,{name:"flyout"},{default:f(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:k},[p("div",uo,[p("a",{class:"top-link",href:"#",onClick:V},N(i(t).returnToTopLabel||"Return to top"),1)]),p("div",vo,[g(Ae,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),fo=$(po,[["__scopeId","data-v-bc9dc845"]]),ho={class:"container"},mo=["aria-expanded"],_o={class:"menu-text"},bo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=R(),{headers:n}=lo(),{y:r}=Ne(),l=T(0);F(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ee(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!o.value),k=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:d.value,fixed:v.value}));return(V,_)=>i(t).layout!=="home"&&(!v.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I(k.value)},[p("div",ho,[i(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":V.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>V.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",_o,N(i(e).sidebarMenuLabel||"Menu"),1)],8,mo)):h("",!0),g(fo,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ko=$(bo,[["__scopeId","data-v-070ab83d"]]);function go(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=Y();return H(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const $o={},yo={class:"VPSwitch",type:"button",role:"switch"},Po={class:"check"},So={key:0,class:"icon"};function Vo(s,e){return a(),u("button",yo,[p("span",Po,[s.$slots.default?(a(),u("span",So,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Lo=$($o,[["render",Vo],["__scopeId","data-v-4a1c76db"]]),To=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=L(),o=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),b(Lo,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(o)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(To,[["__scopeId","data-v-e40a8bb6"]]),wo={key:0,class:"VPNavBarAppearance"},No=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=L();return(t,o)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",wo,[g(ke)])):h("",!0)}}),Io=$(No,[["__scopeId","data-v-af096f4a"]]),ge=T();let Be=!1,ae=0;function Mo(s){const e=T(!1);if(te){!Be&&Eo(),ae++;const t=H(ge,o=>{var n,r,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});pe(()=>{t(),ae--,ae||Co()})}return Ye(e)}function Eo(){document.addEventListener("focusin",He),Be=!0,ge.value=document.activeElement}function Co(){document.removeEventListener("focusin",He)}function He(){ge.value=document.activeElement}const Ao={class:"VPMenuLink"},Bo=["innerHTML"],Ho=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),u("div",Ao,[g(D,{class:I({active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Bo)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Ho,[["__scopeId","data-v-acbfed09"]]),Oo={class:"VPMenuGroup"},Do={key:0,class:"title"},Fo=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Oo,[e.text?(a(),u("p",Do,N(e.text),1)):h("",!0),(a(!0),u(M,null,A(e.items,o=>(a(),u(M,null,["link"in o?(a(),b(ne,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),Ro=$(Fo,[["__scopeId","data-v-48c802d0"]]),Uo={class:"VPMenu"},Go={key:0,class:"items"},jo=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Uo,[e.items?(a(),u("div",Go,[(a(!0),u(M,null,A(e.items,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),b(ne,{key:0,item:o},null,8,["item"])):"component"in o?(a(),b(O(o.component),G({key:1,ref_for:!0},o.props),null,16)):(a(),b(Ro,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),zo=$(jo,[["__scopeId","data-v-7dd3104a"]]),Ko=["aria-expanded","aria-label"],Wo={key:0,class:"text"},qo=["innerHTML"],Jo={key:1,class:"vpi-more-horizontal icon"},Yo={class:"menu"},Xo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();Mo({el:t,onBlur:o});function o(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Wo,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,qo)):h("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Jo))],8,Ko),p("div",Yo,[g(zo,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(Xo,[["__scopeId","data-v-04f5c5e9"]]),Qo=["href","aria-label","innerHTML"],Zo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=T();F(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const o=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:o.value},null,8,Qo))}}),xo=$(Zo,[["__scopeId","data-v-d26d30cb"]]),es={class:"VPSocialLinks"},ts=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",es,[(a(!0),u(M,null,A(e.links,({link:o,icon:n,ariaLabel:r})=>(a(),b(xo,{key:o,icon:n,link:o,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(ts,[["__scopeId","data-v-ee7a9424"]]),ns={key:0,class:"group translations"},os={class:"trans-title"},ss={key:1,class:"group"},as={class:"item appearance"},rs={class:"label"},is={class:"appearance-action"},ls={key:2,class:"group"},cs={class:"item social-links"},us=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=L(),{localeLinks:o,currentLang:n}=X({correspondingLink:!0}),r=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(a(),b($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(o).length&&i(n).label?(a(),u("div",ns,[p("p",os,N(i(n).label),1),(a(!0),u(M,null,A(i(o),v=>(a(),b(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",ss,[p("div",as,[p("p",rs,N(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",is,[g(ke)])])])):h("",!0),i(t).socialLinks?(a(),u("div",ls,[p("div",cs,[g(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),ds=$(us,[["__scopeId","data-v-925effce"]]),vs=["aria-expanded"],ps=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,vs))}}),fs=$(ps,[["__scopeId","data-v-5dea55bf"]]),hs=["innerHTML"],ms=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),b(D,{class:I({VPNavBarMenuLink:!0,active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,hs)]),_:1},8,["class","href","target","rel","no-icon"]))}}),_s=$(ms,[["__scopeId","data-v-956ec74c"]]),Oe=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=L(),o=r=>"component"in r?!1:"link"in r?z(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(o),n=y(()=>o(e.item));return(r,l)=>(a(),b($e,{class:I({VPNavBarMenuGroup:!0,active:i(z)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),bs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ks=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",bs,[o[0]||(o[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,A(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),b(_s,{key:0,item:n},null,8,["item"])):"component"in n?(a(),b(O(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),b(Oe,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),gs=$(ks,[["__scopeId","data-v-e6d46098"]]);function $s(s){const{localeIndex:e,theme:t}=L();function o(n){var E,C,w;const r=n.split("."),l=(E=t.value.search)==null?void 0:E.options,d=l&&typeof l=="object",v=d&&((w=(C=l.locales)==null?void 0:C[e.value])==null?void 0:w.translations)||null,k=d&&l.translations||null;let V=v,_=k,P=s;const S=r.pop();for(const B of r){let U=null;const W=P==null?void 0:P[B];W&&(U=P=W);const oe=_==null?void 0:_[B];oe&&(U=_=oe);const se=V==null?void 0:V[B];se&&(U=V=se),W||(P=U),oe||(_=U),se||(V=U)}return(V==null?void 0:V[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return o}const ys=["aria-label"],Ps={class:"DocSearch-Button-Container"},Ss={class:"DocSearch-Button-Placeholder"},Pe=m({__name:"VPNavBarSearchButton",setup(s){const t=$s({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",Ps,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Ss,N(i(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ys))}}),Vs={class:"VPNavBarSearch"},Ls={id:"local-search"},Ts={key:1,id:"docsearch"},ws=m({__name:"VPNavBarSearch",setup(s){const e=Xe(()=>Qe(()=>import("./VPLocalSearchBox.D8zCF3DP.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=L(),n=T(!1),r=T(!1);F(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const k=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),k.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),k.value=!0)});const V="local";return(_,P)=>{var S;return a(),u("div",Vs,[i(V)==="local"?(a(),u(M,{key:0},[k.value?(a(),b(i(e),{key:0,onClose:P[0]||(P[0]=E=>k.value=!1)})):h("",!0),p("div",Ls,[g(Pe,{onClick:P[1]||(P[1]=E=>k.value=!0)})])],64)):i(V)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),b(i(t),{key:0,algolia:((S=i(o).search)==null?void 0:S.options)??i(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=E=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(a(),u("div",Ts,[g(Pe,{onClick:l})]))],64)):h("",!0)])}}}),Ns=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),b(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Is=$(Ns,[["__scopeId","data-v-164c457f"]]),Ms=["href","rel","target"],Es=["innerHTML"],Cs={key:2},As=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=L(),{hasSidebar:o}=R(),{currentLang:n}=X(),r=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,k)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(o)}])},[p("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),b(Z,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Es)):i(t).siteTitle===void 0?(a(),u("span",Cs,N(i(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ms)],2))}}),Bs=$(As,[["__scopeId","data-v-0f4f798b"]]),Hs={class:"items"},Os={class:"title"},Ds=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=L(),{localeLinks:t,currentLang:o}=X({correspondingLink:!0});return(n,r)=>i(t).length&&i(o).label?(a(),b($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Hs,[p("p",Os,N(i(o).label),1),(a(!0),u(M,null,A(i(t),l=>(a(),b(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Fs=$(Ds,[["__scopeId","data-v-c80d9ad0"]]),Rs={class:"wrapper"},Us={class:"container"},Gs={class:"title"},js={class:"content"},zs={class:"content-body"},Ks=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Ne(),{hasSidebar:o}=R(),{frontmatter:n}=L(),r=T({});return fe(()=>{r.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[p("div",Rs,[p("div",Us,[p("div",Gs,[g(Bs,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",js,[p("div",zs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),g(ws,{class:"search"}),g(gs,{class:"menu"}),g(Fs,{class:"translations"}),g(Io,{class:"appearance"}),g(Is,{class:"social-links"}),g(ds,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),g(fs,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ws=$(Ks,[["__scopeId","data-v-822684d1"]]),qs={key:0,class:"VPNavScreenAppearance"},Js={class:"text"},Ys=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=L();return(o,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",qs,[p("p",Js,N(i(t).darkModeSwitchLabel||"Appearance"),1),g(ke)])):h("",!0)}}),Xs=$(Ys,[["__scopeId","data-v-ffb44008"]]),Qs=["innerHTML"],Zs=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),b(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),xs=$(Zs,[["__scopeId","data-v-735512b8"]]),ea=["innerHTML"],ta=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),b(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,ea)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ta,[["__scopeId","data-v-372ae7c0"]]),na={class:"VPNavScreenMenuGroupSection"},oa={key:0,class:"title"},sa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",na,[e.text?(a(),u("p",oa,N(e.text),1)):h("",!0),(a(!0),u(M,null,A(e.items,o=>(a(),b(De,{key:o.text,item:o},null,8,["item"]))),128))]))}}),aa=$(sa,[["__scopeId","data-v-4b8941ac"]]),ra=["aria-controls","aria-expanded"],ia=["innerHTML"],la=["id"],ca={key:0,class:"item"},ua={key:1,class:"item"},da={key:2,class:"group"},va=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:r.text},null,8,ia),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,ra),p("div",{id:o.value,class:"items"},[(a(!0),u(M,null,A(r.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ca,[g(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ua,[(a(),b(O(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",da,[g(aa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,la)],2))}}),Fe=$(va,[["__scopeId","data-v-875057a5"]]),pa={key:0,class:"VPNavScreenMenu"},fa=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",pa,[(a(!0),u(M,null,A(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),b(xs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),b(O(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),b(Fe,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ha=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),b(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),ma={class:"list"},_a=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:o.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+N(i(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",ma,[(a(!0),u(M,null,A(i(e),d=>(a(),u("li",{key:d.link,class:"item"},[g(D,{class:"link",href:d.link},{default:f(()=>[j(N(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ba=$(_a,[["__scopeId","data-v-362991c2"]]),ka={class:"container"},ga=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=Ie(te?document.body:null);return(o,n)=>(a(),b(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ka,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),g(fa,{class:"menu"}),g(ba,{class:"translations"}),g(Xs,{class:"appearance"}),g(ha,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),$a=$(ga,[["__scopeId","data-v-833aabba"]]),ya={key:0,class:"VPNav"},Pa=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=go(),{frontmatter:n}=L(),r=y(()=>n.value.navbar!==!1);return me("close-screen",t),x(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(a(),u("header",ya,[g(Ws,{"is-screen-open":i(e),onToggleScreen:i(o)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g($a,{open:i(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Sa=$(Pa,[["__scopeId","data-v-f1e365da"]]),Va=["role","tabindex"],La={key:1,class:"items"},Ta=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:v}=yt(y(()=>e.item)),k=y(()=>d.value?"section":"div"),V=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function E(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(w,B)=>{const U=K("VPSidebarItem",!0);return a(),b(O(k.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},xe(w.item.items?{click:E,keydown:E}:{},!0),{tabindex:w.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),w.item.link?(a(),b(D,{key:0,tag:V.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),b(O(_.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(O(_.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ze(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Va)):h("",!0),w.item.items&&w.item.items.length?(a(),u("div",La,[w.depth<5?(a(!0),u(M,{key:0},A(w.item.items,W=>(a(),b(U,{key:W.text,item:W,depth:w.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),wa=$(Ta,[["__scopeId","data-v-196b2e5f"]]),Na=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return F(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),et(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(M,null,A(o.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[g(wa,{item:r,depth:0},null,8,["item"])],2))),128))}}),Ia=$(Na,[["__scopeId","data-v-9e426adc"]]),Ma={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ea=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=R(),o=s,n=T(null),r=Ie(te?document.body:null);H([o,n],()=>{var d;o.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return H(e,()=>{l.value+=1},{deep:!0}),(d,v)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=tt(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",Ma,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),b(Ia,{items:i(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ca=$(Ea,[["__scopeId","data-v-18756405"]]),Aa=m({__name:"VPSkipLink",setup(s){const e=Y(),t=T();H(()=>e.path,()=>t.value.focus());function o({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Ba=$(Aa,[["__scopeId","data-v-c3508ec8"]]),Ha=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=R(),n=Y();H(()=>n.path,o),$t(e,o);const{frontmatter:r}=L(),l=Me(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,k)=>{const V=K("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),g(Ba),g(lt,{class:"backdrop",show:i(e),onClick:i(o)},null,8,["show","onClick"]),g(Sa,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(ko,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Ca,{open:i(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(no,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(io),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(V,{key:1}))}}}),Oa=$(Ha,[["__scopeId","data-v-a9a9e638"]]),Se={Layout:Oa,enhanceApp:({app:s})=>{s.component("Badge",at)}},Da=m({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(s){Y();const e=T([]),t=T("Versions"),o=()=>new Promise(n=>{const r=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(r),n({versions:window.DOC_VERSIONS,currentVersion:window.DOCUMENTER_CURRENT_VERSION}))},100)});return F(async()=>{const n=await o();e.value=n.versions.map(r=>({text:r,link:`${window.location.origin}/${r}/`})),t.value=n.currentVersion}),(n,r)=>n.screenMenu?(a(),b(Fe,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):(a(),b(Oe,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"]))}}),Fa=$(Da,[["__scopeId","data-v-31b36ab6"]]),Ra=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const r=o(...n),l=s.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Re="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",Ua=()=>{const s=J==null?void 0:J.getItem(Ue);if(s)try{return JSON.parse(s)}catch{}return{}},Ga=s=>{J&&J.setItem(Ue,JSON.stringify(s))},ja=s=>{const e=nt({});H(()=>e.content,(t,o)=>{t&&o&&Ga(t)},{deep:!0}),s.provide(Re,e)},za=(s,e)=>{const t=q(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");F(()=>{t.content||(t.content=Ua())});const o=T(),n=y({get(){var v;const l=e.value,d=s.value;if(l){const k=(v=t.content)==null?void 0:v[l];if(k&&d.includes(k))return k}else{const k=o.value;if(k)return k}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const Ka=()=>(Ve++,""+Ve);function Wa(){const s=Me();return y(()=>{var o;const t=(o=s.default)==null?void 0:o.call(s);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const Ge="vitepress:tabSingleState",qa=s=>{me(Ge,s)},Ja=()=>{const s=q(Ge);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Ya={class:"plugin-tabs"},Xa=["id","aria-selected","aria-controls","tabindex","onClick"],Qa=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const e=s,t=Wa(),{selected:o,select:n}=za(t,ot(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Ra(r),d=l(n),v=T([]),k=_=>{var E;const P=t.value.indexOf(o.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Ya,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:k},[(a(!0),u(M,null,A(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(V)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(o),"aria-controls":`panel-${S}-${i(V)}`,tabindex:S===i(o)?0:-1,onClick:()=>i(d)(S)},N(S),9,Xa))),128))],544),c(_.$slots,"default")]))}}),Za=["id","aria-labelledby"],xa=m({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:e,selected:t}=Ja();return(o,n)=>i(t)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${i(e)}`},[c(o.$slots,"default",{},void 0,!0)],8,Za)):h("",!0)}}),er=$(xa,[["__scopeId","data-v-9b0d03d2"]]),tr=s=>{ja(s),s.component("PluginTabs",Qa),s.component("PluginTabsTab",er)},or={extends:Se,Layout(){return st(Se.Layout,null,{})},enhanceApp({app:s,router:e,siteData:t}){if(tr(s),s.component("VersionPicker",Fa),typeof window<"u"){let o=function(){if(!(window.DOCUMENTER_NEWEST===void 0||window.DOCUMENTER_CURRENT_VERSION===void 0||window.DOCUMENTER_STABLE===void 0)&&window.DOCUMENTER_NEWEST===window.DOCUMENTER_CURRENT_VERSION){const n=window.location.href.replace(window.DOCUMENTER_CURRENT_VERSION,window.DOCUMENTER_STABLE);window.history.replaceState({additionalInformation:"URL rewritten to stable"},"Makie",n);return}};H(()=>e.route.data.relativePath,o,{immediate:!0}),document.addEventListener("DOMContentLoaded",o)}}};export{or as R,$s as c,L as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.APAjKZUj.js","assets/chunks/framework.BqptwCCd.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as I,a as j,t as N,b,w as f,e as h,T as de,_ as $,u as je,i as ze,f as Ke,g as ve,h as y,j as p,k as i,l as z,m as re,p as T,q as H,s as x,v as F,x as pe,y as fe,z as We,A as qe,B as K,F as M,C as A,D as Le,E as ee,G as g,H as O,I as Te,J as Y,K as G,L as q,M as Je,N as we,O as ie,P as he,Q as Ne,R as te,S as Ye,U as Xe,V as Qe,W as Ie,X as me,Y as Ze,Z as xe,$ as et,a0 as tt,a1 as Me,a2 as nt,a3 as ot,a4 as st}from"./framework.BqptwCCd.js";const at=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(N(e.text),1)])],2))}}),rt={key:0,class:"VPBackdrop"},it=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),b(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",rt)):h("",!0)]),_:1}))}}),lt=$(it,[["__scopeId","data-v-b06cdb19"]]),L=je;function ct(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function le(s){return/^\//.test(s)?s:`/${s}`}function _e(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(ze(s)||s.startsWith("#")||!n.startsWith("http")||!Ke(e))return s;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${o}`);return ve(l)}function X({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:r}=L(),l=y(()=>{var v,k;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((k=e.value.locales[t.value])==null?void 0:k.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,k])=>l.value.label===k.label?[]:{text:k.label,link:ut(k.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function ut(s,e,t,o){return e?s.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const dt={class:"NotFound"},vt={class:"code"},pt={class:"title"},ft={class:"quote"},ht={class:"action"},mt=["href","aria-label"],_t=m({__name:"NotFound",setup(s){const{theme:e}=L(),{currentLang:t}=X();return(o,n)=>{var r,l,d,v,k;return a(),u("div",dt,[p("p",vt,N(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",pt,N(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ft,N(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",ht,[p("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((v=i(e).notFound)==null?void 0:v.linkLabel)??"go to home"},N(((k=i(e).notFound)==null?void 0:k.linkText)??"Take me home"),9,mt)])])}}}),bt=$(_t,[["__scopeId","data-v-951cab6c"]]);function Ee(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=le(e);const t=Object.keys(s).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),o=t?s[t]:[];return Array.isArray(o)?Q(o):Q(o.items,o.base)}function kt(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function gt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function ce(s,e){return Array.isArray(e)?e.some(t=>ce(s,t)):z(s,e.link)?!0:e.items?ce(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=Q(o.items,n)),o})}function R(){const{frontmatter:s,page:e,theme:t}=L(),o=re("(min-width: 960px)"),n=T(!1),r=y(()=>{const C=t.value.sidebar,w=e.value.relativePath;return C?Ee(C,w):[]}),l=T(r.value);H(r,(C,w)=>{JSON.stringify(C)!==JSON.stringify(w)&&(l.value=r.value)});const d=y(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=y(()=>k?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),k=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),V=y(()=>d.value&&o.value),_=y(()=>d.value?kt(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function E(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:k,leftAside:v,isSidebarEnabled:V,open:P,close:S,toggle:E}}function $t(s,e){let t;x(()=>{t=s.value?document.activeElement:void 0}),F(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function yt(s){const{page:e,hash:t}=L(),o=T(!1),n=y(()=>s.value.collapsed!=null),r=y(()=>!!s.value.link),l=T(!1),d=()=>{l.value=z(e.value.relativePath,s.value.link)};H([e,s,t],d),F(d);const v=y(()=>l.value?!0:s.value.items?ce(e.value.relativePath,s.value.items):!1),k=y(()=>!!(s.value.items&&s.value.items.length));x(()=>{o.value=!!(n.value&&s.value.collapsed)}),fe(()=>{(l.value||v.value)&&(o.value=!1)});function V(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:v,hasChildren:k,toggle:V}}function Pt(){const{hasSidebar:s}=R(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ue=[];function Ce(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function be(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:St(t),link:"#"+t.id,level:o}});return Vt(e,s)}function St(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Vt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return wt(s,o,n)}function Lt(s,e){const{isAsideEnabled:t}=Pt(),o=ct(r,100);let n=null;F(()=>{requestAnimationFrame(r),window.addEventListener("scroll",o)}),We(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function r(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,k=document.body.offsetHeight,V=Math.abs(d+v-k)<1,_=ue.map(({element:S,link:E})=>({link:E,top:Tt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,E)=>S.top-E.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(V){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:E}of _){if(E>d+qe()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Tt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function wt(s,e,t){ue.length=0;const o=[],n=[];return s.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,A(t.headers,({children:r,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},N(d),9,Nt),r!=null&&r.length?(a(),b(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ae=$(It,[["__scopeId","data-v-3f927ebe"]]),Mt={class:"content"},Et={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ct=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=L(),o=Le([]);ee(()=>{o.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return Lt(n,r),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[p("div",Mt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",Et,N(i(Ce)(i(t))),1),g(Ae,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),At=$(Ct,[["__scopeId","data-v-b38bf2ff"]]),Bt={class:"VPDocAsideCarbonAds"},Ht=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",Bt,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ot={class:"VPDocAside"},Dt=m({__name:"VPDocAside",setup(s){const{theme:e}=L();return(t,o)=>(a(),u("div",Ot,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),g(At),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),b(Ht,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=$(Dt,[["__scopeId","data-v-6d7b3c46"]]);function Rt(){const{theme:s,page:e}=L();return y(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ut(){const{page:s,theme:e,frontmatter:t}=L();return y(()=>{var k,V,_,P,S,E,C,w;const o=Ee(e.value.sidebar,s.value.relativePath),n=gt(o),r=Gt(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>z(s.value.relativePath,B.link)),d=((k=e.value.docFooter)==null?void 0:k.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((V=e.value.docFooter)==null?void 0:V.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=r[l-1])==null?void 0:_.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((E=r[l+1])==null?void 0:E.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=r[l+1])==null?void 0:w.link)}}})}function Gt(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const D=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(n,r)=>(a(),b(O(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),jt={class:"VPLastUpdated"},zt=["datetime"],Kt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=L(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return F(()=>{x(()=>{var d,v,k;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?o.value:void 0,((k=e.value.lastUpdated)==null?void 0:k.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var k;return a(),u("p",jt,[j(N(((k=i(e).lastUpdated)==null?void 0:k.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},N(l.value),9,zt)])}}}),Wt=$(Kt,[["__scopeId","data-v-475f71b8"]]),qt={key:0,class:"VPDocFooter"},Jt={key:0,class:"edit-info"},Yt={key:0,class:"edit-link"},Xt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Zt={class:"pager"},xt=["innerHTML"],en=["innerHTML"],tn={class:"pager"},nn=["innerHTML"],on=["innerHTML"],sn=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=L(),n=Rt(),r=Ut(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||r.value.prev||r.value.next);return(k,V)=>{var _,P,S,E;return v.value?(a(),u("footer",qt,[c(k.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",Jt,[l.value?(a(),u("div",Yt,[g(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[V[0]||(V[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+N(i(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Xt,[g(Wt)])):h("",!0)])):h("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",Qt,[V[1]||(V[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Zt,[(S=i(r).prev)!=null&&S.link?(a(),b(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,xt),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,en)]}),_:1},8,["href"])):h("",!0)]),p("div",tn,[(E=i(r).next)!=null&&E.link?(a(),b(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,nn),p("span",{class:"title",innerHTML:i(r).next.text},null,8,on)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),an=$(sn,[["__scopeId","data-v-4f9813fa"]]),rn={class:"container"},ln={class:"aside-container"},cn={class:"aside-content"},un={class:"content"},dn={class:"content-container"},vn={class:"main"},pn=m({__name:"VPDoc",setup(s){const{theme:e}=L(),t=Y(),{hasSidebar:o,hasAside:n,leftAside:r}=R(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const k=K("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(o),"has-aside":i(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",rn,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",ln,[p("div",cn,[g(Ft,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",un,[p("div",dn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",vn,[g(k,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(an,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),fn=$(pn,[["__scopeId","data-v-83890dd9"]]),hn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&Te.test(e.href)),o=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),b(O(o.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),mn=$(hn,[["__scopeId","data-v-906d7fb4"]]),_n=["src","alt"],bn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=K("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,_n)):(a(),u(M,{key:1},[g(o,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(o,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Z=$(bn,[["__scopeId","data-v-35a7d0b8"]]),kn={class:"container"},gn={class:"main"},$n={key:0,class:"name"},yn=["innerHTML"],Pn=["innerHTML"],Sn=["innerHTML"],Vn={key:0,class:"actions"},Ln={key:0,class:"image"},Tn={class:"image-container"},wn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=q("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[p("div",kn,[p("div",gn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",$n,[p("span",{innerHTML:t.name,class:"clip"},null,8,yn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,Pn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Sn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Vn,[(a(!0),u(M,null,A(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[g(mn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Ln,[p("div",Tn,[o[0]||(o[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(Z,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Nn=$(wn,[["__scopeId","data-v-955009fc"]]),In=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).hero?(a(),b(Nn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Mn={class:"box"},En={key:0,class:"icon"},Cn=["innerHTML"],An=["innerHTML"],Bn=["innerHTML"],Hn={key:4,class:"link-text"},On={class:"link-text-value"},Dn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),b(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Mn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",En,[g(Z,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(Z,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Cn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,An),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Bn)):h("",!0),e.linkText?(a(),u("div",Hn,[p("p",On,[j(N(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Fn=$(Dn,[["__scopeId","data-v-f5e9645b"]]),Rn={key:0,class:"VPFeatures"},Un={class:"container"},Gn={class:"items"},jn=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",Rn,[p("div",Un,[p("div",Gn,[(a(!0),u(M,null,A(o.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[g(Fn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),zn=$(jn,[["__scopeId","data-v-d0a190d7"]]),Kn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).features?(a(),b(zn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),Wn=m({__name:"VPHomeContent",setup(s){const{width:e}=Je({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:we(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),qn=$(Wn,[["__scopeId","data-v-7a48a447"]]),Jn={class:"VPHome"},Yn=m({__name:"VPHome",setup(s){const{frontmatter:e}=L();return(t,o)=>{const n=K("Content");return a(),u("div",Jn,[c(t.$slots,"home-hero-before",{},void 0,!0),g(In,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),g(Kn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),b(qn,{key:0},{default:f(()=>[g(n)]),_:1})):(a(),b(n,{key:1}))])}}}),Xn=$(Yn,[["__scopeId","data-v-cbb6ec48"]]),Qn={},Zn={class:"VPPage"};function xn(s,e){const t=K("Content");return a(),u("div",Zn,[c(s.$slots,"page-top"),g(t),c(s.$slots,"page-bottom")])}const eo=$(Qn,[["render",xn]]),to=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=L(),{hasSidebar:o}=R();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(o),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[g(bt)],!0):i(t).layout==="page"?(a(),b(eo,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),b(Xn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),b(O(i(t).layout),{key:3})):(a(),b(fn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),no=$(to,[["__scopeId","data-v-91765379"]]),oo={class:"container"},so=["innerHTML"],ao=["innerHTML"],ro=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=R();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(o)}])},[p("div",oo,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,so)):h("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ao)):h("",!0)])],2)):h("",!0)}}),io=$(ro,[["__scopeId","data-v-c970a860"]]);function lo(){const{theme:s,frontmatter:e}=L(),t=Le([]),o=y(()=>t.value.length>0);return ee(()=>{t.value=be(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const co={class:"menu-text"},uo={class:"header"},vo={class:"outline"},po=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=L(),o=T(!1),n=T(0),r=T(),l=T();function d(_){var P;(P=r.value)!=null&&P.contains(_.target)||(o.value=!1)}H(o,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{o.value=!1}),ee(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function k(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{o.value=!1}))}function V(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:o.value})},[p("span",co,N(i(Ce)(i(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:V},N(i(t).returnToTopLabel||"Return to top"),1)),g(de,{name:"flyout"},{default:f(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:k},[p("div",uo,[p("a",{class:"top-link",href:"#",onClick:V},N(i(t).returnToTopLabel||"Return to top"),1)]),p("div",vo,[g(Ae,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),fo=$(po,[["__scopeId","data-v-bc9dc845"]]),ho={class:"container"},mo=["aria-expanded"],_o={class:"menu-text"},bo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=R(),{headers:n}=lo(),{y:r}=Ne(),l=T(0);F(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),ee(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),v=y(()=>d.value&&!o.value),k=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:d.value,fixed:v.value}));return(V,_)=>i(t).layout!=="home"&&(!v.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I(k.value)},[p("div",ho,[i(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":V.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>V.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",_o,N(i(e).sidebarMenuLabel||"Menu"),1)],8,mo)):h("",!0),g(fo,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ko=$(bo,[["__scopeId","data-v-070ab83d"]]);function go(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=Y();return H(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const $o={},yo={class:"VPSwitch",type:"button",role:"switch"},Po={class:"check"},So={key:0,class:"icon"};function Vo(s,e){return a(),u("button",yo,[p("span",Po,[s.$slots.default?(a(),u("span",So,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Lo=$($o,[["render",Vo],["__scopeId","data-v-4a1c76db"]]),To=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=L(),o=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),b(Lo,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(o)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(To,[["__scopeId","data-v-e40a8bb6"]]),wo={key:0,class:"VPNavBarAppearance"},No=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=L();return(t,o)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",wo,[g(ke)])):h("",!0)}}),Io=$(No,[["__scopeId","data-v-af096f4a"]]),ge=T();let Be=!1,ae=0;function Mo(s){const e=T(!1);if(te){!Be&&Eo(),ae++;const t=H(ge,o=>{var n,r,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});pe(()=>{t(),ae--,ae||Co()})}return Ye(e)}function Eo(){document.addEventListener("focusin",He),Be=!0,ge.value=document.activeElement}function Co(){document.removeEventListener("focusin",He)}function He(){ge.value=document.activeElement}const Ao={class:"VPMenuLink"},Bo=["innerHTML"],Ho=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),u("div",Ao,[g(D,{class:I({active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Bo)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Ho,[["__scopeId","data-v-acbfed09"]]),Oo={class:"VPMenuGroup"},Do={key:0,class:"title"},Fo=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Oo,[e.text?(a(),u("p",Do,N(e.text),1)):h("",!0),(a(!0),u(M,null,A(e.items,o=>(a(),u(M,null,["link"in o?(a(),b(ne,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),Ro=$(Fo,[["__scopeId","data-v-48c802d0"]]),Uo={class:"VPMenu"},Go={key:0,class:"items"},jo=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Uo,[e.items?(a(),u("div",Go,[(a(!0),u(M,null,A(e.items,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),b(ne,{key:0,item:o},null,8,["item"])):"component"in o?(a(),b(O(o.component),G({key:1,ref_for:!0},o.props),null,16)):(a(),b(Ro,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),zo=$(jo,[["__scopeId","data-v-7dd3104a"]]),Ko=["aria-expanded","aria-label"],Wo={key:0,class:"text"},qo=["innerHTML"],Jo={key:1,class:"vpi-more-horizontal icon"},Yo={class:"menu"},Xo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();Mo({el:t,onBlur:o});function o(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Wo,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,qo)):h("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Jo))],8,Ko),p("div",Yo,[g(zo,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(Xo,[["__scopeId","data-v-04f5c5e9"]]),Qo=["href","aria-label","innerHTML"],Zo=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=T();F(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const o=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:o.value},null,8,Qo))}}),xo=$(Zo,[["__scopeId","data-v-d26d30cb"]]),es={class:"VPSocialLinks"},ts=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",es,[(a(!0),u(M,null,A(e.links,({link:o,icon:n,ariaLabel:r})=>(a(),b(xo,{key:o,icon:n,link:o,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(ts,[["__scopeId","data-v-ee7a9424"]]),ns={key:0,class:"group translations"},os={class:"trans-title"},ss={key:1,class:"group"},as={class:"item appearance"},rs={class:"label"},is={class:"appearance-action"},ls={key:2,class:"group"},cs={class:"item social-links"},us=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=L(),{localeLinks:o,currentLang:n}=X({correspondingLink:!0}),r=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(a(),b($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(o).length&&i(n).label?(a(),u("div",ns,[p("p",os,N(i(n).label),1),(a(!0),u(M,null,A(i(o),v=>(a(),b(ne,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",ss,[p("div",as,[p("p",rs,N(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",is,[g(ke)])])])):h("",!0),i(t).socialLinks?(a(),u("div",ls,[p("div",cs,[g(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),ds=$(us,[["__scopeId","data-v-925effce"]]),vs=["aria-expanded"],ps=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,vs))}}),fs=$(ps,[["__scopeId","data-v-5dea55bf"]]),hs=["innerHTML"],ms=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),b(D,{class:I({VPNavBarMenuLink:!0,active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,hs)]),_:1},8,["class","href","target","rel","no-icon"]))}}),_s=$(ms,[["__scopeId","data-v-956ec74c"]]),Oe=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=L(),o=r=>"component"in r?!1:"link"in r?z(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(o),n=y(()=>o(e.item));return(r,l)=>(a(),b($e,{class:I({VPNavBarMenuGroup:!0,active:i(z)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),bs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ks=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",bs,[o[0]||(o[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,A(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),b(_s,{key:0,item:n},null,8,["item"])):"component"in n?(a(),b(O(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),b(Oe,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),gs=$(ks,[["__scopeId","data-v-e6d46098"]]);function $s(s){const{localeIndex:e,theme:t}=L();function o(n){var E,C,w;const r=n.split("."),l=(E=t.value.search)==null?void 0:E.options,d=l&&typeof l=="object",v=d&&((w=(C=l.locales)==null?void 0:C[e.value])==null?void 0:w.translations)||null,k=d&&l.translations||null;let V=v,_=k,P=s;const S=r.pop();for(const B of r){let U=null;const W=P==null?void 0:P[B];W&&(U=P=W);const oe=_==null?void 0:_[B];oe&&(U=_=oe);const se=V==null?void 0:V[B];se&&(U=V=se),W||(P=U),oe||(_=U),se||(V=U)}return(V==null?void 0:V[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return o}const ys=["aria-label"],Ps={class:"DocSearch-Button-Container"},Ss={class:"DocSearch-Button-Placeholder"},Pe=m({__name:"VPNavBarSearchButton",setup(s){const t=$s({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",Ps,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Ss,N(i(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ys))}}),Vs={class:"VPNavBarSearch"},Ls={id:"local-search"},Ts={key:1,id:"docsearch"},ws=m({__name:"VPNavBarSearch",setup(s){const e=Xe(()=>Qe(()=>import("./VPLocalSearchBox.APAjKZUj.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=L(),n=T(!1),r=T(!1);F(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const k=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),k.value=!0)}),ie("/",_=>{v(_)||(_.preventDefault(),k.value=!0)});const V="local";return(_,P)=>{var S;return a(),u("div",Vs,[i(V)==="local"?(a(),u(M,{key:0},[k.value?(a(),b(i(e),{key:0,onClose:P[0]||(P[0]=E=>k.value=!1)})):h("",!0),p("div",Ls,[g(Pe,{onClick:P[1]||(P[1]=E=>k.value=!0)})])],64)):i(V)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),b(i(t),{key:0,algolia:((S=i(o).search)==null?void 0:S.options)??i(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=E=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(a(),u("div",Ts,[g(Pe,{onClick:l})]))],64)):h("",!0)])}}}),Ns=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),b(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Is=$(Ns,[["__scopeId","data-v-164c457f"]]),Ms=["href","rel","target"],Es=["innerHTML"],Cs={key:2},As=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=L(),{hasSidebar:o}=R(),{currentLang:n}=X(),r=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,k)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(o)}])},[p("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),b(Z,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Es)):i(t).siteTitle===void 0?(a(),u("span",Cs,N(i(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ms)],2))}}),Bs=$(As,[["__scopeId","data-v-0f4f798b"]]),Hs={class:"items"},Os={class:"title"},Ds=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=L(),{localeLinks:t,currentLang:o}=X({correspondingLink:!0});return(n,r)=>i(t).length&&i(o).label?(a(),b($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Hs,[p("p",Os,N(i(o).label),1),(a(!0),u(M,null,A(i(t),l=>(a(),b(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Fs=$(Ds,[["__scopeId","data-v-c80d9ad0"]]),Rs={class:"wrapper"},Us={class:"container"},Gs={class:"title"},js={class:"content"},zs={class:"content-body"},Ks=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Ne(),{hasSidebar:o}=R(),{frontmatter:n}=L(),r=T({});return fe(()=>{r.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[p("div",Rs,[p("div",Us,[p("div",Gs,[g(Bs,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",js,[p("div",zs,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),g(ws,{class:"search"}),g(gs,{class:"menu"}),g(Fs,{class:"translations"}),g(Io,{class:"appearance"}),g(Is,{class:"social-links"}),g(ds,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),g(fs,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ws=$(Ks,[["__scopeId","data-v-822684d1"]]),qs={key:0,class:"VPNavScreenAppearance"},Js={class:"text"},Ys=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=L();return(o,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",qs,[p("p",Js,N(i(t).darkModeSwitchLabel||"Appearance"),1),g(ke)])):h("",!0)}}),Xs=$(Ys,[["__scopeId","data-v-ffb44008"]]),Qs=["innerHTML"],Zs=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),b(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Qs)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),xs=$(Zs,[["__scopeId","data-v-735512b8"]]),ea=["innerHTML"],ta=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=q("close-screen");return(t,o)=>(a(),b(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,ea)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ta,[["__scopeId","data-v-372ae7c0"]]),na={class:"VPNavScreenMenuGroupSection"},oa={key:0,class:"title"},sa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",na,[e.text?(a(),u("p",oa,N(e.text),1)):h("",!0),(a(!0),u(M,null,A(e.items,o=>(a(),b(De,{key:o.text,item:o},null,8,["item"]))),128))]))}}),aa=$(sa,[["__scopeId","data-v-4b8941ac"]]),ra=["aria-controls","aria-expanded"],ia=["innerHTML"],la=["id"],ca={key:0,class:"item"},ua={key:1,class:"item"},da={key:2,class:"group"},va=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:r.text},null,8,ia),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,ra),p("div",{id:o.value,class:"items"},[(a(!0),u(M,null,A(r.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ca,[g(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ua,[(a(),b(O(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",da,[g(aa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,la)],2))}}),Fe=$(va,[["__scopeId","data-v-875057a5"]]),pa={key:0,class:"VPNavScreenMenu"},fa=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",pa,[(a(!0),u(M,null,A(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),b(xs,{key:0,item:n},null,8,["item"])):"component"in n?(a(),b(O(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),b(Fe,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ha=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),b(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),ma={class:"list"},_a=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:o.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+N(i(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",ma,[(a(!0),u(M,null,A(i(e),d=>(a(),u("li",{key:d.link,class:"item"},[g(D,{class:"link",href:d.link},{default:f(()=>[j(N(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ba=$(_a,[["__scopeId","data-v-362991c2"]]),ka={class:"container"},ga=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=Ie(te?document.body:null);return(o,n)=>(a(),b(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ka,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),g(fa,{class:"menu"}),g(ba,{class:"translations"}),g(Xs,{class:"appearance"}),g(ha,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),$a=$(ga,[["__scopeId","data-v-833aabba"]]),ya={key:0,class:"VPNav"},Pa=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=go(),{frontmatter:n}=L(),r=y(()=>n.value.navbar!==!1);return me("close-screen",t),x(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(a(),u("header",ya,[g(Ws,{"is-screen-open":i(e),onToggleScreen:i(o)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g($a,{open:i(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Sa=$(Pa,[["__scopeId","data-v-f1e365da"]]),Va=["role","tabindex"],La={key:1,class:"items"},Ta=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:v}=yt(y(()=>e.item)),k=y(()=>d.value?"section":"div"),V=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function E(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(w,B)=>{const U=K("VPSidebarItem",!0);return a(),b(O(k.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},xe(w.item.items?{click:E,keydown:E}:{},!0),{tabindex:w.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),w.item.link?(a(),b(D,{key:0,tag:V.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),b(O(_.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(O(_.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Ze(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Va)):h("",!0),w.item.items&&w.item.items.length?(a(),u("div",La,[w.depth<5?(a(!0),u(M,{key:0},A(w.item.items,W=>(a(),b(U,{key:W.text,item:W,depth:w.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),wa=$(Ta,[["__scopeId","data-v-196b2e5f"]]),Na=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return F(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),et(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(M,null,A(o.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[g(wa,{item:r,depth:0},null,8,["item"])],2))),128))}}),Ia=$(Na,[["__scopeId","data-v-9e426adc"]]),Ma={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ea=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=R(),o=s,n=T(null),r=Ie(te?document.body:null);H([o,n],()=>{var d;o.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return H(e,()=>{l.value+=1},{deep:!0}),(d,v)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=tt(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",Ma,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),b(Ia,{items:i(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ca=$(Ea,[["__scopeId","data-v-18756405"]]),Aa=m({__name:"VPSkipLink",setup(s){const e=Y(),t=T();H(()=>e.path,()=>t.value.focus());function o({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Ba=$(Aa,[["__scopeId","data-v-c3508ec8"]]),Ha=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=R(),n=Y();H(()=>n.path,o),$t(e,o);const{frontmatter:r}=L(),l=Me(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,k)=>{const V=K("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),g(Ba),g(lt,{class:"backdrop",show:i(e),onClick:i(o)},null,8,["show","onClick"]),g(Sa,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(ko,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Ca,{open:i(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(no,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(io),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(V,{key:1}))}}}),Oa=$(Ha,[["__scopeId","data-v-a9a9e638"]]),Se={Layout:Oa,enhanceApp:({app:s})=>{s.component("Badge",at)}},Da=m({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(s){Y();const e=T([]),t=T("Versions"),o=()=>new Promise(n=>{const r=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(r),n({versions:window.DOC_VERSIONS,currentVersion:window.DOCUMENTER_CURRENT_VERSION}))},100)});return F(async()=>{const n=await o();e.value=n.versions.map(r=>({text:r,link:`${window.location.origin}/${r}/`})),t.value=n.currentVersion}),(n,r)=>n.screenMenu?(a(),b(Fe,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):(a(),b(Oe,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"]))}}),Fa=$(Da,[["__scopeId","data-v-31b36ab6"]]),Ra=s=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:o=>async(...n)=>{const r=o(...n),l=s.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Re="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",Ua=()=>{const s=J==null?void 0:J.getItem(Ue);if(s)try{return JSON.parse(s)}catch{}return{}},Ga=s=>{J&&J.setItem(Ue,JSON.stringify(s))},ja=s=>{const e=nt({});H(()=>e.content,(t,o)=>{t&&o&&Ga(t)},{deep:!0}),s.provide(Re,e)},za=(s,e)=>{const t=q(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");F(()=>{t.content||(t.content=Ua())});const o=T(),n=y({get(){var v;const l=e.value,d=s.value;if(l){const k=(v=t.content)==null?void 0:v[l];if(k&&d.includes(k))return k}else{const k=o.value;if(k)return k}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):o.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const Ka=()=>(Ve++,""+Ve);function Wa(){const s=Me();return y(()=>{var o;const t=(o=s.default)==null?void 0:o.call(s);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const Ge="vitepress:tabSingleState",qa=s=>{me(Ge,s)},Ja=()=>{const s=q(Ge);if(!s)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return s},Ya={class:"plugin-tabs"},Xa=["id","aria-selected","aria-controls","tabindex","onClick"],Qa=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(s){const e=s,t=Wa(),{selected:o,select:n}=za(t,ot(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Ra(r),d=l(n),v=T([]),k=_=>{var E;const P=t.value.indexOf(o.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Ya,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:k},[(a(!0),u(M,null,A(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(V)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(o),"aria-controls":`panel-${S}-${i(V)}`,tabindex:S===i(o)?0:-1,onClick:()=>i(d)(S)},N(S),9,Xa))),128))],544),c(_.$slots,"default")]))}}),Za=["id","aria-labelledby"],xa=m({__name:"PluginTabsTab",props:{label:{}},setup(s){const{uid:e,selected:t}=Ja();return(o,n)=>i(t)===o.label?(a(),u("div",{key:0,id:`panel-${o.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${o.label}-${i(e)}`},[c(o.$slots,"default",{},void 0,!0)],8,Za)):h("",!0)}}),er=$(xa,[["__scopeId","data-v-9b0d03d2"]]),tr=s=>{ja(s),s.component("PluginTabs",Qa),s.component("PluginTabsTab",er)},or={extends:Se,Layout(){return st(Se.Layout,null,{})},enhanceApp({app:s,router:e,siteData:t}){if(tr(s),s.component("VersionPicker",Fa),typeof window<"u"){let o=function(){if(!(window.DOCUMENTER_NEWEST===void 0||window.DOCUMENTER_CURRENT_VERSION===void 0||window.DOCUMENTER_STABLE===void 0)&&window.DOCUMENTER_NEWEST===window.DOCUMENTER_CURRENT_VERSION){const n=window.location.href.replace(window.DOCUMENTER_CURRENT_VERSION,window.DOCUMENTER_STABLE);window.history.replaceState({additionalInformation:"URL rewritten to stable"},"Makie",n);return}};H(()=>e.route.data.relativePath,o,{immediate:!0}),document.addEventListener("DOMContentLoaded",o)}}};export{or as R,$s as c,L as u}; diff --git a/previews/PR262/assets/jlsiued.BiOIqqM2.png b/previews/PR262/assets/jlsiued.BiOIqqM2.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3741f584655dd005914545b3ae0952cb2c66bb GIT binary patch literal 42461 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 literal 0 HcmV?d00001 diff --git a/previews/PR262/assets/jlsiued.CIf4-4Mm.png b/previews/PR262/assets/jlsiued.CIf4-4Mm.png deleted file mode 100644 index 728de84e4b0b922ea8ec54dbc2a6fc3478bf3d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42578 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 diff --git a/previews/PR262/assets/manual_ansatz_mps.md.Bg_pfwcy.js b/previews/PR262/assets/manual_ansatz_mps.md.B9GeHooP.js similarity index 83% rename from previews/PR262/assets/manual_ansatz_mps.md.Bg_pfwcy.js rename to previews/PR262/assets/manual_ansatz_mps.md.B9GeHooP.js index 61b48568..b8988811 100644 --- a/previews/PR262/assets/manual_ansatz_mps.md.Bg_pfwcy.js +++ b/previews/PR262/assets/manual_ansatz_mps.md.B9GeHooP.js @@ -1,4 +1,4 @@ -import{_ as n,c as i,a5 as t,j as a,o as e}from"./chunks/framework.BqptwCCd.js";const k=JSON.parse('{"title":"Matrix Product States (MPS)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ansatz/mps.md","filePath":"manual/ansatz/mps.md","lastUpdated":null}'),l={name:"manual/ansatz/mps.md"},o={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.99ex"},xmlns:"http://www.w3.org/2000/svg",width:"51.468ex",height:"5.18ex",role:"img",focusable:"false",viewBox:"0 -968.1 22748.8 2289.6","aria-hidden":"true"};function h(r,s,Q,T,p,m){return e(),i("div",null,[s[2]||(s[2]=t(`

Matrix Product States (MPS)

Matrix Product States (MPS) are a Quantum Tensor Network ansatz whose tensors are laid out in a 1D chain. Due to this, these networks are also known as Tensor Trains in other scientific fields. Depending on the boundary conditions, the chains can be open or closed (i.e. periodic boundary conditions), currently only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
+import{_ as e,c as i,a5 as t,j as a,o as n}from"./chunks/framework.BqptwCCd.js";const c=JSON.parse('{"title":"Matrix Product States (MPS)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ansatz/mps.md","filePath":"manual/ansatz/mps.md","lastUpdated":null}'),l={name:"manual/ansatz/mps.md"},o={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.99ex"},xmlns:"http://www.w3.org/2000/svg",width:"51.468ex",height:"5.18ex",role:"img",focusable:"false",viewBox:"0 -968.1 22748.8 2289.6","aria-hidden":"true"};function h(Q,s,r,p,T,m){return n(),i("div",null,[s[2]||(s[2]=t(`

Matrix Product States (MPS)

Matrix Product States (MPS) are a Quantum Tensor Network ansatz whose tensors are laid out in a 1D chain. Due to this, these networks are also known as Tensor Trains in other scientific fields. Depending on the boundary conditions, the chains can be open or closed (i.e. periodic boundary conditions), currently only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
 open_mps = rand(MPS; n=10, maxdim=4)
 
 plot!(fig[1,1], open_mps, layout=Spring(iterations=1000, C=0.5, seed=100))
@@ -6,19 +6,4 @@ import{_ as n,c as i,a5 as t,j as a,o as e}from"./chunks/framework.BqptwCCd.js";
 
 fig

The default ordering of the indices on the MPS constructor is (physical, left, right), but you can specify the ordering by passing the order keyword argument:

julia
mps = MPS([rand(4, 2), rand(4, 8, 2), rand(8, 2)]; order=[:l, :r, :o])

where :l, :r, and :o represent the left, right, and outer physical indices, respectively.

Canonical Forms

An MPS representation is not unique: a single MPS can be represented in different canonical forms. The choice of canonical form can affect the efficiency and stability of algorithms used to manipulate the MPS. The current form of the MPS is stored as the trait Form and can be accessed via the form function:

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
 
-form(mps)

⚠️ Depending on the form, Tenet will dispatch under the hood the appropriate algorithm which assumes full use of the canonical form, so be careful when making modifications that might alter the canonical form without changing the trait.

Tenet has the internal function Tenet.check_form to check if the MPS is in the correct canonical form. This function can be used to ensure that the MPS is in the correct form before performing any operation that requires it. Currently, Tenet supports the NonCanonical, CanonicalForm and MixedCanonical forms.

NonCanonical Form

In the NonCanonical form, the tensors in the MPS do not satisfy any particular orthogonality conditions. This is the default form when an MPS is initialized without specifying a canonical form. It is useful for general purposes but may not be optimal for certain computations that benefit from orthogonality.

Canonical Form

Also known as Vidal's form, the Canonical form represents the MPS using a sequence of isometric tensors (Γ) and diagonal vectors (λ) containing the Schmidt coefficients. The MPS is expressed as:

`,15)),a("mjx-container",o,[(e(),i("svg",d,s[0]||(s[0]=[t('',1)]))),s[1]||(s[1]=a("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("mi",null,"ψ"),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mo",null,"="),a("munder",null,[a("mo",{"data-mjx-texclass":"OP"},"∑"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"1"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")])])]),a("msub",null,[a("mi",null,"λ"),a("mn",null,"2")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"2"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"2")])])]),a("mo",null,"…"),a("msub",null,[a("mi",null,"λ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")]),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])])])]),a("msub",null,[a("mi",null,"λ"),a("mi",null,"N")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mi",null,"N"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")]),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mstyle",{scriptlevel:"0"},[a("mspace",{width:"0.167em"})]),a("mo",null,".")])],-1))]),s[3]||(s[3]=t(`

You can convert an MPS to the Canonical form by calling canonize!:

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
-canonize!(mps)
-
-form(mps)

MixedCanonical Form

In the MixedCanonical form, tensors to the left of the orthogonality center are left-canonical, tensors to the right are right-canonical, and the tensors at the orthogonality center (which can be Site or Vector{<:Site}) contains the entanglement information between the left and right parts of the chain. The position of the orthogonality center is stored in the orthog_center field.

You can convert an MPS to the MixedCanonical form and specify the orthogonality center using mixed_canonize!. Additionally, one can check that the MPS is effectively in mixed canonical form using the functions isleftcanonical and isrightcanonical, which return true if the Tensor at that particular site is left or right canonical, respectively.

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
-mixed_canonize!(mps, Site(2))
-
-isleftcanonical(mps, 1)
-isrightcanonical(mps, 3)
-
-form(mps)
Additional Resources

For more in-depth information on Matrix Product States and their canonical forms, you may refer to:

  • Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of physics, 326(1), 96-192.

Matrix Product Operators (MPO)

Matrix Product Operators (MPO) are the operator version of Matrix Product State (MPS). The major difference between them is that MPOs have 2 indices per site (1 input and 1 output) while MPSs only have 1 index per site (i.e. an output). Currently, only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
-open_mpo = rand(MPO, n=10, maxdim=4)
-
-plot!(fig[1,1], open_mpo, layout=Spring(iterations=1000, C=0.5, seed=100))
-Label(fig[1,1, Bottom()], "Open")
-
-fig
`,12))])}const g=n(l,[["render",h]]);export{k as __pageData,g as default}; +form(mps)

⚠️ Depending on the form, Tenet will dispatch under the hood the appropriate algorithm which assumes full use of the canonical form, so be careful when making modifications that might alter the canonical form without changing the trait.

Tenet has the internal function Tenet.check_form to check if the MPS is in the correct canonical form. This function can be used to ensure that the MPS is in the correct form before performing any operation that requires it. Currently, Tenet supports the NonCanonical, CanonicalForm and MixedCanonical forms.

NonCanonical Form

In the NonCanonical form, the tensors in the MPS do not satisfy any particular orthogonality conditions. This is the default form when an MPS is initialized without specifying a canonical form. It is useful for general purposes but may not be optimal for certain computations that benefit from orthogonality.

Canonical Form

Also known as Vidal's form, the Canonical form represents the MPS using a sequence of isometric tensors (Γ) and diagonal vectors (λ) containing the Schmidt coefficients. The MPS is expressed as:

`,15)),a("mjx-container",o,[(n(),i("svg",d,s[0]||(s[0]=[t('',1)]))),s[1]||(s[1]=a("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("mi",null,"ψ"),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mo",null,"="),a("munder",null,[a("mo",{"data-mjx-texclass":"OP"},"∑"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"1"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")])])]),a("msub",null,[a("mi",null,"λ"),a("mn",null,"2")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"2"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"2")])])]),a("mo",null,"…"),a("msub",null,[a("mi",null,"λ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")]),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])])])]),a("msub",null,[a("mi",null,"λ"),a("mi",null,"N")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mi",null,"N"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")]),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mstyle",{scriptlevel:"0"},[a("mspace",{width:"0.167em"})]),a("mo",null,".")])],-1))]),s[3]||(s[3]=t('

You can convert an MPS to the Canonical form by calling canonize!:

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])\ncanonize!(mps)\n\nform(mps)

MixedCanonical Form

In the MixedCanonical form, tensors to the left of the orthogonality center are left-canonical, tensors to the right are right-canonical, and the tensors at the orthogonality center (which can be Site or Vector{<:Site}) contains the entanglement information between the left and right parts of the chain. The position of the orthogonality center is stored in the orthog_center field.

You can convert an MPS to the MixedCanonical form and specify the orthogonality center using mixed_canonize!. Additionally, one can check that the MPS is effectively in mixed canonical form using the functions isleftcanonical and isrightcanonical, which return true if the Tensor at that particular site is left or right canonical, respectively.

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])\nmixed_canonize!(mps, Site(2))\n\nisisometry(mps, 1; dir=:right) # Check if the first tensor is left canonical\nisisometry(mps, 3; dir=:left) # Check if the third tensor is right canonical

form(mps)

\n##### Additional Resources\nFor more in-depth information on Matrix Product States and their canonical forms, you may refer to:\n- Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of physics, 326(1), 96-192.\n\n\n## Matrix Product Operators (MPO)\n\nMatrix Product Operators ([`MPO`](@ref)) are the operator version of [Matrix Product State (MPS)](#matrix-product-states-mps).\nThe major difference between them is that MPOs have 2 indices per site (1 input and 1 output) while MPSs only have 1 index per site (i.e. an output). Currently, only `Open` boundary conditions are supported in `Tenet`.

@example viz fig = Figure() open_mpo = rand(MPO, n=10, maxdim=4)

plot!(fig[1,1], open_mpo, layout=Spring(iterations=1000, C=0.5, seed=100)) Label(fig[1,1, Bottom()], "Open")

fig

\nTo apply an `MPO` to an `MPS`, you can use the `evolve!` function:

@example mps = rand(MPS; n=10, maxdim=100) mpo = rand(MPO; n=10, maxdim=4)

size.(tensors(mps))

evolve!(mps, mpo)

size.(tensors(mps)) ```

',16))])}const g=e(l,[["render",h]]);export{c as __pageData,g as default}; diff --git a/previews/PR262/assets/manual_ansatz_mps.md.Bg_pfwcy.lean.js b/previews/PR262/assets/manual_ansatz_mps.md.B9GeHooP.lean.js similarity index 83% rename from previews/PR262/assets/manual_ansatz_mps.md.Bg_pfwcy.lean.js rename to previews/PR262/assets/manual_ansatz_mps.md.B9GeHooP.lean.js index 61b48568..b8988811 100644 --- a/previews/PR262/assets/manual_ansatz_mps.md.Bg_pfwcy.lean.js +++ b/previews/PR262/assets/manual_ansatz_mps.md.B9GeHooP.lean.js @@ -1,4 +1,4 @@ -import{_ as n,c as i,a5 as t,j as a,o as e}from"./chunks/framework.BqptwCCd.js";const k=JSON.parse('{"title":"Matrix Product States (MPS)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ansatz/mps.md","filePath":"manual/ansatz/mps.md","lastUpdated":null}'),l={name:"manual/ansatz/mps.md"},o={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.99ex"},xmlns:"http://www.w3.org/2000/svg",width:"51.468ex",height:"5.18ex",role:"img",focusable:"false",viewBox:"0 -968.1 22748.8 2289.6","aria-hidden":"true"};function h(r,s,Q,T,p,m){return e(),i("div",null,[s[2]||(s[2]=t(`

Matrix Product States (MPS)

Matrix Product States (MPS) are a Quantum Tensor Network ansatz whose tensors are laid out in a 1D chain. Due to this, these networks are also known as Tensor Trains in other scientific fields. Depending on the boundary conditions, the chains can be open or closed (i.e. periodic boundary conditions), currently only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
+import{_ as e,c as i,a5 as t,j as a,o as n}from"./chunks/framework.BqptwCCd.js";const c=JSON.parse('{"title":"Matrix Product States (MPS)","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ansatz/mps.md","filePath":"manual/ansatz/mps.md","lastUpdated":null}'),l={name:"manual/ansatz/mps.md"},o={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.99ex"},xmlns:"http://www.w3.org/2000/svg",width:"51.468ex",height:"5.18ex",role:"img",focusable:"false",viewBox:"0 -968.1 22748.8 2289.6","aria-hidden":"true"};function h(Q,s,r,p,T,m){return n(),i("div",null,[s[2]||(s[2]=t(`

Matrix Product States (MPS)

Matrix Product States (MPS) are a Quantum Tensor Network ansatz whose tensors are laid out in a 1D chain. Due to this, these networks are also known as Tensor Trains in other scientific fields. Depending on the boundary conditions, the chains can be open or closed (i.e. periodic boundary conditions), currently only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
 open_mps = rand(MPS; n=10, maxdim=4)
 
 plot!(fig[1,1], open_mps, layout=Spring(iterations=1000, C=0.5, seed=100))
@@ -6,19 +6,4 @@ import{_ as n,c as i,a5 as t,j as a,o as e}from"./chunks/framework.BqptwCCd.js";
 
 fig

The default ordering of the indices on the MPS constructor is (physical, left, right), but you can specify the ordering by passing the order keyword argument:

julia
mps = MPS([rand(4, 2), rand(4, 8, 2), rand(8, 2)]; order=[:l, :r, :o])

where :l, :r, and :o represent the left, right, and outer physical indices, respectively.

Canonical Forms

An MPS representation is not unique: a single MPS can be represented in different canonical forms. The choice of canonical form can affect the efficiency and stability of algorithms used to manipulate the MPS. The current form of the MPS is stored as the trait Form and can be accessed via the form function:

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
 
-form(mps)

⚠️ Depending on the form, Tenet will dispatch under the hood the appropriate algorithm which assumes full use of the canonical form, so be careful when making modifications that might alter the canonical form without changing the trait.

Tenet has the internal function Tenet.check_form to check if the MPS is in the correct canonical form. This function can be used to ensure that the MPS is in the correct form before performing any operation that requires it. Currently, Tenet supports the NonCanonical, CanonicalForm and MixedCanonical forms.

NonCanonical Form

In the NonCanonical form, the tensors in the MPS do not satisfy any particular orthogonality conditions. This is the default form when an MPS is initialized without specifying a canonical form. It is useful for general purposes but may not be optimal for certain computations that benefit from orthogonality.

Canonical Form

Also known as Vidal's form, the Canonical form represents the MPS using a sequence of isometric tensors (Γ) and diagonal vectors (λ) containing the Schmidt coefficients. The MPS is expressed as:

`,15)),a("mjx-container",o,[(e(),i("svg",d,s[0]||(s[0]=[t('',1)]))),s[1]||(s[1]=a("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("mi",null,"ψ"),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mo",null,"="),a("munder",null,[a("mo",{"data-mjx-texclass":"OP"},"∑"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"1"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")])])]),a("msub",null,[a("mi",null,"λ"),a("mn",null,"2")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"2"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"2")])])]),a("mo",null,"…"),a("msub",null,[a("mi",null,"λ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")]),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])])])]),a("msub",null,[a("mi",null,"λ"),a("mi",null,"N")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mi",null,"N"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")]),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mstyle",{scriptlevel:"0"},[a("mspace",{width:"0.167em"})]),a("mo",null,".")])],-1))]),s[3]||(s[3]=t(`

You can convert an MPS to the Canonical form by calling canonize!:

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
-canonize!(mps)
-
-form(mps)

MixedCanonical Form

In the MixedCanonical form, tensors to the left of the orthogonality center are left-canonical, tensors to the right are right-canonical, and the tensors at the orthogonality center (which can be Site or Vector{<:Site}) contains the entanglement information between the left and right parts of the chain. The position of the orthogonality center is stored in the orthog_center field.

You can convert an MPS to the MixedCanonical form and specify the orthogonality center using mixed_canonize!. Additionally, one can check that the MPS is effectively in mixed canonical form using the functions isleftcanonical and isrightcanonical, which return true if the Tensor at that particular site is left or right canonical, respectively.

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
-mixed_canonize!(mps, Site(2))
-
-isleftcanonical(mps, 1)
-isrightcanonical(mps, 3)
-
-form(mps)
Additional Resources

For more in-depth information on Matrix Product States and their canonical forms, you may refer to:

  • Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of physics, 326(1), 96-192.

Matrix Product Operators (MPO)

Matrix Product Operators (MPO) are the operator version of Matrix Product State (MPS). The major difference between them is that MPOs have 2 indices per site (1 input and 1 output) while MPSs only have 1 index per site (i.e. an output). Currently, only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
-open_mpo = rand(MPO, n=10, maxdim=4)
-
-plot!(fig[1,1], open_mpo, layout=Spring(iterations=1000, C=0.5, seed=100))
-Label(fig[1,1, Bottom()], "Open")
-
-fig
`,12))])}const g=n(l,[["render",h]]);export{k as __pageData,g as default}; +form(mps)

⚠️ Depending on the form, Tenet will dispatch under the hood the appropriate algorithm which assumes full use of the canonical form, so be careful when making modifications that might alter the canonical form without changing the trait.

Tenet has the internal function Tenet.check_form to check if the MPS is in the correct canonical form. This function can be used to ensure that the MPS is in the correct form before performing any operation that requires it. Currently, Tenet supports the NonCanonical, CanonicalForm and MixedCanonical forms.

NonCanonical Form

In the NonCanonical form, the tensors in the MPS do not satisfy any particular orthogonality conditions. This is the default form when an MPS is initialized without specifying a canonical form. It is useful for general purposes but may not be optimal for certain computations that benefit from orthogonality.

Canonical Form

Also known as Vidal's form, the Canonical form represents the MPS using a sequence of isometric tensors (Γ) and diagonal vectors (λ) containing the Schmidt coefficients. The MPS is expressed as:

`,15)),a("mjx-container",o,[(n(),i("svg",d,s[0]||(s[0]=[t('',1)]))),s[1]||(s[1]=a("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("mi",null,"ψ"),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mo",null,"="),a("munder",null,[a("mo",{"data-mjx-texclass":"OP"},"∑"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"1"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"1")])])]),a("msub",null,[a("mi",null,"λ"),a("mn",null,"2")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mn",null,"2"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mn",null,"2")])])]),a("mo",null,"…"),a("msub",null,[a("mi",null,"λ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")]),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",null,"N"),a("mo",null,"−"),a("mn",null,"1")])])])]),a("msub",null,[a("mi",null,"λ"),a("mi",null,"N")]),a("msubsup",null,[a("mi",{mathvariant:"normal"},"Γ"),a("mi",null,"N"),a("mrow",{"data-mjx-texclass":"ORD"},[a("msub",null,[a("mi",null,"i"),a("mi",null,"N")])])]),a("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),a("msub",null,[a("mi",null,"i"),a("mn",null,"1")]),a("mo",null,","),a("mo",null,"…"),a("mo",null,","),a("msub",null,[a("mi",null,"i"),a("mi",null,"N")]),a("mo",{fence:"false",stretchy:"false"},"⟩"),a("mstyle",{scriptlevel:"0"},[a("mspace",{width:"0.167em"})]),a("mo",null,".")])],-1))]),s[3]||(s[3]=t('

You can convert an MPS to the Canonical form by calling canonize!:

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])\ncanonize!(mps)\n\nform(mps)

MixedCanonical Form

In the MixedCanonical form, tensors to the left of the orthogonality center are left-canonical, tensors to the right are right-canonical, and the tensors at the orthogonality center (which can be Site or Vector{<:Site}) contains the entanglement information between the left and right parts of the chain. The position of the orthogonality center is stored in the orthog_center field.

You can convert an MPS to the MixedCanonical form and specify the orthogonality center using mixed_canonize!. Additionally, one can check that the MPS is effectively in mixed canonical form using the functions isleftcanonical and isrightcanonical, which return true if the Tensor at that particular site is left or right canonical, respectively.

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])\nmixed_canonize!(mps, Site(2))\n\nisisometry(mps, 1; dir=:right) # Check if the first tensor is left canonical\nisisometry(mps, 3; dir=:left) # Check if the third tensor is right canonical

form(mps)

\n##### Additional Resources\nFor more in-depth information on Matrix Product States and their canonical forms, you may refer to:\n- Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of physics, 326(1), 96-192.\n\n\n## Matrix Product Operators (MPO)\n\nMatrix Product Operators ([`MPO`](@ref)) are the operator version of [Matrix Product State (MPS)](#matrix-product-states-mps).\nThe major difference between them is that MPOs have 2 indices per site (1 input and 1 output) while MPSs only have 1 index per site (i.e. an output). Currently, only `Open` boundary conditions are supported in `Tenet`.

@example viz fig = Figure() open_mpo = rand(MPO, n=10, maxdim=4)

plot!(fig[1,1], open_mpo, layout=Spring(iterations=1000, C=0.5, seed=100)) Label(fig[1,1, Bottom()], "Open")

fig

\nTo apply an `MPO` to an `MPS`, you can use the `evolve!` function:

@example mps = rand(MPS; n=10, maxdim=100) mpo = rand(MPO; n=10, maxdim=4)

size.(tensors(mps))

evolve!(mps, mpo)

size.(tensors(mps)) ```

',16))])}const g=e(l,[["render",h]]);export{c as __pageData,g as default}; diff --git a/previews/PR262/assets/manual_contraction.md.IOCPRU5-.js b/previews/PR262/assets/manual_contraction.md.pVZ11YfN.js similarity index 69% rename from previews/PR262/assets/manual_contraction.md.IOCPRU5-.js rename to previews/PR262/assets/manual_contraction.md.pVZ11YfN.js index 82051fa3..1b52edd0 100644 --- a/previews/PR262/assets/manual_contraction.md.IOCPRU5-.js +++ b/previews/PR262/assets/manual_contraction.md.pVZ11YfN.js @@ -1 +1 @@ -import{_ as o,c as r,j as t,a as e,G as n,a5 as a,B as l,o as p}from"./chunks/framework.BqptwCCd.js";const y=JSON.parse('{"title":"Contraction","description":"","frontmatter":{},"headers":[],"relativePath":"manual/contraction.md","filePath":"manual/contraction.md","lastUpdated":null}'),c={name:"manual/contraction.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""};function k(u,s,g,E,b,m){const i=l("Badge");return p(),r("div",null,[s[6]||(s[6]=t("h1",{id:"contraction",tabindex:"-1"},[e("Contraction "),t("a",{class:"header-anchor",href:"#contraction","aria-label":'Permalink to "Contraction"'},"​")],-1)),s[7]||(s[7]=t("p",null,[e("Contraction path optimization and execution is delegated to the "),t("a",{href:"https://github.com/bsc-quantic/EinExprs",target:"_blank",rel:"noreferrer"},[t("code",null,"EinExprs")]),e(" library. A "),t("code",null,"EinExpr"),e(" is a lower-level form of a Tensor Network, in which the contraction path has been laid out as a tree. It is similar to a symbolic expression (i.e. "),t("code",null,"Expr"),e(") but in which every node represents an Einstein summation expression (aka "),t("code",null,"einsum"),e(").")],-1)),t("details",d,[t("summary",null,[s[0]||(s[0]=t("a",{id:"EinExprs.einexpr-Tuple{TensorNetwork}",href:"#EinExprs.einexpr-Tuple{TensorNetwork}"},[t("span",{class:"jlbinding"},"EinExprs.einexpr")],-1)),s[1]||(s[1]=e()),n(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=a('
julia
einexpr(tn::AbstractTensorNetwork; optimizer = EinExprs.Greedy, output = inds(tn, :open), kwargs...)

Search a contraction path for the given AbstractTensorNetwork and return it as a EinExpr.

Keyword Arguments

  • optimizer Contraction path optimizer. Check EinExprs documentation for more info.

  • outputs Indices that won't be contracted. Defaults to open indices.

  • kwargs Options to be passed to the optimizer.

See also: contract.

source

',6))]),s[8]||(s[8]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Missing docstring."),t("p",null,[e("Missing docstring for "),t("code",null,"contract(::Tenet.TensorNetwork)"),e(". Check Documenter's build log for details.")])],-1)),t("details",h,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Tenet.contract!",href:"#Tenet.contract!"},[t("span",{class:"jlbinding"},"Tenet.contract!")],-1)),s[4]||(s[4]=e()),n(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[5]||(s[5]=a('
julia
contract!(tn::TensorNetwork, index)

In-place contraction of tensors connected to index.

See also: contract.

source

',4))])])}const x=o(c,[["render",k]]);export{y as __pageData,x as default}; +import{_ as o,c as r,j as e,a as s,G as n,a5 as a,B as l,o as p}from"./chunks/framework.BqptwCCd.js";const y=JSON.parse('{"title":"Contraction","description":"","frontmatter":{},"headers":[],"relativePath":"manual/contraction.md","filePath":"manual/contraction.md","lastUpdated":null}'),c={name:"manual/contraction.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""};function k(u,t,g,E,b,m){const i=l("Badge");return p(),r("div",null,[t[6]||(t[6]=e("h1",{id:"contraction",tabindex:"-1"},[s("Contraction "),e("a",{class:"header-anchor",href:"#contraction","aria-label":'Permalink to "Contraction"'},"​")],-1)),t[7]||(t[7]=e("p",null,[s("Contraction path optimization and execution is delegated to the "),e("a",{href:"https://github.com/bsc-quantic/EinExprs",target:"_blank",rel:"noreferrer"},[e("code",null,"EinExprs")]),s(" library. A "),e("code",null,"EinExpr"),s(" is a lower-level form of a Tensor Network, in which the contraction path has been laid out as a tree. It is similar to a symbolic expression (i.e. "),e("code",null,"Expr"),s(") but in which every node represents an Einstein summation expression (aka "),e("code",null,"einsum"),s(").")],-1)),e("details",d,[e("summary",null,[t[0]||(t[0]=e("a",{id:"EinExprs.einexpr-Tuple{TensorNetwork}",href:"#EinExprs.einexpr-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"EinExprs.einexpr")],-1)),t[1]||(t[1]=s()),n(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[2]||(t[2]=a('
julia
einexpr(tn::AbstractTensorNetwork; optimizer = EinExprs.Greedy, output = inds(tn, :open), kwargs...)

Search a contraction path for the given AbstractTensorNetwork and return it as a EinExpr.

Keyword Arguments

  • optimizer Contraction path optimizer. Check EinExprs documentation for more info.

  • outputs Indices that won't be contracted. Defaults to open indices.

  • kwargs Options to be passed to the optimizer.

See also: contract.

source

',6))]),t[8]||(t[8]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[s("Missing docstring for "),e("code",null,"contract(::Tenet.TensorNetwork)"),s(". Check Documenter's build log for details.")])],-1)),e("details",h,[e("summary",null,[t[3]||(t[3]=e("a",{id:"Tenet.contract!",href:"#Tenet.contract!"},[e("span",{class:"jlbinding"},"Tenet.contract!")],-1)),t[4]||(t[4]=s()),n(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[5]||(t[5]=a('
julia
contract!(tn::TensorNetwork, index)

In-place contraction of tensors connected to index.

See also: contract.

source

',4))])])}const x=o(c,[["render",k]]);export{y as __pageData,x as default}; diff --git a/previews/PR262/assets/manual_contraction.md.IOCPRU5-.lean.js b/previews/PR262/assets/manual_contraction.md.pVZ11YfN.lean.js similarity index 69% rename from previews/PR262/assets/manual_contraction.md.IOCPRU5-.lean.js rename to previews/PR262/assets/manual_contraction.md.pVZ11YfN.lean.js index 82051fa3..1b52edd0 100644 --- a/previews/PR262/assets/manual_contraction.md.IOCPRU5-.lean.js +++ b/previews/PR262/assets/manual_contraction.md.pVZ11YfN.lean.js @@ -1 +1 @@ -import{_ as o,c as r,j as t,a as e,G as n,a5 as a,B as l,o as p}from"./chunks/framework.BqptwCCd.js";const y=JSON.parse('{"title":"Contraction","description":"","frontmatter":{},"headers":[],"relativePath":"manual/contraction.md","filePath":"manual/contraction.md","lastUpdated":null}'),c={name:"manual/contraction.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""};function k(u,s,g,E,b,m){const i=l("Badge");return p(),r("div",null,[s[6]||(s[6]=t("h1",{id:"contraction",tabindex:"-1"},[e("Contraction "),t("a",{class:"header-anchor",href:"#contraction","aria-label":'Permalink to "Contraction"'},"​")],-1)),s[7]||(s[7]=t("p",null,[e("Contraction path optimization and execution is delegated to the "),t("a",{href:"https://github.com/bsc-quantic/EinExprs",target:"_blank",rel:"noreferrer"},[t("code",null,"EinExprs")]),e(" library. A "),t("code",null,"EinExpr"),e(" is a lower-level form of a Tensor Network, in which the contraction path has been laid out as a tree. It is similar to a symbolic expression (i.e. "),t("code",null,"Expr"),e(") but in which every node represents an Einstein summation expression (aka "),t("code",null,"einsum"),e(").")],-1)),t("details",d,[t("summary",null,[s[0]||(s[0]=t("a",{id:"EinExprs.einexpr-Tuple{TensorNetwork}",href:"#EinExprs.einexpr-Tuple{TensorNetwork}"},[t("span",{class:"jlbinding"},"EinExprs.einexpr")],-1)),s[1]||(s[1]=e()),n(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=a('
julia
einexpr(tn::AbstractTensorNetwork; optimizer = EinExprs.Greedy, output = inds(tn, :open), kwargs...)

Search a contraction path for the given AbstractTensorNetwork and return it as a EinExpr.

Keyword Arguments

  • optimizer Contraction path optimizer. Check EinExprs documentation for more info.

  • outputs Indices that won't be contracted. Defaults to open indices.

  • kwargs Options to be passed to the optimizer.

See also: contract.

source

',6))]),s[8]||(s[8]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Missing docstring."),t("p",null,[e("Missing docstring for "),t("code",null,"contract(::Tenet.TensorNetwork)"),e(". Check Documenter's build log for details.")])],-1)),t("details",h,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Tenet.contract!",href:"#Tenet.contract!"},[t("span",{class:"jlbinding"},"Tenet.contract!")],-1)),s[4]||(s[4]=e()),n(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[5]||(s[5]=a('
julia
contract!(tn::TensorNetwork, index)

In-place contraction of tensors connected to index.

See also: contract.

source

',4))])])}const x=o(c,[["render",k]]);export{y as __pageData,x as default}; +import{_ as o,c as r,j as e,a as s,G as n,a5 as a,B as l,o as p}from"./chunks/framework.BqptwCCd.js";const y=JSON.parse('{"title":"Contraction","description":"","frontmatter":{},"headers":[],"relativePath":"manual/contraction.md","filePath":"manual/contraction.md","lastUpdated":null}'),c={name:"manual/contraction.md"},d={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""};function k(u,t,g,E,b,m){const i=l("Badge");return p(),r("div",null,[t[6]||(t[6]=e("h1",{id:"contraction",tabindex:"-1"},[s("Contraction "),e("a",{class:"header-anchor",href:"#contraction","aria-label":'Permalink to "Contraction"'},"​")],-1)),t[7]||(t[7]=e("p",null,[s("Contraction path optimization and execution is delegated to the "),e("a",{href:"https://github.com/bsc-quantic/EinExprs",target:"_blank",rel:"noreferrer"},[e("code",null,"EinExprs")]),s(" library. A "),e("code",null,"EinExpr"),s(" is a lower-level form of a Tensor Network, in which the contraction path has been laid out as a tree. It is similar to a symbolic expression (i.e. "),e("code",null,"Expr"),s(") but in which every node represents an Einstein summation expression (aka "),e("code",null,"einsum"),s(").")],-1)),e("details",d,[e("summary",null,[t[0]||(t[0]=e("a",{id:"EinExprs.einexpr-Tuple{TensorNetwork}",href:"#EinExprs.einexpr-Tuple{TensorNetwork}"},[e("span",{class:"jlbinding"},"EinExprs.einexpr")],-1)),t[1]||(t[1]=s()),n(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[2]||(t[2]=a('
julia
einexpr(tn::AbstractTensorNetwork; optimizer = EinExprs.Greedy, output = inds(tn, :open), kwargs...)

Search a contraction path for the given AbstractTensorNetwork and return it as a EinExpr.

Keyword Arguments

  • optimizer Contraction path optimizer. Check EinExprs documentation for more info.

  • outputs Indices that won't be contracted. Defaults to open indices.

  • kwargs Options to be passed to the optimizer.

See also: contract.

source

',6))]),t[8]||(t[8]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"Missing docstring."),e("p",null,[s("Missing docstring for "),e("code",null,"contract(::Tenet.TensorNetwork)"),s(". Check Documenter's build log for details.")])],-1)),e("details",h,[e("summary",null,[t[3]||(t[3]=e("a",{id:"Tenet.contract!",href:"#Tenet.contract!"},[e("span",{class:"jlbinding"},"Tenet.contract!")],-1)),t[4]||(t[4]=s()),n(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[5]||(t[5]=a('
julia
contract!(tn::TensorNetwork, index)

In-place contraction of tensors connected to index.

See also: contract.

source

',4))])])}const x=o(c,[["render",k]]);export{y as __pageData,x as default}; diff --git a/previews/PR262/assets/manual_tensors.md.BT9L1Usp.js b/previews/PR262/assets/manual_tensors.md.CVZunshj.js similarity index 96% rename from previews/PR262/assets/manual_tensors.md.BT9L1Usp.js rename to previews/PR262/assets/manual_tensors.md.CVZunshj.js index 1eb80152..4543018c 100644 --- a/previews/PR262/assets/manual_tensors.md.BT9L1Usp.js +++ b/previews/PR262/assets/manual_tensors.md.CVZunshj.js @@ -1,14 +1,14 @@ import{_ as i,c as e,j as t,a as s,a5 as Q,o as T}from"./chunks/framework.BqptwCCd.js";const M=JSON.parse('{"title":"Tensors","description":"","frontmatter":{},"headers":[],"relativePath":"manual/tensors.md","filePath":"manual/tensors.md","lastUpdated":null}'),l={name:"manual/tensors.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.072ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.876ex",height:"1.618ex",role:"img",focusable:"false",viewBox:"0 -683 829 715","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.072ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.017ex",height:"2.207ex",role:"img",focusable:"false",viewBox:"0 -943.3 13709.6 975.3","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.273ex",height:"2.7ex",role:"img",focusable:"false",viewBox:"0 -943.3 21778.8 1193.3","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.528ex",height:"2.197ex",role:"img",focusable:"false",viewBox:"0 -677 9073.6 971.2","aria-hidden":"true"};function u(f,a,L,V,F,C){return T(),e("div",null,[a[27]||(a[27]=t("h1",{id:"tensors",tabindex:"-1"},[s("Tensors "),t("a",{class:"header-anchor",href:"#tensors","aria-label":'Permalink to "Tensors"'},"​")],-1)),a[28]||(a[28]=t("p",null,"If you have reached here, you probably know wha a tensor is. Nevertheless, we are gonna give a brief remainder.",-1)),t("p",null,[a[8]||(a[8]=s("There are many jokes")),a[9]||(a[9]=t("sup",{class:"footnote-ref"},[t("a",{href:"#fn1",id:"fnref1"},"[1]")],-1)),a[10]||(a[10]=s(" about how to define a ")),a[11]||(a[11]=t("em",null,"tensor",-1)),a[12]||(a[12]=s(". The definition we are giving here might not be the most correct one, but it is good enough for our use case (don't kill me please, mathematicians). A tensor ")),t("mjx-container",n,[(T(),e("svg",o,a[0]||(a[0]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"T")])],-1))]),a[13]||(a[13]=s(" of order")),a[14]||(a[14]=t("sup",{class:"footnote-ref"},[t("a",{href:"#fn2",id:"fnref2"},"[2]")],-1)),a[15]||(a[15]=s()),t("mjx-container",r,[(T(),e("svg",d,a[2]||(a[2]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[16]||(a[16]=s(" is a multilinear")),a[17]||(a[17]=t("sup",{class:"footnote-ref"},[t("a",{href:"#fn3",id:"fnref3"},"[3]")],-1)),a[18]||(a[18]=s(" application between ")),t("mjx-container",m,[(T(),e("svg",h,a[4]||(a[4]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[19]||(a[19]=s(" vector spaces over a field ")),t("mjx-container",p,[(T(),e("svg",k,a[6]||(a[6]=[Q('',1)]))),a[7]||(a[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")])])],-1))]),a[20]||(a[20]=s("."))]),t("mjx-container",g,[(T(),e("svg",c,a[21]||(a[21]=[Q('',1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"T"),t("mo",null,":"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"dim"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",null,"×"),t("mo",null,"⋯"),t("mo",null,"×"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"dim"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"↦"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")])])],-1))]),a[29]||(a[29]=t("p",null,"In layman's terms, it is a linear function whose inputs are vectors and the output is a scalar number.",-1)),t("mjx-container",H,[(T(),e("svg",y,a[23]||(a[23]=[Q('',1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"T"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"c"),t("mo",null,"∈"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"2em"})]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"2em"})]),t("mi",{mathvariant:"normal"},"∀"),t("mi",null,"i"),t("mo",null,","),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"i"),t("mo",{stretchy:"false"},")")])]),t("mo",null,"∈"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"dim"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"i"),t("mo",{stretchy:"false"},")")])])])],-1))]),a[30]||(a[30]=t("p",null,[s("Tensor algebra is a higher-order generalization of linear algebra, where scalar numbers can be viewed as "),t("em",null,"order-0 tensors"),s(", vectors as "),t("em",null,"order-1 tensors"),s(", matrices as "),t("em",null,"order-2 tensors"),s(", ...")],-1)),a[31]||(a[31]=t("p",null,[s('Letters are used to identify each of the vector spaces the tensor relates to. In computer science, you would intuitively think of tensors as "'),t("em",null,"n-dimensional arrays with named dimensions"),s('".')],-1)),t("mjx-container",x,[(T(),e("svg",w,a[25]||(a[25]=[Q('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j"),t("mi",null,"k")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mo",{stretchy:"false"},"⟺"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"monospace"},"T"),t("mo",{mathvariant:"monospace",stretchy:"false"},"["),t("mi",{mathvariant:"monospace"},"i"),t("mo",{mathvariant:"monospace"},","),t("mi",{mathvariant:"monospace"},"j"),t("mo",{mathvariant:"monospace"},","),t("mi",{mathvariant:"monospace"},"k"),t("mo",{mathvariant:"monospace",stretchy:"false"},"]")])])],-1))]),a[32]||(a[32]=Q(`

The Tensor type

In Tenet, a tensor is represented by the Tensor type, which wraps an array and a list of symbols. As it subtypes AbstractArray, many array operations can be dispatched to it.

You can create a Tensor by passing an array and a list of Symbols that name indices.

julia
julia> Tᵢⱼₖ = Tensor(rand(3,5,2), (:i,:j,:k))
 3×5×2 Tensor{Float64, 3, Array{Float64, 3}}:
 [:, :, 1] =
- 0.445072  0.532194  0.138145  0.218395  0.559118
- 0.499171  0.705777  0.688589  0.189977  0.643453
- 0.915701  0.963517  0.569817  0.722715  0.72426
+ 0.917511  0.531008  0.701557  0.0356729  0.752601
+ 0.806058  0.775472  0.859521  0.956189   0.625493
+ 0.772719  0.494982  0.202628  0.96778    0.678244
 
 [:, :, 2] =
- 0.0711621  0.147625  0.50807    0.31609   0.0302424
- 0.762536   0.270657  0.0935597  0.797624  0.690868
- 0.0512209  0.944622  0.0802031  0.775862  0.345115

The dimensionality or size of each index can be consulted using the size function.

julia
julia> size(Tᵢⱼₖ)
+ 0.535015  0.956991   0.182884  0.736615   0.112213
+ 0.703756  0.611271   0.246324  0.0802697  0.796033
+ 0.530744  0.0631172  0.666828  0.236731   0.262625

The dimensionality or size of each index can be consulted using the size function.

julia
julia> size(Tᵢⱼₖ)
 (3, 5, 2)
 
 julia> size(Tᵢⱼₖ, :j)
diff --git a/previews/PR262/assets/manual_tensors.md.BT9L1Usp.lean.js b/previews/PR262/assets/manual_tensors.md.CVZunshj.lean.js
similarity index 96%
rename from previews/PR262/assets/manual_tensors.md.BT9L1Usp.lean.js
rename to previews/PR262/assets/manual_tensors.md.CVZunshj.lean.js
index 1eb80152..4543018c 100644
--- a/previews/PR262/assets/manual_tensors.md.BT9L1Usp.lean.js
+++ b/previews/PR262/assets/manual_tensors.md.CVZunshj.lean.js
@@ -1,14 +1,14 @@
 import{_ as i,c as e,j as t,a as s,a5 as Q,o as T}from"./chunks/framework.BqptwCCd.js";const M=JSON.parse('{"title":"Tensors","description":"","frontmatter":{},"headers":[],"relativePath":"manual/tensors.md","filePath":"manual/tensors.md","lastUpdated":null}'),l={name:"manual/tensors.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.072ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.876ex",height:"1.618ex",role:"img",focusable:"false",viewBox:"0 -683 829 715","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.072ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.017ex",height:"2.207ex",role:"img",focusable:"false",viewBox:"0 -943.3 13709.6 975.3","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.273ex",height:"2.7ex",role:"img",focusable:"false",viewBox:"0 -943.3 21778.8 1193.3","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.528ex",height:"2.197ex",role:"img",focusable:"false",viewBox:"0 -677 9073.6 971.2","aria-hidden":"true"};function u(f,a,L,V,F,C){return T(),e("div",null,[a[27]||(a[27]=t("h1",{id:"tensors",tabindex:"-1"},[s("Tensors "),t("a",{class:"header-anchor",href:"#tensors","aria-label":'Permalink to "Tensors"'},"​")],-1)),a[28]||(a[28]=t("p",null,"If you have reached here, you probably know wha a tensor is. Nevertheless, we are gonna give a brief remainder.",-1)),t("p",null,[a[8]||(a[8]=s("There are many jokes")),a[9]||(a[9]=t("sup",{class:"footnote-ref"},[t("a",{href:"#fn1",id:"fnref1"},"[1]")],-1)),a[10]||(a[10]=s(" about how to define a ")),a[11]||(a[11]=t("em",null,"tensor",-1)),a[12]||(a[12]=s(". The definition we are giving here might not be the most correct one, but it is good enough for our use case (don't kill me please, mathematicians). A tensor ")),t("mjx-container",n,[(T(),e("svg",o,a[0]||(a[0]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"T")])],-1))]),a[13]||(a[13]=s(" of order")),a[14]||(a[14]=t("sup",{class:"footnote-ref"},[t("a",{href:"#fn2",id:"fnref2"},"[2]")],-1)),a[15]||(a[15]=s()),t("mjx-container",r,[(T(),e("svg",d,a[2]||(a[2]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[16]||(a[16]=s(" is a multilinear")),a[17]||(a[17]=t("sup",{class:"footnote-ref"},[t("a",{href:"#fn3",id:"fnref3"},"[3]")],-1)),a[18]||(a[18]=s(" application between ")),t("mjx-container",m,[(T(),e("svg",h,a[4]||(a[4]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[19]||(a[19]=s(" vector spaces over a field ")),t("mjx-container",p,[(T(),e("svg",k,a[6]||(a[6]=[Q('',1)]))),a[7]||(a[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")])])],-1))]),a[20]||(a[20]=s("."))]),t("mjx-container",g,[(T(),e("svg",c,a[21]||(a[21]=[Q('',1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"T"),t("mo",null,":"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"dim"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",null,"×"),t("mo",null,"⋯"),t("mo",null,"×"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"dim"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"↦"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")])])],-1))]),a[29]||(a[29]=t("p",null,"In layman's terms, it is a linear function whose inputs are vectors and the output is a scalar number.",-1)),t("mjx-container",H,[(T(),e("svg",y,a[23]||(a[23]=[Q('',1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"T"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"c"),t("mo",null,"∈"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"2em"})]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"2em"})]),t("mi",{mathvariant:"normal"},"∀"),t("mi",null,"i"),t("mo",null,","),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"bold"},"v")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"i"),t("mo",{stretchy:"false"},")")])]),t("mo",null,"∈"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"F")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"dim"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"i"),t("mo",{stretchy:"false"},")")])])])],-1))]),a[30]||(a[30]=t("p",null,[s("Tensor algebra is a higher-order generalization of linear algebra, where scalar numbers can be viewed as "),t("em",null,"order-0 tensors"),s(", vectors as "),t("em",null,"order-1 tensors"),s(", matrices as "),t("em",null,"order-2 tensors"),s(", ...")],-1)),a[31]||(a[31]=t("p",null,[s('Letters are used to identify each of the vector spaces the tensor relates to. In computer science, you would intuitively think of tensors as "'),t("em",null,"n-dimensional arrays with named dimensions"),s('".')],-1)),t("mjx-container",x,[(T(),e("svg",w,a[25]||(a[25]=[Q('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j"),t("mi",null,"k")])]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mo",{stretchy:"false"},"⟺"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.278em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"monospace"},"T"),t("mo",{mathvariant:"monospace",stretchy:"false"},"["),t("mi",{mathvariant:"monospace"},"i"),t("mo",{mathvariant:"monospace"},","),t("mi",{mathvariant:"monospace"},"j"),t("mo",{mathvariant:"monospace"},","),t("mi",{mathvariant:"monospace"},"k"),t("mo",{mathvariant:"monospace",stretchy:"false"},"]")])])],-1))]),a[32]||(a[32]=Q(`

The Tensor type

In Tenet, a tensor is represented by the Tensor type, which wraps an array and a list of symbols. As it subtypes AbstractArray, many array operations can be dispatched to it.

You can create a Tensor by passing an array and a list of Symbols that name indices.

julia
julia> Tᵢⱼₖ = Tensor(rand(3,5,2), (:i,:j,:k))
 3×5×2 Tensor{Float64, 3, Array{Float64, 3}}:
 [:, :, 1] =
- 0.445072  0.532194  0.138145  0.218395  0.559118
- 0.499171  0.705777  0.688589  0.189977  0.643453
- 0.915701  0.963517  0.569817  0.722715  0.72426
+ 0.917511  0.531008  0.701557  0.0356729  0.752601
+ 0.806058  0.775472  0.859521  0.956189   0.625493
+ 0.772719  0.494982  0.202628  0.96778    0.678244
 
 [:, :, 2] =
- 0.0711621  0.147625  0.50807    0.31609   0.0302424
- 0.762536   0.270657  0.0935597  0.797624  0.690868
- 0.0512209  0.944622  0.0802031  0.775862  0.345115

The dimensionality or size of each index can be consulted using the size function.

julia
julia> size(Tᵢⱼₖ)
+ 0.535015  0.956991   0.182884  0.736615   0.112213
+ 0.703756  0.611271   0.246324  0.0802697  0.796033
+ 0.530744  0.0631172  0.666828  0.236731   0.262625

The dimensionality or size of each index can be consulted using the size function.

julia
julia> size(Tᵢⱼₖ)
 (3, 5, 2)
 
 julia> size(Tᵢⱼₖ, :j)
diff --git a/previews/PR262/assets/manual_transformations.md.Dm6LcGKB.js b/previews/PR262/assets/manual_transformations.md.BCGTlIGr.js
similarity index 98%
rename from previews/PR262/assets/manual_transformations.md.Dm6LcGKB.js
rename to previews/PR262/assets/manual_transformations.md.BCGTlIGr.js
index fa557a20..20a890d2 100644
--- a/previews/PR262/assets/manual_transformations.md.Dm6LcGKB.js
+++ b/previews/PR262/assets/manual_transformations.md.BCGTlIGr.js
@@ -1 +1 @@
-import{_ as t,c as i,a5 as e,o as n}from"./chunks/framework.BqptwCCd.js";const o="/Tenet.jl/previews/PR262/assets/bdrzgoc.D7V6hupC.png",r="/Tenet.jl/previews/PR262/assets/jlsiued.CIf4-4Mm.png",s="/Tenet.jl/previews/PR262/assets/bvndqnh.CiEHhneS.png",l="/Tenet.jl/previews/PR262/assets/axctrwo.FFeR2tQ7.png",g=JSON.parse('{"title":"Transformations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/transformations.md","filePath":"manual/transformations.md","lastUpdated":null}'),c={name:"manual/transformations.md"};function d(p,a,m,h,u,f){return n(),i("div",null,a[0]||(a[0]=[e('

Transformations

In tensor network computations, it is good practice to apply various transformations to simplify the network structure, reduce computational cost, or prepare the network for further operations. These transformations modify the network's structure locally by permuting, contracting, factoring or truncating tensors.

A crucial reason why these methods are indispensable lies in their ability to drastically reduce the problem size of the contraction path search and also the contraction. This doesn't necessarily involve reducing the maximum rank of the Tensor Network itself, but more importantly, it reduces the size (or rank) of the involved tensors.

Our approach is based in (Gray and Kourtis, 2021), which can also be found in quimb.

In Tenet, we provide a set of predefined transformations which you can apply to your TensorNetwork using both the transform/transform! functions.

Available transformations

Hyperindex converter

Contraction simplification

Diagonal reduction

Anti-diagonal reduction

Dimension truncation

Split simplification

',16)]))}const v=t(c,[["render",d]]);export{g as __pageData,v as default}; +import{_ as t,c as i,a5 as e,o as n}from"./chunks/framework.BqptwCCd.js";const o="/Tenet.jl/previews/PR262/assets/bdrzgoc.D7V6hupC.png",r="/Tenet.jl/previews/PR262/assets/jlsiued.BiOIqqM2.png",s="/Tenet.jl/previews/PR262/assets/bvndqnh.CiEHhneS.png",l="/Tenet.jl/previews/PR262/assets/axctrwo.FFeR2tQ7.png",g=JSON.parse('{"title":"Transformations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/transformations.md","filePath":"manual/transformations.md","lastUpdated":null}'),c={name:"manual/transformations.md"};function d(p,a,m,h,u,f){return n(),i("div",null,a[0]||(a[0]=[e('

Transformations

In tensor network computations, it is good practice to apply various transformations to simplify the network structure, reduce computational cost, or prepare the network for further operations. These transformations modify the network's structure locally by permuting, contracting, factoring or truncating tensors.

A crucial reason why these methods are indispensable lies in their ability to drastically reduce the problem size of the contraction path search and also the contraction. This doesn't necessarily involve reducing the maximum rank of the Tensor Network itself, but more importantly, it reduces the size (or rank) of the involved tensors.

Our approach is based in (Gray and Kourtis, 2021), which can also be found in quimb.

In Tenet, we provide a set of predefined transformations which you can apply to your TensorNetwork using both the transform/transform! functions.

Available transformations

Hyperindex converter

Contraction simplification

Diagonal reduction

Anti-diagonal reduction

Dimension truncation

Split simplification

',16)]))}const v=t(c,[["render",d]]);export{g as __pageData,v as default}; diff --git a/previews/PR262/assets/manual_transformations.md.Dm6LcGKB.lean.js b/previews/PR262/assets/manual_transformations.md.BCGTlIGr.lean.js similarity index 98% rename from previews/PR262/assets/manual_transformations.md.Dm6LcGKB.lean.js rename to previews/PR262/assets/manual_transformations.md.BCGTlIGr.lean.js index fa557a20..20a890d2 100644 --- a/previews/PR262/assets/manual_transformations.md.Dm6LcGKB.lean.js +++ b/previews/PR262/assets/manual_transformations.md.BCGTlIGr.lean.js @@ -1 +1 @@ -import{_ as t,c as i,a5 as e,o as n}from"./chunks/framework.BqptwCCd.js";const o="/Tenet.jl/previews/PR262/assets/bdrzgoc.D7V6hupC.png",r="/Tenet.jl/previews/PR262/assets/jlsiued.CIf4-4Mm.png",s="/Tenet.jl/previews/PR262/assets/bvndqnh.CiEHhneS.png",l="/Tenet.jl/previews/PR262/assets/axctrwo.FFeR2tQ7.png",g=JSON.parse('{"title":"Transformations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/transformations.md","filePath":"manual/transformations.md","lastUpdated":null}'),c={name:"manual/transformations.md"};function d(p,a,m,h,u,f){return n(),i("div",null,a[0]||(a[0]=[e('

Transformations

In tensor network computations, it is good practice to apply various transformations to simplify the network structure, reduce computational cost, or prepare the network for further operations. These transformations modify the network's structure locally by permuting, contracting, factoring or truncating tensors.

A crucial reason why these methods are indispensable lies in their ability to drastically reduce the problem size of the contraction path search and also the contraction. This doesn't necessarily involve reducing the maximum rank of the Tensor Network itself, but more importantly, it reduces the size (or rank) of the involved tensors.

Our approach is based in (Gray and Kourtis, 2021), which can also be found in quimb.

In Tenet, we provide a set of predefined transformations which you can apply to your TensorNetwork using both the transform/transform! functions.

Available transformations

Hyperindex converter

Contraction simplification

Diagonal reduction

Anti-diagonal reduction

Dimension truncation

Split simplification

',16)]))}const v=t(c,[["render",d]]);export{g as __pageData,v as default}; +import{_ as t,c as i,a5 as e,o as n}from"./chunks/framework.BqptwCCd.js";const o="/Tenet.jl/previews/PR262/assets/bdrzgoc.D7V6hupC.png",r="/Tenet.jl/previews/PR262/assets/jlsiued.BiOIqqM2.png",s="/Tenet.jl/previews/PR262/assets/bvndqnh.CiEHhneS.png",l="/Tenet.jl/previews/PR262/assets/axctrwo.FFeR2tQ7.png",g=JSON.parse('{"title":"Transformations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/transformations.md","filePath":"manual/transformations.md","lastUpdated":null}'),c={name:"manual/transformations.md"};function d(p,a,m,h,u,f){return n(),i("div",null,a[0]||(a[0]=[e('

Transformations

In tensor network computations, it is good practice to apply various transformations to simplify the network structure, reduce computational cost, or prepare the network for further operations. These transformations modify the network's structure locally by permuting, contracting, factoring or truncating tensors.

A crucial reason why these methods are indispensable lies in their ability to drastically reduce the problem size of the contraction path search and also the contraction. This doesn't necessarily involve reducing the maximum rank of the Tensor Network itself, but more importantly, it reduces the size (or rank) of the involved tensors.

Our approach is based in (Gray and Kourtis, 2021), which can also be found in quimb.

In Tenet, we provide a set of predefined transformations which you can apply to your TensorNetwork using both the transform/transform! functions.

Available transformations

Hyperindex converter

Contraction simplification

Diagonal reduction

Anti-diagonal reduction

Dimension truncation

Split simplification

',16)]))}const v=t(c,[["render",d]]);export{g as __pageData,v as default}; diff --git a/previews/PR262/assets/visualization.md.DH36zEJW.js b/previews/PR262/assets/visualization.md.CfQC3c65.js similarity index 94% rename from previews/PR262/assets/visualization.md.DH36zEJW.js rename to previews/PR262/assets/visualization.md.CfQC3c65.js index 655a23a1..097b8edc 100644 --- a/previews/PR262/assets/visualization.md.DH36zEJW.js +++ b/previews/PR262/assets/visualization.md.CfQC3c65.js @@ -1,3 +1,3 @@ -import{_ as t,c as n,a5 as a,j as i,a as l,G as p,B as o,o as r}from"./chunks/framework.BqptwCCd.js";const h="/Tenet.jl/previews/PR262/assets/omlitti.BZEa2jL6.png",f=JSON.parse('{"title":"Visualization","description":"","frontmatter":{},"headers":[],"relativePath":"visualization.md","filePath":"visualization.md","lastUpdated":null}'),k={name:"visualization.md"},d={class:"jldocstring custom-block",open:""};function g(c,s,E,u,y,F){const e=o("Badge");return r(),n("div",null,[s[3]||(s[3]=a('

Visualization

Tenet provides a Package Extension for Makie support. You can just import a Makie backend and call GraphMakie.graphplot on a TensorNetwork.

',2)),i("details",d,[i("summary",null,[s[0]||(s[0]=i("a",{id:"GraphMakie.graphplot-Tuple{TensorNetwork}",href:"#GraphMakie.graphplot-Tuple{TensorNetwork}"},[i("span",{class:"jlbinding"},"GraphMakie.graphplot")],-1)),s[1]||(s[1]=l()),p(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=a(`
julia
graphplot(tn::TensorNetwork; kwargs...)
+import{_ as t,c as n,a5 as a,j as i,a as l,G as p,B as o,o as r}from"./chunks/framework.BqptwCCd.js";const h="/Tenet.jl/previews/PR262/assets/omlitti.BZEa2jL6.png",C=JSON.parse('{"title":"Visualization","description":"","frontmatter":{},"headers":[],"relativePath":"visualization.md","filePath":"visualization.md","lastUpdated":null}'),k={name:"visualization.md"},d={class:"jldocstring custom-block",open:""};function g(c,s,E,u,y,F){const e=o("Badge");return r(),n("div",null,[s[3]||(s[3]=a('

Visualization

Tenet provides a Package Extension for Makie support. You can just import a Makie backend and call GraphMakie.graphplot on a TensorNetwork.

',2)),i("details",d,[i("summary",null,[s[0]||(s[0]=i("a",{id:"GraphMakie.graphplot-Tuple{TensorNetwork}",href:"#GraphMakie.graphplot-Tuple{TensorNetwork}"},[i("span",{class:"jlbinding"},"GraphMakie.graphplot")],-1)),s[1]||(s[1]=l()),p(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=a(`
julia
graphplot(tn::TensorNetwork; kwargs...)
 graphplot!(f::Union{Figure,GridPosition}, tn::TensorNetwork; kwargs...)
-graphplot!(ax::Union{Axis,Axis3}, tn::TensorNetwork; kwargs...)

Plot a TensorNetwork as a graph.

Keyword Arguments

  • labels If true, show the labels of the tensor indices. Defaults to false.

  • The rest of kwargs are passed to GraphMakie.graphplot.

source

`,5))]),s[4]||(s[4]=a('
julia
graphplot(tn, layout=Stress(), labels=true)

',2))])}const b=t(k,[["render",g]]);export{f as __pageData,b as default}; +graphplot!(ax::Union{Axis,Axis3}, tn::TensorNetwork; kwargs...)

Plot a TensorNetwork as a graph.

Keyword Arguments

  • labels If true, show the labels of the tensor indices. Defaults to false.

  • The rest of kwargs are passed to GraphMakie.graphplot.

source

`,5))]),s[4]||(s[4]=a('
julia
graphplot(tn, layout=Stress(), labels=true)

',2))])}const f=t(k,[["render",g]]);export{C as __pageData,f as default}; diff --git a/previews/PR262/assets/visualization.md.DH36zEJW.lean.js b/previews/PR262/assets/visualization.md.CfQC3c65.lean.js similarity index 94% rename from previews/PR262/assets/visualization.md.DH36zEJW.lean.js rename to previews/PR262/assets/visualization.md.CfQC3c65.lean.js index 655a23a1..097b8edc 100644 --- a/previews/PR262/assets/visualization.md.DH36zEJW.lean.js +++ b/previews/PR262/assets/visualization.md.CfQC3c65.lean.js @@ -1,3 +1,3 @@ -import{_ as t,c as n,a5 as a,j as i,a as l,G as p,B as o,o as r}from"./chunks/framework.BqptwCCd.js";const h="/Tenet.jl/previews/PR262/assets/omlitti.BZEa2jL6.png",f=JSON.parse('{"title":"Visualization","description":"","frontmatter":{},"headers":[],"relativePath":"visualization.md","filePath":"visualization.md","lastUpdated":null}'),k={name:"visualization.md"},d={class:"jldocstring custom-block",open:""};function g(c,s,E,u,y,F){const e=o("Badge");return r(),n("div",null,[s[3]||(s[3]=a('

Visualization

Tenet provides a Package Extension for Makie support. You can just import a Makie backend and call GraphMakie.graphplot on a TensorNetwork.

',2)),i("details",d,[i("summary",null,[s[0]||(s[0]=i("a",{id:"GraphMakie.graphplot-Tuple{TensorNetwork}",href:"#GraphMakie.graphplot-Tuple{TensorNetwork}"},[i("span",{class:"jlbinding"},"GraphMakie.graphplot")],-1)),s[1]||(s[1]=l()),p(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=a(`
julia
graphplot(tn::TensorNetwork; kwargs...)
+import{_ as t,c as n,a5 as a,j as i,a as l,G as p,B as o,o as r}from"./chunks/framework.BqptwCCd.js";const h="/Tenet.jl/previews/PR262/assets/omlitti.BZEa2jL6.png",C=JSON.parse('{"title":"Visualization","description":"","frontmatter":{},"headers":[],"relativePath":"visualization.md","filePath":"visualization.md","lastUpdated":null}'),k={name:"visualization.md"},d={class:"jldocstring custom-block",open:""};function g(c,s,E,u,y,F){const e=o("Badge");return r(),n("div",null,[s[3]||(s[3]=a('

Visualization

Tenet provides a Package Extension for Makie support. You can just import a Makie backend and call GraphMakie.graphplot on a TensorNetwork.

',2)),i("details",d,[i("summary",null,[s[0]||(s[0]=i("a",{id:"GraphMakie.graphplot-Tuple{TensorNetwork}",href:"#GraphMakie.graphplot-Tuple{TensorNetwork}"},[i("span",{class:"jlbinding"},"GraphMakie.graphplot")],-1)),s[1]||(s[1]=l()),p(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=a(`
julia
graphplot(tn::TensorNetwork; kwargs...)
 graphplot!(f::Union{Figure,GridPosition}, tn::TensorNetwork; kwargs...)
-graphplot!(ax::Union{Axis,Axis3}, tn::TensorNetwork; kwargs...)

Plot a TensorNetwork as a graph.

Keyword Arguments

  • labels If true, show the labels of the tensor indices. Defaults to false.

  • The rest of kwargs are passed to GraphMakie.graphplot.

source

`,5))]),s[4]||(s[4]=a('
julia
graphplot(tn, layout=Stress(), labels=true)

',2))])}const b=t(k,[["render",g]]);export{f as __pageData,b as default}; +graphplot!(ax::Union{Axis,Axis3}, tn::TensorNetwork; kwargs...)

Plot a TensorNetwork as a graph.

Keyword Arguments

  • labels If true, show the labels of the tensor indices. Defaults to false.

  • The rest of kwargs are passed to GraphMakie.graphplot.

source

`,5))]),s[4]||(s[4]=a('
julia
graphplot(tn, layout=Stress(), labels=true)

',2))])}const f=t(k,[["render",g]]);export{C as __pageData,f as default}; diff --git a/previews/PR262/developer/cached-field.html b/previews/PR262/developer/cached-field.html index 564aee90..0e7be006 100644 --- a/previews/PR262/developer/cached-field.html +++ b/previews/PR262/developer/cached-field.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/previews/PR262/developer/hypergraph.html b/previews/PR262/developer/hypergraph.html index a05860cd..4fa5028b 100644 --- a/previews/PR262/developer/hypergraph.html +++ b/previews/PR262/developer/hypergraph.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/previews/PR262/developer/keyword-dispatch.html b/previews/PR262/developer/keyword-dispatch.html index dfeb776c..c2410f24 100644 --- a/previews/PR262/developer/keyword-dispatch.html +++ b/previews/PR262/developer/keyword-dispatch.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/previews/PR262/developer/type-hierarchy.html b/previews/PR262/developer/type-hierarchy.html index 63e2e753..ff91192d 100644 --- a/previews/PR262/developer/type-hierarchy.html +++ b/previews/PR262/developer/type-hierarchy.html @@ -9,9 +9,9 @@ - + - + @@ -44,7 +44,7 @@ style id4 stroke-dasharray: 5 5 style id5 stroke-dasharray: 5 5 """

Made with DocumenterVitepress.jl

- + \ No newline at end of file diff --git a/previews/PR262/developer/unsafe-region.html b/previews/PR262/developer/unsafe-region.html index d8a14558..bcde3889 100644 --- a/previews/PR262/developer/unsafe-region.html +++ b/previews/PR262/developer/unsafe-region.html @@ -9,9 +9,9 @@ - + - + @@ -24,7 +24,7 @@
Skip to content

Unsafe regions

There are cases in which you may want to temporarily avoid index size checks on push! to a TensorNetwork.

julia
@unsafe_region tn begin
     ...
 end

Made with DocumenterVitepress.jl

- + \ No newline at end of file diff --git a/previews/PR262/friends.html b/previews/PR262/friends.html index ae3987a5..1c23e87d 100644 --- a/previews/PR262/friends.html +++ b/previews/PR262/friends.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@
Skip to content

Friends

If Tenet's design doesn't fit your case, ¡no problem!. There are other nice libraries in the wild, of which we recommend to take a look at:

  • quimb Flexible Tensor Network written in Python. Main source of inspiration for Tenet.

  • tenpy Tensor Network library written in Python with a strong focus on physics.

  • ITensors.jl and ITensorNetworks.jl Mature Tensor Network framework written in Julia.

  • tensorkrowch A new Tensor Network library built on top of PyTorch.

  • SeeMPS

Made with DocumenterVitepress.jl

- + \ No newline at end of file diff --git a/previews/PR262/hashmap.json b/previews/PR262/hashmap.json index fab683d4..870b1238 100644 --- a/previews/PR262/hashmap.json +++ b/previews/PR262/hashmap.json @@ -1 +1 @@ -{"api_ansatz.md":"C5te6Lyn","api_quantum.md":"COFd6Zb6","api_tensor.md":"DmbTPrJK","api_tensornetwork.md":"DUbIDWMl","developer_cached-field.md":"fXTyGM-L","developer_hypergraph.md":"Dlq9pKXH","developer_keyword-dispatch.md":"r_mmjlwY","developer_type-hierarchy.md":"B088lhqF","developer_unsafe-region.md":"0tCNXvi-","friends.md":"hTRPCCUz","index.md":"CsHtssO2","manual_ansatz_index.md":"C9BcIHgv","manual_ansatz_mps.md":"Bg_pfwcy","manual_ansatz_product.md":"Dqi8b2ZU","manual_contraction.md":"IOCPRU5-","manual_quantum.md":"BKbIdPe2","manual_tensor-network.md":"alJ3o0BO","manual_tensors.md":"BT9L1Usp","manual_transformations.md":"Dm6LcGKB","visualization.md":"DH36zEJW"} +{"api_ansatz.md":"Bc21y-jm","api_quantum.md":"CP7925tk","api_tensor.md":"BhYHa3xI","api_tensornetwork.md":"gc29p5Pz","developer_cached-field.md":"fXTyGM-L","developer_hypergraph.md":"Dlq9pKXH","developer_keyword-dispatch.md":"r_mmjlwY","developer_type-hierarchy.md":"B088lhqF","developer_unsafe-region.md":"0tCNXvi-","friends.md":"hTRPCCUz","index.md":"CsHtssO2","manual_ansatz_index.md":"C9BcIHgv","manual_ansatz_mps.md":"B9GeHooP","manual_ansatz_product.md":"Dqi8b2ZU","manual_contraction.md":"pVZ11YfN","manual_quantum.md":"BKbIdPe2","manual_tensor-network.md":"alJ3o0BO","manual_tensors.md":"CVZunshj","manual_transformations.md":"BCGTlIGr","visualization.md":"CfQC3c65"} diff --git a/previews/PR262/index.html b/previews/PR262/index.html index b29ce515..538253de 100644 --- a/previews/PR262/index.html +++ b/previews/PR262/index.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@
Skip to content

Tenet.jl

Hackable Tensor Networks

Tenet.jl

BSC-Quantic's Registry

Tenet and some of its dependencies are located in our own Julia registry. In order to download Tenet, add our registry to your Julia installation by using the Pkg mode in a REPL session,

julia
using Pkg
 pkg"registry add https://github.com/bsc-quantic/Registry"

Features

  • Optimized Tensor Network contraction, powered by EinExprs

  • Tensor Network slicing/cuttings

  • Automatic Differentiation of TN contraction, powered by EinExprs and ChainRules

  • 3D visualization of large networks, powered by Makie

Made with DocumenterVitepress.jl

- + \ No newline at end of file diff --git a/previews/PR262/manual/ansatz/index.html b/previews/PR262/manual/ansatz/index.html index 187facf4..bc95e6d9 100644 --- a/previews/PR262/manual/ansatz/index.html +++ b/previews/PR262/manual/ansatz/index.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/previews/PR262/manual/ansatz/mps.html b/previews/PR262/manual/ansatz/mps.html index c069f54d..6b2699df 100644 --- a/previews/PR262/manual/ansatz/mps.html +++ b/previews/PR262/manual/ansatz/mps.html @@ -9,11 +9,11 @@ - + - + - + @@ -35,17 +35,19 @@ form(mps)

MixedCanonical Form

In the MixedCanonical form, tensors to the left of the orthogonality center are left-canonical, tensors to the right are right-canonical, and the tensors at the orthogonality center (which can be Site or Vector{<:Site}) contains the entanglement information between the left and right parts of the chain. The position of the orthogonality center is stored in the orthog_center field.

You can convert an MPS to the MixedCanonical form and specify the orthogonality center using mixed_canonize!. Additionally, one can check that the MPS is effectively in mixed canonical form using the functions isleftcanonical and isrightcanonical, which return true if the Tensor at that particular site is left or right canonical, respectively.

julia
mps = MPS([rand(2, 2), rand(2, 2, 2), rand(2, 2)])
 mixed_canonize!(mps, Site(2))
 
-isleftcanonical(mps, 1)
-isrightcanonical(mps, 3)
-
-form(mps)
Additional Resources

For more in-depth information on Matrix Product States and their canonical forms, you may refer to:

  • Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of physics, 326(1), 96-192.

Matrix Product Operators (MPO)

Matrix Product Operators (MPO) are the operator version of Matrix Product State (MPS). The major difference between them is that MPOs have 2 indices per site (1 input and 1 output) while MPSs only have 1 index per site (i.e. an output). Currently, only Open boundary conditions are supported in Tenet.

@example
fig = Figure()
-open_mpo = rand(MPO, n=10, maxdim=4)
+isisometry(mps, 1; dir=:right) # Check if the first tensor is left canonical
+isisometry(mps, 3; dir=:left) # Check if the third tensor is right canonical

form(mps)


+##### Additional Resources
+For more in-depth information on Matrix Product States and their canonical forms, you may refer to:
+- Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of physics, 326(1), 96-192.
 
-plot!(fig[1,1], open_mpo, layout=Spring(iterations=1000, C=0.5, seed=100))
-Label(fig[1,1, Bottom()], "Open")
 
-fig

Made with DocumenterVitepress.jl

- +## Matrix Product Operators (MPO) + +Matrix Product Operators ([`MPO`](@ref)) are the operator version of [Matrix Product State (MPS)](#matrix-product-states-mps). +The major difference between them is that MPOs have 2 indices per site (1 input and 1 output) while MPSs only have 1 index per site (i.e. an output). Currently, only `Open` boundary conditions are supported in `Tenet`.

@example viz fig = Figure() open_mpo = rand(MPO, n=10, maxdim=4)

plot!(fig[1,1], open_mpo, layout=Spring(iterations=1000, C=0.5, seed=100)) Label(fig[1,1, Bottom()], "Open")

fig


+To apply an `MPO` to an `MPS`, you can use the `evolve!` function:

@example mps = rand(MPS; n=10, maxdim=100) mpo = rand(MPO; n=10, maxdim=4)

size.(tensors(mps))

evolve!(mps, mpo)

size.(tensors(mps)) ```

Made with DocumenterVitepress.jl

+ \ No newline at end of file diff --git a/previews/PR262/manual/ansatz/product.html b/previews/PR262/manual/ansatz/product.html index 1828beb9..9c10fe73 100644 --- a/previews/PR262/manual/ansatz/product.html +++ b/previews/PR262/manual/ansatz/product.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/previews/PR262/manual/contraction.html b/previews/PR262/manual/contraction.html index da334541..069ac81c 100644 --- a/previews/PR262/manual/contraction.html +++ b/previews/PR262/manual/contraction.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,8 +21,8 @@ -
Skip to content

Contraction

Contraction path optimization and execution is delegated to the EinExprs library. A EinExpr is a lower-level form of a Tensor Network, in which the contraction path has been laid out as a tree. It is similar to a symbolic expression (i.e. Expr) but in which every node represents an Einstein summation expression (aka einsum).

EinExprs.einexpr Method
julia
einexpr(tn::AbstractTensorNetwork; optimizer = EinExprs.Greedy, output = inds(tn, :open), kwargs...)

Search a contraction path for the given AbstractTensorNetwork and return it as a EinExpr.

Keyword Arguments

  • optimizer Contraction path optimizer. Check EinExprs documentation for more info.

  • outputs Indices that won't be contracted. Defaults to open indices.

  • kwargs Options to be passed to the optimizer.

See also: contract.

source

Missing docstring.

Missing docstring for contract(::Tenet.TensorNetwork). Check Documenter's build log for details.

Tenet.contract! Function
julia
contract!(tn::TensorNetwork, index)

In-place contraction of tensors connected to index.

See also: contract.

source

Made with DocumenterVitepress.jl

- +
Skip to content

Contraction

Contraction path optimization and execution is delegated to the EinExprs library. A EinExpr is a lower-level form of a Tensor Network, in which the contraction path has been laid out as a tree. It is similar to a symbolic expression (i.e. Expr) but in which every node represents an Einstein summation expression (aka einsum).

EinExprs.einexpr Method
julia
einexpr(tn::AbstractTensorNetwork; optimizer = EinExprs.Greedy, output = inds(tn, :open), kwargs...)

Search a contraction path for the given AbstractTensorNetwork and return it as a EinExpr.

Keyword Arguments

  • optimizer Contraction path optimizer. Check EinExprs documentation for more info.

  • outputs Indices that won't be contracted. Defaults to open indices.

  • kwargs Options to be passed to the optimizer.

See also: contract.

source

Missing docstring.

Missing docstring for contract(::Tenet.TensorNetwork). Check Documenter's build log for details.

Tenet.contract! Function
julia
contract!(tn::TensorNetwork, index)

In-place contraction of tensors connected to index.

See also: contract.

source

Made with DocumenterVitepress.jl

+ \ No newline at end of file diff --git a/previews/PR262/manual/quantum.html b/previews/PR262/manual/quantum.html index 6846cf9e..9939e1fc 100644 --- a/previews/PR262/manual/quantum.html +++ b/previews/PR262/manual/quantum.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@ - + \ No newline at end of file diff --git a/previews/PR262/manual/tensor-network.html b/previews/PR262/manual/tensor-network.html index cda19237..d03c5158 100644 --- a/previews/PR262/manual/tensor-network.html +++ b/previews/PR262/manual/tensor-network.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@
Skip to content

Tensor Networks

Tensor Networks (TN) are a graphical notation for representing complex multi-linear functions. For example, the following equation

ijklmnopAimBijpCnjkDpklEmnoFol

can be represented visually as

The graph's nodes represent tensors and edges represent tensor indices.

In Tenet, these objects are represented by the TensorNetwork type.

Information about a TensorNetwork can be queried with the following functions.

Query information

Modification

Add/Remove tensors

Replace existing elements

Slicing

Made with DocumenterVitepress.jl

- + \ No newline at end of file diff --git a/previews/PR262/manual/tensors.html b/previews/PR262/manual/tensors.html index 99ad8900..d3ca7148 100644 --- a/previews/PR262/manual/tensors.html +++ b/previews/PR262/manual/tensors.html @@ -9,11 +9,11 @@ - + - + - + @@ -24,14 +24,14 @@
Skip to content

Tensors

If you have reached here, you probably know wha a tensor is. Nevertheless, we are gonna give a brief remainder.

There are many jokes[1] about how to define a tensor. The definition we are giving here might not be the most correct one, but it is good enough for our use case (don't kill me please, mathematicians). A tensor T of order[2] n is a multilinear[3] application between n vector spaces over a field F.

T:Fdim(1)××Fdim(n)F

In layman's terms, it is a linear function whose inputs are vectors and the output is a scalar number.

T(v(1),,v(n))=cFi,v(i)Fdim(i)

Tensor algebra is a higher-order generalization of linear algebra, where scalar numbers can be viewed as order-0 tensors, vectors as order-1 tensors, matrices as order-2 tensors, ...

Letters are used to identify each of the vector spaces the tensor relates to. In computer science, you would intuitively think of tensors as "n-dimensional arrays with named dimensions".

TijkT[i,j,k]

The Tensor type

In Tenet, a tensor is represented by the Tensor type, which wraps an array and a list of symbols. As it subtypes AbstractArray, many array operations can be dispatched to it.

You can create a Tensor by passing an array and a list of Symbols that name indices.

julia
julia> Tᵢⱼₖ = Tensor(rand(3,5,2), (:i,:j,:k))
 3×5×2 Tensor{Float64, 3, Array{Float64, 3}}:
 [:, :, 1] =
- 0.445072  0.532194  0.138145  0.218395  0.559118
- 0.499171  0.705777  0.688589  0.189977  0.643453
- 0.915701  0.963517  0.569817  0.722715  0.72426
+ 0.917511  0.531008  0.701557  0.0356729  0.752601
+ 0.806058  0.775472  0.859521  0.956189   0.625493
+ 0.772719  0.494982  0.202628  0.96778    0.678244
 
 [:, :, 2] =
- 0.0711621  0.147625  0.50807    0.31609   0.0302424
- 0.762536   0.270657  0.0935597  0.797624  0.690868
- 0.0512209  0.944622  0.0802031  0.775862  0.345115

The dimensionality or size of each index can be consulted using the size function.

julia
julia> size(Tᵢⱼₖ)
+ 0.535015  0.956991   0.182884  0.736615   0.112213
+ 0.703756  0.611271   0.246324  0.0802697  0.796033
+ 0.530744  0.0631172  0.666828  0.236731   0.262625

The dimensionality or size of each index can be consulted using the size function.

julia
julia> size(Tᵢⱼₖ)
 (3, 5, 2)
 
 julia> size(Tᵢⱼₖ, :j)
@@ -39,7 +39,7 @@
 
 julia> length(Tᵢⱼₖ)
 30

  1. For example, recursive definitions like a tensor is whatever that transforms as a tensor. ↩︎

  2. The order of a tensor may also be known as rank or dimensionality in other fields. However, these can be missleading, since it has nothing to do with the rank of linear algebra nor with the dimensionality of a vector space. We prefer to use word order. ↩︎

  3. Meaning that the relationships between the output and the inputs, and the inputs between them, are linear. ↩︎

Made with DocumenterVitepress.jl

- + \ No newline at end of file diff --git a/previews/PR262/manual/transformations.html b/previews/PR262/manual/transformations.html index 6d228351..969dad60 100644 --- a/previews/PR262/manual/transformations.html +++ b/previews/PR262/manual/transformations.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,8 +21,8 @@ -
Skip to content

Transformations

In tensor network computations, it is good practice to apply various transformations to simplify the network structure, reduce computational cost, or prepare the network for further operations. These transformations modify the network's structure locally by permuting, contracting, factoring or truncating tensors.

A crucial reason why these methods are indispensable lies in their ability to drastically reduce the problem size of the contraction path search and also the contraction. This doesn't necessarily involve reducing the maximum rank of the Tensor Network itself, but more importantly, it reduces the size (or rank) of the involved tensors.

Our approach is based in (Gray and Kourtis, 2021), which can also be found in quimb.

In Tenet, we provide a set of predefined transformations which you can apply to your TensorNetwork using both the transform/transform! functions.

Available transformations

Hyperindex converter

Contraction simplification

Diagonal reduction

Anti-diagonal reduction

Dimension truncation

Split simplification

Made with DocumenterVitepress.jl

- +
Skip to content

Transformations

In tensor network computations, it is good practice to apply various transformations to simplify the network structure, reduce computational cost, or prepare the network for further operations. These transformations modify the network's structure locally by permuting, contracting, factoring or truncating tensors.

A crucial reason why these methods are indispensable lies in their ability to drastically reduce the problem size of the contraction path search and also the contraction. This doesn't necessarily involve reducing the maximum rank of the Tensor Network itself, but more importantly, it reduces the size (or rank) of the involved tensors.

Our approach is based in (Gray and Kourtis, 2021), which can also be found in quimb.

In Tenet, we provide a set of predefined transformations which you can apply to your TensorNetwork using both the transform/transform! functions.

Available transformations

Hyperindex converter

Contraction simplification

Diagonal reduction

Anti-diagonal reduction

Dimension truncation

Split simplification

Made with DocumenterVitepress.jl

+ \ No newline at end of file diff --git a/previews/PR262/visualization.html b/previews/PR262/visualization.html index a79387f1..ec6af794 100644 --- a/previews/PR262/visualization.html +++ b/previews/PR262/visualization.html @@ -9,11 +9,11 @@ - + - + - + @@ -23,8 +23,8 @@
Skip to content

Visualization

Tenet provides a Package Extension for Makie support. You can just import a Makie backend and call GraphMakie.graphplot on a TensorNetwork.

GraphMakie.graphplot Method
julia
graphplot(tn::TensorNetwork; kwargs...)
 graphplot!(f::Union{Figure,GridPosition}, tn::TensorNetwork; kwargs...)
-graphplot!(ax::Union{Axis,Axis3}, tn::TensorNetwork; kwargs...)

Plot a TensorNetwork as a graph.

Keyword Arguments

  • labels If true, show the labels of the tensor indices. Defaults to false.

  • The rest of kwargs are passed to GraphMakie.graphplot.

source

julia
graphplot(tn, layout=Stress(), labels=true)

Made with DocumenterVitepress.jl

- +graphplot!(ax::Union{Axis,Axis3}, tn::TensorNetwork; kwargs...)

Plot a TensorNetwork as a graph.

Keyword Arguments

  • labels If true, show the labels of the tensor indices. Defaults to false.

  • The rest of kwargs are passed to GraphMakie.graphplot.

source

julia
graphplot(tn, layout=Stress(), labels=true)

Made with DocumenterVitepress.jl

+ \ No newline at end of file