From 003b2421e730714346d431d341c633f7464bb4f9 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 12 Jan 2024 16:25:17 -0600 Subject: [PATCH 1/7] Add y infs option --- src/ipopt_options.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ipopt_options.jl b/src/ipopt_options.jl index 48db21e7..be41e736 100644 --- a/src/ipopt_options.jl +++ b/src/ipopt_options.jl @@ -42,6 +42,8 @@ using Base: @kwdef skip_finalize_solution_call = "no" hsllib = nothing hessian_approximation = "exact" + recalc_y = "no" + recalc_y_feas_tol = 1.0e-6 linear_solver = "mumps" watchdog_shortened_iter_trigger = 10 watchdog_trial_iter_max = 3 From 30fd6e9ce589598acab269f864f9479f4a6864b1 Mon Sep 17 00:00:00 2001 From: andy Date: Sat, 13 Jan 2024 17:20:12 -0600 Subject: [PATCH 2/7] Add kron utils, Lie algebra basis + tests --- src/quantum_systems.jl | 97 +++++++++++++++++++++++++++--------- src/quantum_utils.jl | 38 ++++++++++++++ test/quantum_systems_test.jl | 47 +++++++++++++++++ 3 files changed, 158 insertions(+), 24 deletions(-) diff --git a/src/quantum_systems.jl b/src/quantum_systems.jl index 9cdfa750..b2f44e45 100644 --- a/src/quantum_systems.jl +++ b/src/quantum_systems.jl @@ -3,6 +3,7 @@ module QuantumSystems export AbstractSystem export QuantumSystem export MultiModeSystem +export operator_algebra export iso @@ -335,39 +336,87 @@ end commutator(A::AbstractMatrix, B::AbstractMatrix) = A * B - B * A -""" - lie_subalgebra_dim(Hs::Vector{<:AbstractMatrix}) +function is_linearly_dependent( + basis::Vector{<:AbstractMatrix}, + op::AbstractMatrix; + eps=eps(Float32) +) + # Note: basis is assumed to be linearly independent + M = hcat(vec.(basis)..., vec(op)) + return is_linearly_dependent(M, eps=eps) +end -Returns the dimension of the Lie subalgebra generated by the operators in `Hs`. -""" -function lie_subalgebra_dim(Hs::Vector{<:AbstractMatrix}) - iHs = im .* Hs - n = size(Hs[1], 1) - elements = iHs - for (i, iH) ∈ enumerate(iHs) - println("i = $i") - for A ∈ elements - A_com_iH = commutator(A, iH) - # check if A_com_H is already in elements - if !any([isapprox(A_com_iH, B) for B ∈ elements]) - push!(elements, A_com_iH) +function is_linearly_dependent(M::AbstractMatrix; eps=eps(Float32)) + if size(M, 2) > size(M, 1) + println("Linearly dependent because columns > rows.") + return true + end + # QR decomposition has a zero R on diagonal if linearly dependent + val = minimum(abs.(diag(qr(M).R))) + return isapprox(val, 0.0, atol=eps) +end + +function operator_algebra( + generators::Vector{<:AbstractMatrix}; return_layers=false +) + """ + operator_algebra(generators; return_layers=false) + + Compute the Lie algebra basis for the given generators. + If return_layers is true, the Lie tree layers are also returned. + """ + basis = copy(generators) + current_layer = copy(generators) + if return_layers + all_layers = Vector{Matrix{ComplexF64}}[copy(generators)] + end + + if is_linearly_dependent(stack(vec.(basis))) + println("Linearly dependent generators.") + else + # Note: Use left normalized commutators + # Note: Jacobi identity is not checked + ℓ = 1 + while length(basis) < size(first(generators), 1)^2 - 1 + println("ℓ = $ℓ") + layer = Matrix{ComplexF64}[] + # Repeat commutators until no new operators are found. + for op ∈ current_layer + for gen ∈ generators + test = commutator(gen, op) + if all(test .≈ 0) || is_linearly_dependent(basis, test) + continue + else + push!(layer, test) + push!(basis, test) + end + end + end + + if isempty(layer) + println("Subspace termination.") + break + else + current_layer = layer + ℓ += 1 end - if length(elements) == n^2 - return n^2 + + if return_layers + append!(all_layers, [current_layer]) end end end - return length(elements) + + if return_layers + return basis, all_layers + else + return basis + end end -# sys = MultiModeSystem(3, 14) -# Hs = [H(G) for G ∈ [sys.G_drift, sys.G_drives...]] -# Gs = [G(H) for H ∈ Hs] -# Gs[2] == sys.G_drives[1] -# lie_subalgebra_dim(Hs[[1,2,4]]) -# size(Hs[1], 1)^2 + end diff --git a/src/quantum_utils.jl b/src/quantum_utils.jl index 4d5e9501..73b7c373 100644 --- a/src/quantum_utils.jl +++ b/src/quantum_utils.jl @@ -3,6 +3,8 @@ module QuantumUtils export GATES export gate export ⊗ +export operators_from_dict +export kron_from_dict export apply export qubit_system_state export lift @@ -87,6 +89,42 @@ function apply(gate::Symbol, ψ::Vector{<:Number}) return ComplexF64.(normalize(Û * ψ)) end +""" +operators_from_dict(keys::AbstractVector{<:Any}, operator_dictionary; I_key=:I) + + Replace the vector of keys using the operators from a dictionary. +""" +function operators_from_dict(keys::AbstractVector{<:Any}, operator_dictionary; I_key=:I) + first_operator = first(values(operator_dictionary)) + I_default = Matrix{eltype(first_operator)}(I, size(first_operator)) + # Identity key is replaced by operator_dictionary, else default I. + return replace(replace(keys, operator_dictionary...), I_key => I_default) +end + +""" +operators_from_dict(key_string::String, operator_dictionary; I_key="I") + + Replace the string (each character is one key) with operators from a dictionary. +""" +operators_from_dict(key_string::String, operator_dictionary; I_key="I") = + operators_from_dict([string(c) for c ∈ key_string], operator_dictionary, I_key=I_key) + +""" +kron_from_dict(keys, dict; kwargs...) + + Reduce the keys to a single operator by using the provided dictionary and the kronecker product. +""" +function kron_from_dict(keys, dict; kwargs...) + if occursin("+", keys) + return sum( + [kron_from_dict(string(s), dict; kwargs...) + for s ∈ split(keys, "+")] + ) + else + return reduce(kron, operators_from_dict(keys, dict; kwargs...)) + end +end + function qubit_system_state(ket::String) cs = [c for c ∈ ket] @assert all(c ∈ "01" for c ∈ cs) diff --git a/test/quantum_systems_test.jl b/test/quantum_systems_test.jl index 21b9c9bd..af0f032a 100644 --- a/test/quantum_systems_test.jl +++ b/test/quantum_systems_test.jl @@ -7,3 +7,50 @@ Tests: QuantumSystems submodule @test MultiModeSystem(3, 14) isa AbstractSystem @test MultiModeSystem(4, 14) isa AbstractSystem end + +@testset "Lie algebra utilities" begin + H_ops = Dict( + "X" => GATES[:X], + "Y" => GATES[:Y], + "Z" => GATES[:Z] + ) + + # Check 1 qubit with complete basis + gen = map(A -> kron_from_dict(A, H_ops), ["X", "Y"]) + basis = operator_algebra(gen, return_layers=false) + @test length(basis) == size(first(gen), 1)^2-1 + + # Check 1 qubit with complete basis and layers + gen = map(A -> kron_from_dict(A, H_ops), ["X", "Y"]) + basis, layers = operator_algebra(gen, return_layers=true) + @test length(basis) == size(first(gen), 1)^2-1 + + # Check 1 qubit with subspace + gen = map(A -> kron_from_dict(A, H_ops), ["X"]) + basis = operator_algebra(gen) + @test length(basis) == 1 + + # Check 2 qubit with complete basis + gen = map( + AB -> kron_from_dict(AB, H_ops), + ["XX+YY","XI", "YI", "IY", "IX"] + ) + basis = operator_algebra(gen) + @test length(basis) == size(first(gen), 1)^2-1 + + # Check 2 qubit with linearly dependent basis + gen = map( + AB -> kron_from_dict(AB, H_ops), + ["XX+YY", "XI", "XI", "IY", "IX"] + ) + basis = operator_algebra(gen) + @test length(basis) == length(gen) + + # Check 2 qubit with pair of 1-qubit subspaces + gen = map( + AB -> kron_from_dict(AB, H_ops), + ["XI", "YI", "IY", "IX"] + ) + basis = operator_algebra(gen) + @test length(basis) == 2 * (2^2 - 1) +end From 98970a6d821eded0926915837d0f69a7aa21301e Mon Sep 17 00:00:00 2001 From: andy Date: Sat, 13 Jan 2024 18:36:52 -0600 Subject: [PATCH 3/7] Remove manifolds for geodesics + tests --- Manifest.toml | 670 ++++++------------ Project.toml | 2 - examples/scripts/three_qubit_1_3_swap_gate.jl | 1 - .../three_qubit_1_3_swap_gate_continuation.jl | 1 - examples/scripts/three_qubit_geodesic.jl | 4 +- src/rollouts.jl | 55 +- test/problem_templates_test.jl | 2 +- test/rollouts_test.jl | 35 + 8 files changed, 290 insertions(+), 480 deletions(-) create mode 100644 test/rollouts_test.jl diff --git a/Manifest.toml b/Manifest.toml index cf181ba7..564c552b 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,13 +1,13 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.2" +julia_version = "1.10.0" manifest_format = "2.0" -project_hash = "f84b1c9599d7c6b89cab86888d79ff5b190033a0" +project_hash = "17180d49feeb84b0ad608fb2c780ea9c7898ab0e" [[deps.ADTypes]] -git-tree-sha1 = "332e5d7baeff8497b923b730b994fa480601efc7" +git-tree-sha1 = "41c37aa88889c171f1300ceac1313c06e891d245" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "0.2.5" +version = "0.2.6" [[deps.ASL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -15,12 +15,6 @@ git-tree-sha1 = "6252039f98492252f9e47c312c8ffda0e3b9e78d" uuid = "ae81ac8f-d209-56e5-92de-9978fef736f9" version = "0.1.3+0" -[[deps.AbstractAlgebra]] -deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "c3c29bf6363b3ac3e421dc8b2ba8e33bdacbd245" -uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.32.5" - [[deps.AbstractDifferentiation]] deps = ["ExprTools", "LinearAlgebra", "Requires"] git-tree-sha1 = "643373e6a3d4c180a3487abd91f689e3812b1274" @@ -65,30 +59,11 @@ git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.4.4" -[[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Test"] -git-tree-sha1 = "a7055b939deae2455aa8a67491e034f735dd08d3" -uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.33" - - [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - - [deps.Accessors.weakdeps] - AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Requires = "ae029012-a4dd-5104-9daa-d747884805df" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "02f731463748db57cc2ebfbd9fbc9ce8280d3433" +git-tree-sha1 = "cde29ddf7e5726c9fb511f340244ea3481267608" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.7.1" +version = "3.7.2" weakdeps = ["StaticArrays"] [deps.Adapt.extensions] @@ -104,17 +79,11 @@ version = "0.4.1" uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.1" -[[deps.ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "62e51b39331de8911e4a7ff6f5aaf38a5f4cc0ae" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.2.0" - [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "247efbccf92448be332d154d6ca56b9fcdd93c31" +git-tree-sha1 = "bbec08a37f8722786d87bedf84eae19c020c4efa" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.6.1" +version = "7.7.0" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -143,9 +112,9 @@ version = "1.0.2" [[deps.AxisAlgorithms]] deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.1" +version = "1.1.0" [[deps.AxisArrays]] deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] @@ -158,9 +127,9 @@ uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BenchmarkTools]] deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" +git-tree-sha1 = "f1f03a9fa24271160ed7e73051fba3c1a759b53f" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.3.2" +version = "1.4.0" [[deps.Bijections]] git-tree-sha1 = "c9b163bd832e023571e86d0b90d9de92a9879088" @@ -174,9 +143,9 @@ uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" version = "1.0.8+0" [[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" +git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" +version = "0.5.0" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" @@ -219,9 +188,9 @@ version = "0.5.1" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "e0af648f0692ec1691b5d094b8724ba1346281cf" +git-tree-sha1 = "c1deebd76f7a443d527fc0430d5758b8b2112ed8" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.18.0" +version = "1.19.1" weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] @@ -264,10 +233,14 @@ uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.11.4" [[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.10" +version = "0.10.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] @@ -292,10 +265,10 @@ uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" version = "0.3.0" [[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "75bd5b6fc5089df449b5d35fa501c846c9b6549b" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.10.0" +version = "4.12.0" weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] @@ -304,27 +277,13 @@ weakdeps = ["Dates", "LinearAlgebra"] [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" +version = "1.0.5+1" [[deps.CompositeTypes]] git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" version = "0.1.3" -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ConcreteStructs]] -git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" -uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" -version = "0.2.3" - [[deps.Conda]] deps = ["Downloads", "JSON", "VersionParsing"] git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" @@ -347,12 +306,6 @@ git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" version = "0.6.2" -[[deps.CovarianceEstimation]] -deps = ["LinearAlgebra", "Statistics", "StatsBase"] -git-tree-sha1 = "8ac79adea0c79cfcdca599f6f5c08d60a6d11c83" -uuid = "587fd27a-f159-11e8-2dae-1979310e6154" -version = "0.2.10" - [[deps.DataAPI]] git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" @@ -360,9 +313,9 @@ version = "1.15.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" +git-tree-sha1 = "ac67408d9ddf207de5cfa9a97e114352430f01ed" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.15" +version = "0.18.16" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -379,12 +332,6 @@ git-tree-sha1 = "26eb8e2331b55735c3d305d949aabd7363f07ba7" uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" version = "0.8.11" -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - [[deps.DiffResults]] deps = ["StaticArraysCore"] git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" @@ -403,9 +350,9 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "a6c00f894f24460379cb7136633cef54ac9f6f4a" +git-tree-sha1 = "7c302d7a5fec5214eb8a5a4c466dcf7a51fcf169" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.103" +version = "0.25.107" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -463,16 +410,11 @@ git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" version = "1.0.4" -[[deps.ErrorfreeArithmetic]] -git-tree-sha1 = "d6863c556f1142a061532e79f611aa46be201686" -uuid = "90fa49ef-747e-5e6f-a989-263ba693cf1a" -version = "0.5.2" - [[deps.ExactPredicates]] -deps = ["IntervalArithmetic", "Random", "StaticArraysCore"] -git-tree-sha1 = "499b1ca78f6180c8f8bdf1cabde2d39120229e5c" +deps = ["IntervalArithmetic", "Random", "StaticArrays"] +git-tree-sha1 = "e8b8c949551f417e040f16e5c431b6e83e306e54" uuid = "429591f6-91af-11e9-00e2-59fbe8cec110" -version = "2.2.6" +version = "2.2.7" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -504,9 +446,9 @@ version = "4.4.4+1" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7" +git-tree-sha1 = "ec22cbbcd01cba8f41eecd7d44aac1f23ee985e3" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.7.1" +version = "1.7.2" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -514,26 +456,20 @@ git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" version = "3.3.10+0" -[[deps.FastRounding]] -deps = ["ErrorfreeArithmetic", "LinearAlgebra"] -git-tree-sha1 = "6344aa18f654196be82e62816935225b3b9abe44" -uuid = "fa42c844-2597-5d31-933b-ebd51ab2693f" -version = "0.3.1" - [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" +git-tree-sha1 = "c5c28c245101bd59154f649e19b038d15901b5dc" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.1" +version = "1.16.2" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" [[deps.FillArrays]] deps = ["LinearAlgebra", "Random"] -git-tree-sha1 = "28e4e9c4b7b162398ec8004bdabe9a90c78c122d" +git-tree-sha1 = "5b93957f6dcd33fc343044af3d48c215be2562f1" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.8.0" +version = "1.9.3" weakdeps = ["PDMats", "SparseArrays", "Statistics"] [deps.FillArrays.extensions] @@ -543,9 +479,9 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] [[deps.FiniteDiff]] deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" +git-tree-sha1 = "73d1214fec245096717847c62d389a5d2ac86504" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.21.1" +version = "2.22.0" [deps.FiniteDiff.extensions] FiniteDiffBandedMatricesExt = "BandedMatrices" @@ -587,9 +523,9 @@ weakdeps = ["StaticArrays"] [[deps.FreeType]] deps = ["CEnum", "FreeType2_jll"] -git-tree-sha1 = "50351f83f95282cf903e968d7c6e8d44a5f83d0b" +git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999" uuid = "b38be410-82b0-50bf-ab77-7b57e271db43" -version = "4.1.0" +version = "4.1.1" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] @@ -599,9 +535,9 @@ version = "2.13.1+0" [[deps.FreeTypeAbstraction]] deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] -git-tree-sha1 = "38a92e40157100e796690421e34a11c107205c86" +git-tree-sha1 = "055626e1a35f6771fe99060e835b72ca61a52621" uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.10.0" +version = "0.10.1" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -632,9 +568,9 @@ version = "0.1.5" [[deps.GeoInterface]] deps = ["Extents"] -git-tree-sha1 = "d53480c0793b13341c40199190f92c611aa2e93c" +git-tree-sha1 = "d4f85701f569584f2cff7ba67a137d03f0cfb7d0" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.3.2" +version = "1.3.3" [[deps.GeometryBasics]] deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] @@ -666,12 +602,6 @@ git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" version = "1.3.14+0" -[[deps.Graphs]] -deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "899050ace26649433ef1af25bc17a815b3db52b7" -uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.9.0" - [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] git-tree-sha1 = "f57a64794b336d4990d90f80b147474b869b1bc4" @@ -683,18 +613,6 @@ git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" version = "1.0.2" -[[deps.Groebner]] -deps = ["AbstractAlgebra", "Combinatorics", "ExprTools", "Logging", "MultivariatePolynomials", "Primes", "Random", "SIMD", "SnoopPrecompile"] -git-tree-sha1 = "44f595de4f6485ab5ba71fe257b5eadaa3cf161e" -uuid = "0b43b601-686d-58a3-8a1c-6623616c7cd4" -version = "0.4.4" - -[[deps.GroupsCore]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9e1a5e9f3b81ad6a5c613d181664a0efc6fe6dd7" -uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" -version = "0.4.0" - [[deps.HDF5]] deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] git-tree-sha1 = "26407bd1c60129062cec9da63dc7d08251544d53" @@ -708,10 +626,10 @@ version = "0.17.1" MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" [[deps.HDF5_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] -git-tree-sha1 = "38c8874692d48d5440d5752d6c74b0c6b0b60739" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "LibCURL_jll", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "OpenSSL_jll", "TOML", "Zlib_jll", "libaec_jll"] +git-tree-sha1 = "8156325170d6763b5494c072ac4754214db3e669" uuid = "0234f1f7-429e-5d53-9886-15a909be8d59" -version = "1.14.2+1" +version = "1.14.3+0" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] @@ -721,15 +639,9 @@ version = "2.8.1+1" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8ecb0b34472a3c98f945e3c75fc7d5428d165511" +git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.9.3+0" - -[[deps.HybridArrays]] -deps = ["LinearAlgebra", "Requires", "StaticArrays"] -git-tree-sha1 = "6c3e57bc26728b99f470b267a437f0d380eac4fc" -uuid = "1baab800-613f-4b0a-84e4-9cd3431bfbb9" -version = "0.4.16" +version = "2.10.0+0" [[deps.HypergeometricFunctions]] deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] @@ -756,15 +668,15 @@ version = "0.6.11" [[deps.ImageBase]] deps = ["ImageCore", "Reexport"] -git-tree-sha1 = "b51bb8cae22c66d0f6357e3bcb6363145ef20835" +git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909" uuid = "c817782e-172a-44cc-b673-b171935fbb9e" -version = "0.1.5" +version = "0.1.7" [[deps.ImageCore]] -deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"] -git-tree-sha1 = "acf614720ef026d38400b3817614c45882d75500" +deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "fc5d1d3443a124fde6e92d0260cd9e064eba69f8" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.9.4" +version = "0.10.1" [[deps.ImageIO]] deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"] @@ -800,10 +712,10 @@ uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" version = "0.1.2" [[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ad37c091f7d7daf900963171600d7c1c5c3ede32" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "5fdf2fe6724d8caabf43b557b84ce53f3b7e2f6b" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2023.2.0+0" +version = "2024.0.2+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -811,15 +723,26 @@ uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[deps.Interpolations]] deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "721ec2cf720536ad005cb38f50dbba7b02419a15" +git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.14.7" +version = "0.15.1" + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + + [deps.Interpolations.weakdeps] + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" [[deps.IntervalArithmetic]] -deps = ["CRlibm", "EnumX", "FastRounding", "LinearAlgebra", "Markdown", "Random", "RecipesBase", "RoundingEmulator", "SetRounding", "StaticArrays"] -git-tree-sha1 = "f59e639916283c1d2e106d2b00910b50f4dab76c" +deps = ["CRlibm", "RoundingEmulator"] +git-tree-sha1 = "c274ec586ea58eb7b42afd0c5d67e50ff50229b5" uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.21.2" +version = "0.22.5" +weakdeps = ["DiffRules", "RecipesBase"] + + [deps.IntervalArithmetic.extensions] + IntervalArithmeticDiffRulesExt = "DiffRules" + IntervalArithmeticRecipesBaseExt = "RecipesBase" [[deps.IntervalSets]] deps = ["Dates", "Random"] @@ -831,23 +754,17 @@ weakdeps = ["Statistics"] [deps.IntervalSets.extensions] IntervalSetsStatisticsExt = "Statistics" -[[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "68772f49f54b479fa88ace904f6127f0a3bb2e46" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.12" - [[deps.Ipopt]] deps = ["Ipopt_jll", "LinearAlgebra", "MathOptInterface", "OpenBLAS32_jll", "PrecompileTools"] -git-tree-sha1 = "481caf9195288ec5a1968582a8bc14735575ef81" +git-tree-sha1 = "3b646a77ae8818d72aa23e3e6924f481505e64fa" uuid = "b6b21f68-93f8-5de0-b562-5493be1d77c9" -version = "1.5.1" +version = "1.6.0" [[deps.Ipopt_jll]] deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] -git-tree-sha1 = "f06a7fd68e29c8acc96483d6f163dab58626c4b5" +git-tree-sha1 = "080072ca6140bc26ca48307858c4a497654df83e" uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" -version = "300.1400.1302+0" +version = "300.1400.1303+0" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" @@ -861,9 +778,9 @@ uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4" version = "0.1.1" [[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" +version = "1.10.0" [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" @@ -872,9 +789,9 @@ version = "1.0.0" [[deps.JLD2]] deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "9bbb5130d3b4fa52846546bca4791ecbdfb52730" +git-tree-sha1 = "853b9e0b876e8c7093a824c4f83c619d23525e64" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.38" +version = "0.4.43" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] @@ -890,33 +807,27 @@ version = "0.21.4" [[deps.JpegTurbo]] deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] -git-tree-sha1 = "d65930fa2bc96b07d7691c652d701dcbe7d9cf0b" +git-tree-sha1 = "fa6d0bcff8583bac20f1ffa708c3913ca605c611" uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0" -version = "0.1.4" +version = "0.1.5" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" +git-tree-sha1 = "60b1194df0a3298f460063de985eae7b01bc011a" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" +version = "3.0.1+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "e49bce680c109bc86e3e75ebcb15040d6ad9e1d3" +git-tree-sha1 = "04663b9e1eb0d0eabf76a6d0752e0dac83d53b36" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.27" +version = "0.9.28" [[deps.KernelDensity]] deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "90442c50e202a5cdf21a7899c66b240fdef14035" +git-tree-sha1 = "fee018a29b60733876eb557804b5b109dd3dd8a7" uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.7" - -[[deps.Kronecker]] -deps = ["LinearAlgebra", "NamedDims", "SparseArrays", "StatsBase"] -git-tree-sha1 = "bd47e8074c6bd478abf7efa6d504f6c1c38a487c" -uuid = "2c470bb0-bcc8-11e8-3dad-c9649493f05e" -version = "0.5.4" +version = "0.6.8" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -925,10 +836,10 @@ uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" version = "3.100.1+0" [[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" +version = "15.0.7+0" [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -943,9 +854,9 @@ version = "1.3.1" [[deps.LabelledArrays]] deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] -git-tree-sha1 = "cd04158424635efd05ff38d5f55843397b7416a9" +git-tree-sha1 = "f12f2225c999886b69273f84713d1b9cb66faace" uuid = "2ee39098-c373-598a-b85f-a56591580800" -version = "1.14.0" +version = "1.15.0" [[deps.LambertW]] git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" @@ -966,12 +877,6 @@ version = "0.16.1" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" -[[deps.LatticeRules]] -deps = ["Random"] -git-tree-sha1 = "7f5b02258a3ca0221a6a9710b0a0a2e8fb4957fe" -uuid = "73f95e8e-ec14-4e6a-8b18-0d2e271c4e55" -version = "0.0.1" - [[deps.Lazy]] deps = ["MacroTools"] git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" @@ -990,21 +895,26 @@ version = "0.3.1" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -1063,21 +973,9 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LinearAlgebraX]] deps = ["LinearAlgebra", "Mods", "Permutations", "Primes", "SimplePolynomials"] -git-tree-sha1 = "4ef47ebed04355b50836d4844eabb9d357c1cc8f" +git-tree-sha1 = "1cb349a6a7656c2cbe2d288baabe863a208e46e3" uuid = "9b3f67b0-2d00-526e-9884-9e4938f8fb88" -version = "0.1.13" - -[[deps.LinearMaps]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9df2ab050ffefe870a09c7b6afdb0cde381703f2" -uuid = "7a12625a-238d-50fd-b39a-03d52299707e" -version = "3.11.1" -weakdeps = ["ChainRulesCore", "SparseArrays", "Statistics"] - - [deps.LinearMaps.extensions] - LinearMapsChainRulesCoreExt = "ChainRulesCore" - LinearMapsSparseArraysExt = "SparseArrays" - LinearMapsStatisticsExt = "Statistics" +version = "0.2.6" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] @@ -1100,9 +998,9 @@ uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[deps.LoweredCodeUtils]] deps = ["JuliaInterpreter"] -git-tree-sha1 = "c165f205e030208760ebd75b5e1f7706761d9218" +git-tree-sha1 = "38756922d32476c8f41f73560b910fc805a5a103" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "2.3.1" +version = "2.4.3" [[deps.METIS_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1111,16 +1009,16 @@ uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" version = "5.1.2+0" [[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "eb006abbd7041c28e0d16260e50a24f8f9104913" +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2023.2.0+0" +version = "2024.0.0+0" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "8a5b4d2220377d1ece13f49438d71ad20cf1ba83" +git-tree-sha1 = "2ee75365ca243c1a39d467e35ffd3d4d32eef11e" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.1.2+0" +version = "4.1.2+1" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] @@ -1130,21 +1028,21 @@ version = "0.1.10" [[deps.MPItrampoline_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "6979eccb6a9edbbb62681e158443e79ecc0d056a" +git-tree-sha1 = "8eeb3c73bbc0ca203d0dc8dad4008350bbe5797b" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.3.1+0" +version = "5.3.1+1" [[deps.MUMPS_seq_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "24dd34802044008ef9a596de32d63f3c9ddb7802" +git-tree-sha1 = "78fedbcf96bd35682fed2a9dda35ea871cfb734c" uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" -version = "500.600.100+0" +version = "500.600.200+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] -git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" +git-tree-sha1 = "b211c553c199c111d998ecdaf7623d1b89b69f93" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.11" +version = "0.5.12" [[deps.Makie]] deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FixedPointNumbers", "Formatting", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Setfield", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "StableHashTraits", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun"] @@ -1158,55 +1056,6 @@ git-tree-sha1 = "9b11acd07f21c4d035bd4156e789532e8ee2cc70" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" version = "0.6.9" -[[deps.ManifoldDiff]] -deps = ["LinearAlgebra", "ManifoldsBase", "Markdown", "Random", "Requires"] -git-tree-sha1 = "00253856ea75c472c8f9582b6ab75789e0ac3b21" -uuid = "af67fdf4-a580-4b9f-bbec-742ef357defd" -version = "0.3.6" - - [deps.ManifoldDiff.extensions] - ManifoldDiffFiniteDiffExt = "FiniteDiff" - ManifoldDiffFiniteDifferencesExt = "FiniteDifferences" - ManifoldDiffForwardDiffExt = "ForwardDiff" - ManifoldDiffReverseDiffExt = "ReverseDiff" - ManifoldDiffZygoteExt = "Zygote" - - [deps.ManifoldDiff.weakdeps] - FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" - FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.Manifolds]] -deps = ["Distributions", "Einsum", "Graphs", "HybridArrays", "Kronecker", "LinearAlgebra", "ManifoldDiff", "ManifoldsBase", "Markdown", "MatrixEquations", "Quaternions", "Random", "RecursiveArrayTools", "Requires", "SimpleWeightedGraphs", "SpecialFunctions", "StaticArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "bebeb9a7d5970697b16d8cb569012c05d0d1e62a" -uuid = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" -version = "0.8.81" - - [deps.Manifolds.extensions] - ManifoldsBoundaryValueDiffEqExt = "BoundaryValueDiffEq" - ManifoldsNLsolveExt = "NLsolve" - ManifoldsOrdinaryDiffEqDiffEqCallbacksExt = ["DiffEqCallbacks", "OrdinaryDiffEq"] - ManifoldsOrdinaryDiffEqExt = "OrdinaryDiffEq" - ManifoldsRecipesBaseExt = ["Colors", "RecipesBase"] - ManifoldsTestExt = "Test" - - [deps.Manifolds.weakdeps] - BoundaryValueDiffEq = "764a87c0-6b3e-53db-9096-fe964310641d" - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def" - NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" - OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.ManifoldsBase]] -deps = ["LinearAlgebra", "Markdown", "Random"] -git-tree-sha1 = "407f8953f36707cb8eccc1b605fbd0756327c25f" -uuid = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb" -version = "0.14.12" - [[deps.MappedArrays]] git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" @@ -1218,9 +1067,9 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MathOptInterface]] deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] -git-tree-sha1 = "70ea2892b8bfffecc0387ba1a6a21192814f120c" +git-tree-sha1 = "e2ae8cf5ac6daf5a3959f7f6ded9c2028b61d09d" uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "1.22.0" +version = "1.25.1" [[deps.MathTeXEngine]] deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] @@ -1228,12 +1077,6 @@ git-tree-sha1 = "96ca8a313eb6437db5ffe946c457a401bbb8ce1d" uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" version = "0.5.7" -[[deps.MatrixEquations]] -deps = ["LinearAlgebra", "LinearMaps"] -git-tree-sha1 = "825264b8ce24f1ea5ea5f7572be8c4cf34973337" -uuid = "99c1a7ee-ab34-5fd5-8076-27c950a045f4" -version = "2.3.2" - [[deps.MbedTLS]] deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" @@ -1243,7 +1086,7 @@ version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" +version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1261,9 +1104,9 @@ version = "1.1.0" uuid = "a63ad114-7e13-5084-954f-fe012c677804" [[deps.Mods]] -git-tree-sha1 = "61be59e4daffff43a8cec04b5e0dc773cbb5db3a" +git-tree-sha1 = "434092e0ad802727bc144c90f13764c7b31ad2f5" uuid = "7475f97c-0381-53b1-977b-4c60186c8d62" -version = "1.3.3" +version = "2.2.3" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -1273,7 +1116,7 @@ version = "0.3.4" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" [[deps.Multisets]] git-tree-sha1 = "8d852646862c96e226367ad10c8af56099b4047e" @@ -1282,15 +1125,15 @@ version = "0.4.4" [[deps.MultivariatePolynomials]] deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "6ffb234d6d7c866a75c1879d2099049d3a35a83a" +git-tree-sha1 = "769c9175942d91ed9b83fa929eee4fe6a1d128ad" uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.5.3" +version = "0.5.4" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "6985021d02ab8c509c841bb8b2becd3145a7b490" +git-tree-sha1 = "806eea990fb41f9b36f1253e5697aa645bf6a9f8" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.3.3" +version = "1.4.0" [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] @@ -1304,12 +1147,6 @@ git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" version = "1.0.2" -[[deps.NamedDims]] -deps = ["AbstractFFTs", "ChainRulesCore", "CovarianceEstimation", "LinearAlgebra", "Pkg", "Requires", "Statistics"] -git-tree-sha1 = "cb8ebcee2b4e07b72befb9def593baef8aa12f07" -uuid = "356022a1-0364-5f58-8944-0da4b18d706f" -version = "0.2.50" - [[deps.NamedTrajectories]] deps = ["CairoMakie", "JLD2", "LaTeXStrings", "Latexify", "OrderedCollections", "Reexport", "Revise", "Unidecode"] git-tree-sha1 = "72404ced973daa4c3e6598317b88cea37a1a6847" @@ -1332,10 +1169,13 @@ uuid = "510215fc-4207-5dde-b226-833fc4488ee2" version = "0.5.5" [[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" +git-tree-sha1 = "6a731f2b5c03157418a20c12195eb4b74c8f8621" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" +version = "1.13.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" [[deps.Ogg_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1344,15 +1184,15 @@ uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" version = "1.3.5+1" [[deps.OpenBLAS32_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "2fb9ee2dc14d555a6df2a714b86b7125178344c2" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.21+0" +version = "0.3.24+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" +version = "0.3.23+2" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -1369,13 +1209,13 @@ version = "3.1.4+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" +version = "0.8.1+2" [[deps.OpenMPI_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "PMIx_jll", "TOML", "Zlib_jll", "libevent_jll", "prrte_jll"] -git-tree-sha1 = "694458ae803b684f09c07f90459cb79655fb377d" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] +git-tree-sha1 = "e25c1778a98e34219a00455d6e4384e017ea9762" uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "5.0.0+0" +version = "4.1.6+0" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1409,25 +1249,19 @@ version = "1.6.3" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" +version = "10.42.0+1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "4e5be6bb265d33669f98eb55d2a57addd1eeb72c" +git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.30" - -[[deps.PMIx_jll]] -deps = ["Artifacts", "Hwloc_jll", "JLLWrappers", "Libdl", "Zlib_jll", "libevent_jll"] -git-tree-sha1 = "8b3b19351fa24791f94d7ae85faf845ca1362541" -uuid = "32165bc3-0280-59bc-8c0b-c33b6203efab" -version = "4.2.7+0" +version = "0.11.31" [[deps.PNGFiles]] deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] -git-tree-sha1 = "5ded86ccaf0647349231ed6c0822c10886d4a1ee" +git-tree-sha1 = "67186a2bc9a90f9f85ff3cc8277868961fb57cbd" uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" -version = "0.4.1" +version = "0.4.3" [[deps.Packing]] deps = ["GeometryBasics"] @@ -1455,15 +1289,15 @@ version = "0.12.3" [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "a935806434c9d4c506ba941871b327b96d41f2bf" +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.0" +version = "2.8.1" [[deps.Permutations]] deps = ["Combinatorics", "LinearAlgebra", "Random"] -git-tree-sha1 = "4f69b02cf40a0f494d0438ab29de32e14ef96e7b" +git-tree-sha1 = "c7745750b8a829bc6039b7f1f0981bcda526a946" uuid = "2ae35dd2-176d-5d53-8349-f30d82d94d4f" -version = "0.4.18" +version = "0.4.19" [[deps.Pixman_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] @@ -1474,7 +1308,7 @@ version = "0.42.2+0" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] @@ -1484,9 +1318,9 @@ version = "0.3.3" [[deps.PlotUtils]] deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" +git-tree-sha1 = "862942baf5663da528f66d24996eb6da85218e76" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.5" +version = "1.4.0" [[deps.PolygonOps]] git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" @@ -1513,10 +1347,10 @@ uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" version = "0.2.4" [[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff", "Requires"] -git-tree-sha1 = "f739b1b3cc7b9949af3b35089931f2b58c289163" +deps = ["Adapt", "ArrayInterface", "ForwardDiff"] +git-tree-sha1 = "64bb68f76f789f5fe5930a80af310f19cdafeaed" uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.12" +version = "0.4.17" [deps.PreallocationTools.extensions] PreallocationToolsReverseDiffExt = "ReverseDiff" @@ -1564,40 +1398,18 @@ version = "1.0.0" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" +git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.1" - -[[deps.QuasiMonteCarlo]] -deps = ["Accessors", "ConcreteStructs", "LatticeRules", "LinearAlgebra", "Primes", "Random", "Requires", "Sobol", "StatsBase"] -git-tree-sha1 = "cc086f8485bce77b6187141e1413c3b55f9a4341" -uuid = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b" -version = "0.3.3" -weakdeps = ["Distributions"] - - [deps.QuasiMonteCarlo.extensions] - QuasiMonteCarloDistributionsExt = "Distributions" - -[[deps.Quaternions]] -deps = ["LinearAlgebra", "Random", "RealDot"] -git-tree-sha1 = "9a46862d248ea548e340e30e2894118749dc7f51" -uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" -version = "0.7.5" +version = "2.9.4" [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -[[deps.RandomExtensions]] -deps = ["Random", "SparseArrays"] -git-tree-sha1 = "b8a399e95663485820000f26b6a43c794e166a49" -uuid = "fb686558-2515-59ef-acaa-46db3789a887" -version = "0.4.4" - [[deps.RangeArrays]] git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" @@ -1613,12 +1425,6 @@ weakdeps = ["FixedPointNumbers"] [deps.Ratios.extensions] RatiosFixedPointNumbersExt = "FixedPointNumbers" -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - [[deps.RecipesBase]] deps = ["PrecompileTools"] git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" @@ -1626,18 +1432,20 @@ uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" version = "1.3.4" [[deps.RecursiveArrayTools]] -deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "SparseArrays", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "4943624c0e437ddf6362a82e5319bc8e83d80857" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.38.10" +version = "3.5.2" [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" RecursiveArrayToolsMeasurementsExt = "Measurements" RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" [deps.RecursiveArrayTools.weakdeps] + FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898" Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" @@ -1662,9 +1470,9 @@ version = "1.3.0" [[deps.Revise]] deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "Requires", "UUIDs", "Unicode"] -git-tree-sha1 = "6990168abf3fe9a6e34ebb0e05aaaddf6572189e" +git-tree-sha1 = "3fe4e5b9cdbb9bbc851c57b149e516acc07f8f72" uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.5.10" +version = "3.5.13" [[deps.RingLists]] deps = ["Random"] @@ -1699,23 +1507,17 @@ version = "0.5.12" uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" -[[deps.SIMD]] -deps = ["PrecompileTools"] -git-tree-sha1 = "d8911cc125da009051fb35322415641d02d9e37f" -uuid = "fdea26ae-647d-5447-a871-4b548cad5224" -version = "3.4.6" - [[deps.SPRAL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] -git-tree-sha1 = "d1ca34081034a9c6903cfbe068a952a739c2aa5c" +git-tree-sha1 = "75c79a668a0add199c8f3f06c7300318237dda73" uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" -version = "2023.8.2+0" +version = "2023.11.15+0" [[deps.SciMLBase]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "QuasiMonteCarlo", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "d432b4c4cc922fb7b21b555c138aa87f9fb7beb8" +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] +git-tree-sha1 = "b2714ddd879525c825f427e861f5059a96b287f7" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.9.1" +version = "2.18.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -1749,11 +1551,6 @@ version = "1.2.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -[[deps.SetRounding]] -git-tree-sha1 = "d7a25e439d07a17b7cdf97eecee504c50fedf5f6" -uuid = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" -version = "0.2.1" - [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" @@ -1796,9 +1593,9 @@ version = "0.3.1" [[deps.SimplePolynomials]] deps = ["Mods", "Multisets", "Polynomials", "Primes"] -git-tree-sha1 = "d537c31cf9995236166e3e9afc424a5a1c59ff9d" +git-tree-sha1 = "7063828369cafa93f3187b3d0159f05582011405" uuid = "cc47b68c-3164-5771-a705-2bc0097375a0" -version = "0.2.14" +version = "0.2.17" [[deps.SimpleRandom]] deps = ["Distributions", "LinearAlgebra", "Random"] @@ -1812,30 +1609,12 @@ git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" version = "0.9.4" -[[deps.SimpleWeightedGraphs]] -deps = ["Graphs", "LinearAlgebra", "Markdown", "SparseArrays"] -git-tree-sha1 = "4b33e0e081a825dbfaf314decf58fa47e53d6acb" -uuid = "47aef6b3-ad0c-573a-a1e2-d07658019622" -version = "1.4.0" - [[deps.Sixel]] deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"] git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6" uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47" version = "0.1.3" -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" - -[[deps.Sobol]] -deps = ["DelimitedFiles", "Random"] -git-tree-sha1 = "5a74ac22a9daef23705f010f72c81d6925b19df8" -uuid = "ed01d8cd-4d21-5b2a-85b4-cc3bdc58bad4" -version = "1.5.0" - [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -1847,13 +1626,14 @@ version = "1.1.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] -git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.0" +version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.10.0" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] @@ -1867,9 +1647,9 @@ weakdeps = ["ChainRulesCore"] [[deps.StableHashTraits]] deps = ["Compat", "SHA", "Tables", "TupleTools"] -git-tree-sha1 = "d29023a76780bb8a3f2273b29153fd00828cb73f" +git-tree-sha1 = "6fc838a7713795681907a7e749d72d12a81a43ea" uuid = "c5dd0088-6c3f-4803-b00e-f31a60c170fa" -version = "1.1.1" +version = "1.1.4" [[deps.StackViews]] deps = ["OffsetArrays"] @@ -1879,12 +1659,13 @@ version = "0.1.1" [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "5ef59aea6f18c25168842bded46b16662141ab87" +git-tree-sha1 = "f68dd04d131d9a8a8eb836173ee8f105c360b0c5" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.7.0" -weakdeps = ["Statistics"] +version = "1.9.1" +weakdeps = ["ChainRulesCore", "Statistics"] [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" StaticArraysStatisticsExt = "Statistics" [[deps.StaticArraysCore]] @@ -1895,7 +1676,7 @@ version = "1.4.2" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -1914,12 +1695,15 @@ deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Re git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" version = "1.3.0" -weakdeps = ["ChainRulesCore", "InverseFunctions"] [deps.StatsFuns.extensions] StatsFunsChainRulesCoreExt = "ChainRulesCore" StatsFunsInverseFunctionsExt = "InverseFunctions" + [deps.StatsFuns.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + [[deps.StructArrays]] deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] git-tree-sha1 = "0a3db38e4cce3c54fe7a71f831cd7b6194a54213" @@ -1931,32 +1715,36 @@ deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" +version = "7.2.1+1" [[deps.SymbolicIndexingInterface]] -deps = ["DocStringExtensions"] -git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" +git-tree-sha1 = "74502f408d99fc217a9d7cd901d9ffe45af892b1" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.2.2" +version = "0.3.3" [[deps.SymbolicUtils]] -deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs", "Unityper"] -git-tree-sha1 = "2f3fa844bcd33e40d8c29de5ee8dded7a0a70422" +deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TimerOutputs", "Unityper"] +git-tree-sha1 = "849b1dfb1680a9e9f2c6023f79a49b694fb6d0da" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "1.4.0" +version = "1.5.0" [[deps.Symbolics]] -deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "RecursiveArrayTools", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "TreeViews"] -git-tree-sha1 = "4d4e922e160827388c003a9a088a4c63f339f6c0" +deps = ["ArrayInterface", "Bijections", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils"] +git-tree-sha1 = "8960d2f32a99e52bb323de7c6c564f04427cfe63" uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "5.10.0" +version = "5.16.0" [deps.Symbolics.extensions] + SymbolicsGroebnerExt = "Groebner" + SymbolicsPreallocationToolsExt = ["ForwardDiff", "PreallocationTools"] SymbolicsSymPyExt = "SymPy" [deps.Symbolics.weakdeps] + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" + PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" [[deps.TOML]] @@ -2017,12 +1805,6 @@ weakdeps = ["Random", "Test"] [deps.TranscodingStreams.extensions] TestExt = ["Test", "Random"] -[[deps.TreeViews]] -deps = ["Test"] -git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" -uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" -version = "0.3.0" - [[deps.Tricks]] git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" @@ -2070,9 +1852,9 @@ version = "1.1.0" [[deps.Unityper]] deps = ["ConstructionBase"] -git-tree-sha1 = "21c8fc7cd598ef49f11bc9e94871f5d7740e34b9" +git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" -version = "0.1.5" +version = "0.1.6" [[deps.VersionParsing]] git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" @@ -2081,15 +1863,15 @@ version = "1.3.0" [[deps.WoodburyMatrices]] deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "5f24e158cf4cee437052371455fe361f526da062" +git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.6" +version = "1.0.0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "da69178aacc095066bad1f69d2f59a60a1dd8ad1" +git-tree-sha1 = "801cbe47eae69adc50f36c3caec4758d2650741b" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.12.0+0" +version = "2.12.2+0" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] @@ -2160,7 +1942,7 @@ version = "4.3.4+0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+1" [[deps.isoband_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -2189,13 +1971,7 @@ version = "0.15.1+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.libevent_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll"] -git-tree-sha1 = "f04ec6d9a186115fb38f858f05c0c4e1b7fc9dcb" -uuid = "1080aeaf-3a6a-583e-a51c-c537b09f60ec" -version = "2.1.13+1" +version = "5.8.0+1" [[deps.libfdk_aac_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -2204,10 +1980,10 @@ uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" version = "2.0.2+0" [[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "93284c28274d9e75218a416c65ec49d0e0fcdf3d" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" +version = "1.6.40+0" [[deps.libsixel_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] @@ -2230,18 +2006,12 @@ version = "1.3.7+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" - -[[deps.prrte_jll]] -deps = ["Artifacts", "Hwloc_jll", "JLLWrappers", "Libdl", "PMIx_jll", "libevent_jll"] -git-tree-sha1 = "5adb2d7a18a30280feb66cad6f1a1dfdca2dc7b0" -uuid = "eb928a42-fffd-568d-ab9c-3f5d54fc65b9" -version = "3.0.2+0" +version = "17.4.0+2" [[deps.x264_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] diff --git a/Project.toml b/Project.toml index c7cf89b0..e0c5f01f 100644 --- a/Project.toml +++ b/Project.toml @@ -18,7 +18,6 @@ JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -Manifolds = "1cead3c2-87b3-11e9-0ccd-23c62b72b94e" MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" NamedTrajectories = "538bc3a1-5ab9-4fc3-b776-35ca1e893e08" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" @@ -41,7 +40,6 @@ IJulia = "1.24" Ipopt = "1.4" JLD2 = "0.4" LaTeXStrings = "1.3" -Manifolds = "0.8, 0.9" MathOptInterface = "1.20" NamedTrajectories = "0.1.4" Reexport = "1.2" diff --git a/examples/scripts/three_qubit_1_3_swap_gate.jl b/examples/scripts/three_qubit_1_3_swap_gate.jl index 9c222575..f1eacee9 100644 --- a/examples/scripts/three_qubit_1_3_swap_gate.jl +++ b/examples/scripts/three_qubit_1_3_swap_gate.jl @@ -3,7 +3,6 @@ using QuantumCollocation using NamedTrajectories using LinearAlgebra using Distributions -using Manifolds max_iter = 5000 linear_solver = "mumps" diff --git a/examples/scripts/three_qubit_1_3_swap_gate_continuation.jl b/examples/scripts/three_qubit_1_3_swap_gate_continuation.jl index ca162a4f..923bc0dc 100644 --- a/examples/scripts/three_qubit_1_3_swap_gate_continuation.jl +++ b/examples/scripts/three_qubit_1_3_swap_gate_continuation.jl @@ -2,7 +2,6 @@ using QuantumCollocation using NamedTrajectories using LinearAlgebra using Distributions -using Manifolds max_iter = 200 linear_solver = "pardiso" diff --git a/examples/scripts/three_qubit_geodesic.jl b/examples/scripts/three_qubit_geodesic.jl index 9dd6f039..abcff5f5 100644 --- a/examples/scripts/three_qubit_geodesic.jl +++ b/examples/scripts/three_qubit_geodesic.jl @@ -3,7 +3,6 @@ using NamedTrajectories using LinearAlgebra using SparseArrays using Distributions -using Manifolds max_iter = 500 linear_solver = "pardiso" @@ -95,7 +94,8 @@ else Δt_max = 1.0 * dt - Ũ⃗, G⃗ = unitary_geodesic(U_goal, T; return_generator=true) + Ũ⃗, H_eff = unitary_geodesic(U_goal, T; return_generator=true) + G⃗ = stack([skew_symmetric_vec(iso(-im * H_eff)) for t = 1:n_moments], dims=2) # G⃗ = G⃗_geodesic + rand(Normal(0, 0.01), size(G⃗_geodesic)) diff --git a/src/rollouts.jl b/src/rollouts.jl index 46715a05..a159e32b 100644 --- a/src/rollouts.jl +++ b/src/rollouts.jl @@ -12,7 +12,6 @@ using ..QuantumSystems using ..Integrators using ..Problems -using Manifolds using LinearAlgebra using NamedTrajectories @@ -203,38 +202,48 @@ function skew_symmetric_vec(M::AbstractMatrix) return v end +function unitary_geodesic(U_goal, samples; kwargs...) + N = size(U_goal, 1) + U_init = Matrix{ComplexF64}(I(N)) + return unitary_geodesic(U_init, U_goal, 1:samples; kwargs...) +end +unitary_geodesic( + U₀::AbstractMatrix{<:Number}, + U₁::AbstractMatrix{<:Number}, + samples::Number; + kwargs... +) = unitary_geodesic(U₀, U₁, 1:samples; kwargs...) function unitary_geodesic( - U_init::AbstractMatrix{<:Number}, - U_goal::AbstractMatrix{<:Number}, - samples::Int; + U₀::AbstractMatrix{<:Number}, + U₁::AbstractMatrix{<:Number}, + timesteps::AbstractVector{<:Number}; return_generator=false ) - U_init = Matrix{ComplexF64}(U_init) - U_goal = Matrix{ComplexF64}(U_goal) - N = size(U_init, 1) - M = SpecialUnitary(N) - ts = range(0, 1, length=samples) - Us = shortest_geodesic(M, U_init, U_goal, ts) - X = Manifolds.log(M, U_init, U_goal) - G = iso(X) - Ũ⃗s = [operator_to_iso_vec(U) for U ∈ Us] - Ũ⃗ = hcat(Ũ⃗s...) - G̃⃗ = hcat([skew_symmetric_vec(G) for t = 1:samples]...) + """ + Compute the effective generator of the geodesic connecting U₀ and U₁. + U₁ = exp(-im * H * T) U₀ + log(U₁ * U₀') = -im * H * T + + Allow for the possibiltiy of unequal timesteps and ranges outside [0,1]. + + Returns the geodesic. + Optionally returns the effective Hamiltonian generating the geodesic. + """ + t₀ = timesteps[1] + T = timesteps[end] - t₀ + H = im * log(U₁ * U₀') / T + # -im prefactor is not included in H + U_geo = [exp(-im * H * (t - t₀)) * U₀ for t ∈ timesteps] + Ũ⃗_geo = stack(operator_to_iso_vec.(U_geo), dims=2) if return_generator - return Ũ⃗, G̃⃗ + return Ũ⃗_geo, H else - return Ũ⃗ + return Ũ⃗_geo end end -function unitary_geodesic(U_goal, samples; kwargs...) - N = size(U_goal, 1) - U_init = Matrix{ComplexF64}(I(N)) - return unitary_geodesic(U_init, U_goal, samples; kwargs...) -end - function linear_interpolation(ψ̃₁::AbstractVector, ψ̃₂::AbstractVector, samples::Int) ts = range(0, 1; length=samples) ψ̃s = [ψ̃₁ + t * (ψ̃₂ - ψ̃₁) for t ∈ ts] diff --git a/test/problem_templates_test.jl b/test/problem_templates_test.jl index ea1e6915..d1507782 100644 --- a/test/problem_templates_test.jl +++ b/test/problem_templates_test.jl @@ -37,7 +37,7 @@ @test unitary_fidelity(mintime_prob) > final_fidelity - @test times(mintime_prob.trajectory)[end] < times(prob.trajectory)[end] + @test sum(mintime_prob.trajectory[:Δt]) < sum(prob.trajectory[:Δt]) end diff --git a/test/rollouts_test.jl b/test/rollouts_test.jl new file mode 100644 index 00000000..f16a9d92 --- /dev/null +++ b/test/rollouts_test.jl @@ -0,0 +1,35 @@ +""" + Testing rollouts +""" + +@testset "Geodesic" begin + # Test π rotation + U_α = GATES[:I] + U_ω = GATES[:X] + Us, H = unitary_geodesic( + U_α, U_ω, range(0, 1, 4), return_generator=true + ) + + @test size(Us, 2) == 4 + @test Us[:, 1] ≈ operator_to_iso_vec(U_α) + @test Us[:, end] ≈ operator_to_iso_vec(U_ω) + @test H' - H ≈ zeros(2, 2) + @test norm(H) ≈ π + + # Test modified timesteps (10x) + Us10, H10 = unitary_geodesic( + U_α, U_ω, range(-5, 5, 4), return_generator=true + ) + + @test size(Us10, 2) == 4 + @test Us10[:, 1] ≈ operator_to_iso_vec(U_α) + @test Us10[:, end] ≈ operator_to_iso_vec(U_ω) + @test H10' - H10 ≈ zeros(2, 2) + @test norm(H10) ≈ π/10 + + # Test wrapped call + Us_wrap = unitary_geodesic(U_ω, 4) + @test Us_wrap[:, 1] ≈ operator_to_iso_vec(GATES[:I]) + @test Us_wrap[:, end] ≈ operator_to_iso_vec(U_ω) + +end \ No newline at end of file From ccc0fbe7148b4cbaf36d080423f9bee202b85c22 Mon Sep 17 00:00:00 2001 From: andy Date: Sat, 13 Jan 2024 21:05:20 -0600 Subject: [PATCH 4/7] Bug fix: geodesic arg sample uses range [0,1] --- src/quantum_systems.jl | 5 +++++ src/rollouts.jl | 6 +++--- test/rollouts_test.jl | 25 ++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/quantum_systems.jl b/src/quantum_systems.jl index b2f44e45..8c40d3d3 100644 --- a/src/quantum_systems.jl +++ b/src/quantum_systems.jl @@ -336,6 +336,9 @@ end commutator(A::AbstractMatrix, B::AbstractMatrix) = A * B - B * A +is_hermitian(H::AbstractMatrix; atol=eps(Float32)) = + all(isapprox.(H - H', 0.0, atol=atol)) + function is_linearly_dependent( basis::Vector{<:AbstractMatrix}, op::AbstractMatrix; @@ -387,6 +390,8 @@ function operator_algebra( if all(test .≈ 0) || is_linearly_dependent(basis, test) continue else + # Store as Hermitian operator + test = is_hermitian(test) ? test : im * test push!(layer, test) push!(basis, test) end diff --git a/src/rollouts.jl b/src/rollouts.jl index a159e32b..9877afa2 100644 --- a/src/rollouts.jl +++ b/src/rollouts.jl @@ -204,8 +204,8 @@ end function unitary_geodesic(U_goal, samples; kwargs...) N = size(U_goal, 1) - U_init = Matrix{ComplexF64}(I(N)) - return unitary_geodesic(U_init, U_goal, 1:samples; kwargs...) + U₀ = Matrix{ComplexF64}(I(N)) + return unitary_geodesic(U₀, U_goal, samples; kwargs...) end unitary_geodesic( @@ -213,7 +213,7 @@ unitary_geodesic( U₁::AbstractMatrix{<:Number}, samples::Number; kwargs... -) = unitary_geodesic(U₀, U₁, 1:samples; kwargs...) +) = unitary_geodesic(U₀, U₁, range(0, 1, samples); kwargs...) function unitary_geodesic( U₀::AbstractMatrix{<:Number}, diff --git a/test/rollouts_test.jl b/test/rollouts_test.jl index f16a9d92..0cde0d89 100644 --- a/test/rollouts_test.jl +++ b/test/rollouts_test.jl @@ -3,12 +3,18 @@ """ @testset "Geodesic" begin + ## Group 1: identity to X (π rotation) + # Test π rotation U_α = GATES[:I] U_ω = GATES[:X] Us, H = unitary_geodesic( U_α, U_ω, range(0, 1, 4), return_generator=true ) + + Us = unitary_geodesic( + U_α, U_ω, range(0, 1, 4) + ) @test size(Us, 2) == 4 @test Us[:, 1] ≈ operator_to_iso_vec(U_α) @@ -28,8 +34,25 @@ @test norm(H10) ≈ π/10 # Test wrapped call - Us_wrap = unitary_geodesic(U_ω, 4) + Us_wrap, H_wrap = unitary_geodesic(U_ω, 10, return_generator=true) @test Us_wrap[:, 1] ≈ operator_to_iso_vec(GATES[:I]) @test Us_wrap[:, end] ≈ operator_to_iso_vec(U_ω) + rollout = [exp(-im * H_wrap * t) for t ∈ range(0, 1, 10)] + Us_test = stack(operator_to_iso_vec.(rollout), dims=2) + @test isapprox(Us_wrap, Us_test) + + + ## Group 2: √X to X (π/2 rotation) + + # Test geodesic not at identity + U₀ = sqrt(GATES[:X]) + U₁ = GATES[:X] + Us, H = unitary_geodesic(U₀, U₁, 10, return_generator=true) + @test Us[:, 1] ≈ operator_to_iso_vec(U₀) + @test Us[:, end] ≈ operator_to_iso_vec(U_ω) + + rollout = [exp(-im * H * t) * U₀ for t ∈ range(0, 1, 10)] + Us_test = stack(operator_to_iso_vec.(rollout), dims=2) + @test isapprox(Us, Us_test) end \ No newline at end of file From d5616e17b9843b44b16186626d2be259c425dce8 Mon Sep 17 00:00:00 2001 From: andy Date: Sat, 13 Jan 2024 21:05:28 -0600 Subject: [PATCH 5/7] Inv vec util --- src/quantum_utils.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/quantum_utils.jl b/src/quantum_utils.jl index 73b7c373..be05c57f 100644 --- a/src/quantum_utils.jl +++ b/src/quantum_utils.jl @@ -3,6 +3,7 @@ module QuantumUtils export GATES export gate export ⊗ +export vec⁻¹ export operators_from_dict export kron_from_dict export apply @@ -217,6 +218,10 @@ end """ isomporphism utilities """ +function vec⁻¹(x::AbstractVector) + n = isqrt(length(x)) + return reshape(x, n, n) +end ket_to_iso(ψ) = [real(ψ); imag(ψ)] From cb2ec4affd536559993d3c46ed730070c05f991f Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 15 Jan 2024 14:28:11 -0600 Subject: [PATCH 6/7] Normalize operator algebra --- src/quantum_systems.jl | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/quantum_systems.jl b/src/quantum_systems.jl index 8c40d3d3..2c691d04 100644 --- a/src/quantum_systems.jl +++ b/src/quantum_systems.jl @@ -339,14 +339,8 @@ commutator(A::AbstractMatrix, B::AbstractMatrix) = A * B - B * A is_hermitian(H::AbstractMatrix; atol=eps(Float32)) = all(isapprox.(H - H', 0.0, atol=atol)) -function is_linearly_dependent( - basis::Vector{<:AbstractMatrix}, - op::AbstractMatrix; - eps=eps(Float32) -) - # Note: basis is assumed to be linearly independent - M = hcat(vec.(basis)..., vec(op)) - return is_linearly_dependent(M, eps=eps) +function is_linearly_dependent(basis::Vector{<:AbstractMatrix}; kwargs...) + return is_linearly_dependent(stack(vec.(basis)), kwargs...) end function is_linearly_dependent(M::AbstractMatrix; eps=eps(Float32)) @@ -360,38 +354,41 @@ function is_linearly_dependent(M::AbstractMatrix; eps=eps(Float32)) end function operator_algebra( - generators::Vector{<:AbstractMatrix}; return_layers=false + gens::Vector{<:AbstractMatrix}; return_layers=false, normalize=false ) """ - operator_algebra(generators; return_layers=false) + operator_algebra(generators; return_layers=false, normalize=false) Compute the Lie algebra basis for the given generators. If return_layers is true, the Lie tree layers are also returned. """ - basis = copy(generators) - current_layer = copy(generators) + basis = normalize ? [g / norm(g) for g ∈ gens] : copy(gens) + current_layer = copy(basis) if return_layers - all_layers = Vector{Matrix{ComplexF64}}[copy(generators)] + all_layers = Vector{Matrix{ComplexF64}}[copy(gens)] end - if is_linearly_dependent(stack(vec.(basis))) + ℓ = 1 + println("ℓ = $ℓ") + if is_linearly_dependent(basis) println("Linearly dependent generators.") else # Note: Use left normalized commutators # Note: Jacobi identity is not checked - ℓ = 1 - while length(basis) < size(first(generators), 1)^2 - 1 - println("ℓ = $ℓ") + while length(basis) < size(first(gens), 1)^2 - 1 layer = Matrix{ComplexF64}[] # Repeat commutators until no new operators are found. for op ∈ current_layer - for gen ∈ generators + for gen ∈ gens test = commutator(gen, op) - if all(test .≈ 0) || is_linearly_dependent(basis, test) + if all(test .≈ 0) + continue + # Current basis is assumed to be linearly independent + elseif is_linearly_dependent([basis..., test]) continue else - # Store as Hermitian operator - test = is_hermitian(test) ? test : im * test + test .= is_hermitian(test) ? test : im * test + test .= normalize ? test / norm(test) : test push!(layer, test) push!(basis, test) end @@ -404,6 +401,7 @@ function operator_algebra( else current_layer = layer ℓ += 1 + println("ℓ = $ℓ") end if return_layers From f4d4eebdec859bef09b6b8ff67752819457c5dcc Mon Sep 17 00:00:00 2001 From: Andy Goldschmidt Date: Tue, 16 Jan 2024 14:21:33 -0600 Subject: [PATCH 7/7] Remove 1.8 support --- .github/workflows/CI.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 640bdb83..b76f773c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -18,7 +18,6 @@ jobs: fail-fast: false matrix: version: - - '1.8' - '1.9' - '1.10' os: