├── .gitignore ├── 0.intro ├── images │ ├── bethe.png │ ├── toriccode.png │ ├── 2024-05-25-14-08-37.png │ ├── 2024-05-25-14-44-06.png │ ├── 2024-05-25-14-47-02.png │ └── fig1.svg ├── guides │ ├── 2024-05-25-11-32-27.png │ ├── 2024-05-25-11-34-07.png │ ├── repomanagement.md │ ├── conduct-survey.md │ └── report-writing.md ├── exactsimulation │ ├── README.md │ ├── 1.heisenberg │ │ └── README.md │ ├── 3.quantum-circuit │ │ └── README.md │ └── 2.hard-core-lattice-gas │ │ └── README.md ├── demo │ ├── demo.jl │ └── demo.py └── README.md ├── 1.tensor-networks ├── tutorial │ ├── .DS_Store │ ├── images │ │ ├── 2024-05-25-19-25-48.png │ │ └── 2024-05-25-19-26-18.png │ ├── code │ │ ├── Project.toml │ │ └── tutorial.jl │ ├── plots │ │ ├── Project.toml │ │ ├── plots.jl │ │ ├── matmul.svg │ │ ├── traceperm.svg │ │ ├── svd.svg │ │ ├── tebd.svg │ │ └── mps.svg │ └── tensornetwork.md └── README.md ├── 4.computational-complexity ├── circuitsim │ ├── images │ │ ├── qft.png │ │ └── slack.png │ ├── Project.toml │ ├── qc2einsum.md │ ├── swaptest.jl │ └── Manifest.toml └── README.md ├── 3.quantum-monte-carlo └── README.md ├── 2.ai4science └── README.md ├── projects └── README.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | Manifest.toml -------------------------------------------------------------------------------- /0.intro/images/bethe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/images/bethe.png -------------------------------------------------------------------------------- /0.intro/images/toriccode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/images/toriccode.png -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/1.tensor-networks/tutorial/.DS_Store -------------------------------------------------------------------------------- /0.intro/guides/2024-05-25-11-32-27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/guides/2024-05-25-11-32-27.png -------------------------------------------------------------------------------- /0.intro/guides/2024-05-25-11-34-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/guides/2024-05-25-11-34-07.png -------------------------------------------------------------------------------- /0.intro/images/2024-05-25-14-08-37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/images/2024-05-25-14-08-37.png -------------------------------------------------------------------------------- /0.intro/images/2024-05-25-14-44-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/images/2024-05-25-14-44-06.png -------------------------------------------------------------------------------- /0.intro/images/2024-05-25-14-47-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/0.intro/images/2024-05-25-14-47-02.png -------------------------------------------------------------------------------- /4.computational-complexity/circuitsim/images/qft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/4.computational-complexity/circuitsim/images/qft.png -------------------------------------------------------------------------------- /4.computational-complexity/circuitsim/images/slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/4.computational-complexity/circuitsim/images/slack.png -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/images/2024-05-25-19-25-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/1.tensor-networks/tutorial/images/2024-05-25-19-25-48.png -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/images/2024-05-25-19-26-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingThrust/NumericTrainingCamp/HEAD/1.tensor-networks/tutorial/images/2024-05-25-19-26-18.png -------------------------------------------------------------------------------- /4.computational-complexity/circuitsim/Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | Yao = "5872b779-8223-5990-8dd0-5abbb0748c8c" 3 | YaoPlots = "32cfe2d9-419e-45f2-8191-2267705d8dbc" 4 | YaoToEinsum = "9b173c7b-dc24-4dc5-a0e1-adab2f7b6ba9" 5 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/code/Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" 3 | OMEinsum = "ebe7aa44-baf0-506c-a96f-8464559b3922" 4 | StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" 5 | Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" 6 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | GenericTensorNetworks = "3521c873-ad32-4bb4-b63d-f4f178f42b49" 3 | LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" 4 | Luxor = "ae8d54c2-7ccd-5906-9d76-62fc9837b5bc" 5 | LuxorGraphPlot = "1f49bdf2-22a7-4bc4-978b-948dc219fbbc" 6 | MathTeXEngine = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" 7 | -------------------------------------------------------------------------------- /4.computational-complexity/circuitsim/qc2einsum.md: -------------------------------------------------------------------------------- 1 | # How to compute quantum circuit by tensor network contraction 2 | 3 | ## Example: QFT circuit 4 | ![](images/qft.png) 5 | 6 | 1. the Hadamard gate $\text{H}$ is a rank-2 tensor 7 | 2. the CPHASE gate $\text{CPHASE}$ is a rank-4 tensor 8 | 9 | Q: How to represent $\text{CNOT}$ and $\text{CZ}$ gates? 10 | 11 | ## Tensor network based simulation of quantum circuits 12 | 13 | ![](images/slack.png) -------------------------------------------------------------------------------- /0.intro/exactsimulation/README.md: -------------------------------------------------------------------------------- 1 | # Live Coding: Exact simulation methods 2 | 3 | ## Contents 4 | - [Hard core lattice gas](hard-core-lattice-gas/) 5 | - [Heisenberg model](heisenberg/) 6 | - [Quantum circuit simulation](quantum-circuit/) 7 | 8 | ## How to set up the environment 9 | - [Scientific Computing for Physicists](https://book.jinguo-group.science/stable/chap2/julia-setup/) 10 | - [知乎专栏:现代科学计算](https://www.zhihu.com/column/c_1706037360360304641) -------------------------------------------------------------------------------- /0.intro/guides/repomanagement.md: -------------------------------------------------------------------------------- 1 | # How to manage your software package 2 | 3 | ## Let people trust your software: Unit Tests and CI/CD 4 | 5 | https://book.jinguo-group.science/stable/chap1/ci/ 6 | 7 | ## Make your software easy to use: Documentation 8 | 9 | 1. For light weighted package, you can include documentation in the `README.md` file. 10 | 2. In the Julia community, we use [`Documenter.jl`](https://github.com/JuliaDocs/Documenter.jl) to generate documentation. It could be setup easily using [`PkgTemplates.jl`](https://github.com/JuliaCI/PkgTemplates.jl). 11 | 1. Preview the documentation locally 12 | 13 | ## The final report 14 | The final report should be in the form of a software documentation. 15 | 16 | ## Tips 17 | 1. Use GitHub copilot to generate the documentation easily. Please check [report writing](report-writing.md) for more details. -------------------------------------------------------------------------------- /4.computational-complexity/circuitsim/swaptest.jl: -------------------------------------------------------------------------------- 1 | using Yao, YaoToEinsum, YaoPlots; darktheme!() 2 | 3 | # the swap test circuit 4 | swaptest_circuit = EasyBuild.swap_test_circuit(2, 2, 0.0) 5 | vizcircuit(swaptest_circuit) 6 | 7 | reg1 = rand_state(2) 8 | reg2 = rand_state(2) 9 | fidelity(reg1, reg2)^2 10 | reg = join(reg1, reg2, zero_state(1)) 11 | fid = expect(put(5, 1=>Z), reg |> swaptest_circuit) 12 | 13 | # the expectation 14 | expcircuit = chain(swaptest_circuit, put(5, 1=>Z), swaptest_circuit') 15 | vizcircuit(expcircuit) 16 | 17 | # step one: HZH = X 18 | c1 = chain(swaptest_circuit[1:end-1]) 19 | vizcircuit(chain(c1, put(5, 1=>X), c1')) 20 | 21 | # step two: (C₁U₂)X₁(C₁U₂) = U₂ 22 | vizcircuit(chain(put(5, 1=>H), swap(5, 2, 4), swap(5, 3, 5), put(5, 1=>H)); starting_texts=["0", "", "", "", ""], ending_texts=["0", "", "", "", ""]) 23 | 24 | # step three: H^2 = I 25 | vizcircuit(chain(swap(5, 2, 4), swap(5, 3, 5)); starting_texts=["0", "", "", "", ""], ending_texts=["0", "", "", "", ""]) 26 | 27 | # YaoToEinsum 28 | YaoToEinsum.yao2einsum(swaptest_circuit) -------------------------------------------------------------------------------- /0.intro/exactsimulation/1.heisenberg/README.md: -------------------------------------------------------------------------------- 1 | # Solving the ground state of a Heisenberg chain 2 | 3 | In this demo, we will use the [Yao.jl](https://github.com/QuantumBFS/Yao.jl) package[^Luo2020] to simulate the ground state of a Heisenberg chain. The Hamiltonian is given by 4 | 5 | $$ 6 | H = \sum_{i=1}^{N-1} \mathbf{S}_i \cdot \mathbf{S}_{i+1} 7 | $$ 8 | 9 | where $\mathbf{S}_i$ is the spin operator at site $i$. The ground state of the Heisenberg chain is a spin singlet state. 10 | 11 | ## Properties 12 | 1. Translation invariance (periodic boundary condition or infinite chain) 13 | 2. Symmetry: $SU(2)$ symmetry 14 | 3. Ground state energy per site (infinite size): -1.7726 15 | 16 | ## Code 17 | 1. Get the ground state energy of a Heisenberg chain with 20 sites 18 | 2. Get the expectation value of the spin operator at different sites 19 | 3. Quantum quench, simulate the time evolution of the Heisenberg chain 20 | 21 | ## References 22 | [^Luo2020]: Luo, X.-Z., Liu, J.-G., Zhang, P., Wang, L., 2020. Yao.jl: Extensible, Efficient Framework for Quantum Algorithm Design. Quantum 4, 341. https://doi.org/10.22331/q-2020-10-11-341 -------------------------------------------------------------------------------- /0.intro/exactsimulation/3.quantum-circuit/README.md: -------------------------------------------------------------------------------- 1 | # Simulate a quantum circuit by tensor network contraction 2 | 3 | Many quantum circuits have small entanglement, e.g. the QFT circuit[^Chen2023]. We can simulate them efficiently by tensor network contraction. In this demo, we will use the [Yao.jl](https://github.com/QuantumBFS/Yao.jl) package[^Luo2020] to simulate a quantum circuit by converting it to a tensor network and contracting the tensor network. 4 | 5 | * The contraction order finding is the key technique to simulate a quantum circuit efficiently. Finding the optimal contraction order is an NP-hard problem. 6 | 7 | ## Code 8 | 9 | 1. Construct the quantum circuit of the QFT algorithm. 10 | 2. Convert the quantum circuit to a tensor network. 11 | 3. Computing the entanglement entropy of the MPO. 12 | 13 | ## References 14 | 15 | [^Luo2020]: Luo, X.-Z., Liu, J.-G., Zhang, P., Wang, L., 2020. Yao.jl: Extensible, Efficient Framework for Quantum Algorithm Design. Quantum 4, 341. https://doi.org/10.22331/q-2020-10-11-341 16 | [^Chen2023]: Chen, J., Stoudenmire, E.M., White, S.R., 2023. Quantum Fourier Transform Has Small Entanglement. PRX Quantum 4, 040318. https://doi.org/10.1103/PRXQuantum.4.040318 -------------------------------------------------------------------------------- /0.intro/exactsimulation/2.hard-core-lattice-gas/README.md: -------------------------------------------------------------------------------- 1 | # The hard-core lattice gas model 2 | 3 | In this demo, we will use the [GenericTensorNetworks.jl](https://github.com/QuEraComputing/GenericTensorNetworks.jl) package[^Liu2023] to simulate the hard-core lattice gas model. 4 | The hard-core lattice gas model is a classical model of interacting particles on a lattice. The Hamiltonian is given by 5 | 6 | $$ 7 | H = \infty \sum_{\langle i, j \rangle} n_i n_j - \mu \sum_i n_i 8 | $$ 9 | 10 | where $n_i$ is the occupation number of site $i$ and the sum is over nearest neighbors. 11 | 12 | - Given a graph as the input, finding its ground state is NP-complete. 13 | - Counting the number of feasible configurations of the hard-core lattice gas model is hard, even for the square lattice. The number of configurations is sequence [A006506](https://oeis.org/A006506) in the OEIS. 14 | - Finding the partition function of the hard-core lattice gas model has attracted much attention in the statistical physics community. 15 | 16 | ## Code 17 | 1. Get the ground state energy of the hard-core lattice gas model on a square lattice with $20\times 20$ sites. 18 | 2. Count the number of feasible configurations, and the partition function. 19 | 3. Visualize the configuration space. 20 | 21 | ## References 22 | [^Liu2023]: Liu, J.-G., Gao, X., Cain, M., Lukin, M.D., Wang, S.-T., 2023. Computing Solution Space Properties of Combinatorial Optimization Problems Via Generic Tensor Networks. SIAM J. Sci. Comput. 45, A1239–A1270. https://doi.org/10.1137/22M1501787 -------------------------------------------------------------------------------- /0.intro/guides/conduct-survey.md: -------------------------------------------------------------------------------- 1 | # How to get updated with the latest research 2 | 3 | This guide is entry level guide for beginners to conduct a survey and get updated with the latest research. 4 | 5 | ## Use Google Scholar to conduct a survey 6 | [Google Scholar](https://scholar.google.com/) is a freely accessible web search engine that indexes the full text or metadata of scholarly literature across an array of publishing formats and disciplines. 7 | 8 | You may have a keyword or an article in mind, and you want to know more about it. Here is how you can use Google Scholar to conduct a survey. 9 | 1. Go to [Google Scholar](https://scholar.google.com/). 10 | 2. Type the keyword or the article title in the search bar and click the search button. 11 | 3. You will see a list of articles related to the keyword or the article title. The more citations an article has, the more influential it is. 12 | 4. If you want to have a deeper understanding of the article, please 13 | 1. check the articles that cite the article, and check how these articles comment on the article, 14 | 2. check the references of the article. 15 | 5. If you want to keep a copy of the article, [Zotero](https://www.zotero.org/) is a good tool to help you manage your references. Combined with the [Zotero Connector](https://www.zotero.org/download/connectors), you can save the article with one click 🥳. 16 | 17 | 18 | ## Get updated with the latest research 19 | 1. Setup a Google Scholar account. 20 | 2. Search for the researchers you are interested in. 21 | ![](2024-05-25-11-32-27.png) 22 | 3. Follow the researchers you are interested in by clicking the "Follow" button on their profile. 23 | ![](2024-05-25-11-34-07.png) 24 | 1. New articles from the researchers: updated less frequently 25 | 2. New articles related to this author's research: updated more frequently 26 | -------------------------------------------------------------------------------- /0.intro/demo/demo.jl: -------------------------------------------------------------------------------- 1 | using Statistics 2 | using LinearAlgebra 3 | using SpecialFunctions 4 | 5 | function simulate(number_measure) 6 | t = 1.35 7 | er = 0.20 8 | repeats = 30 9 | shots = 1000 10 | firstlist = Int[] 11 | H = randn(ComplexF64, 129, 129) 12 | H += H' 13 | E0, U0 = eigen(H) 14 | k = 0:128 15 | m = 0:128 16 | km = k' .- m 17 | for n in 1:shots 18 | @info "$n/$shots" 19 | nsum = zeros(Int, repeats) 20 | for r in 1:repeats 21 | tau_state = vcat(zeros(64), [1], zeros(64)) 22 | for j in 1:number_measure 23 | # Introducing noise on tau, using uniform distribution here 24 | trandom = t + rand() * 2 * er * t - er * t 25 | 26 | #U = ((0.0 + 1.0im) .^ km) .* besselj.(km, 2.0 * trandom) 27 | UD = exp.(-im .* E0 .* trandom) 28 | 29 | tau_state = U0 * (Diagonal(UD) * (U0' * tau_state)) 30 | if rand() <= abs(tau_state[65])^2 31 | nsum[r] = (r-1) * number_measure + j + 1 32 | break 33 | end 34 | tau_state[65] = 0 35 | tau_state /= norm(tau_state) 36 | end 37 | end 38 | first_non_zero = findfirst(x -> x != 0, nsum) 39 | push!(firstlist, first_non_zero === nothing ? 0 : nsum[first_non_zero]) 40 | end 41 | 42 | std_dev = std(firstlist)/sqrt(shots) 43 | # Calculate the number of non-zero elements in [firstlist]. 44 | non_zero_count = count(x -> x != 0, firstlist) 45 | 46 | println(" $non_zero_count") 47 | println(number_measure) 48 | println(mean(firstlist), " ", std_dev) 49 | return mean(firstlist), std_dev 50 | end 51 | 52 | meanlist = [] 53 | std_dev_list_all = [] 54 | 55 | list_number_measure = 1:10 56 | for n in list_number_measure 57 | mean, std_dev = simulate(n) 58 | push!(meanlist, mean) 59 | push!(std_dev_list_all, std_dev) 60 | end 61 | 62 | println(meanlist) 63 | println(std_dev_list_all) 64 | 65 | scatter(list_number_measure, meanlist, yerror=std_dev_list_all, legend=false) -------------------------------------------------------------------------------- /0.intro/demo/demo.py: -------------------------------------------------------------------------------- 1 | ## Monte Carlo simulation ## 2 | # This programe is to simulate restart (vs. r) in nearly infinite system (a line with 129 sites) 3 | # with or without noise (random tau). 4 | # And plot Errorbar 5 | 6 | import numpy as np 7 | import matplotlib.pyplot as plt 8 | from scipy.special import jn 9 | 10 | # Initialize parameters 11 | t = 1.35 12 | repeats = 30 13 | shots = 1000 14 | list_number_measure = range(10, 16) 15 | er = 0.20 16 | 17 | # In order to construct the U matrix, first bulid two matrices k,m. 18 | k, m = np.meshgrid(np.arange(129), np.arange(129)) 19 | #U = (1j ** (k - m)) * jn(k - m, 2 * t) 20 | 21 | 22 | def simulate(number_measure): 23 | firstlist = [] 24 | std_dev_list = [] 25 | for _ in range(shots): 26 | nsum = [0] * repeats 27 | for r in range(repeats): 28 | tau_state = np.concatenate(([0]*64, [1], [0]*64)) 29 | for _ in range(number_measure): 30 | # Introducing noise on tau, using uniform distribution here 31 | 32 | trandom = t + np.random.uniform(-er * t, er * t) 33 | U = (1j ** (k - m)) * jn(k - m, 2 * trandom) 34 | 35 | tau_state = np.dot(U, tau_state) 36 | if np.random.random() <= abs(tau_state[64])**2: 37 | nsum[r] = r * number_measure + _ + 1 38 | break 39 | tau_state[64] = 0 40 | tau_state /= np.linalg.norm(tau_state) 41 | first_non_zero = next((num for num in nsum if num != 0), 0) 42 | firstlist.append(first_non_zero) 43 | 44 | std_dev = np.std(firstlist)/np.sqrt(shots) 45 | # Calculate the number of non-zero elements in [firstlist]. 46 | non_zero_count = len([x for x in firstlist if x != 0]) 47 | 48 | 49 | print(f" {non_zero_count}") 50 | print(number_measure) 51 | print(np.mean(firstlist), std_dev) 52 | return np.mean(firstlist), std_dev 53 | 54 | 55 | #meanlist = [simulate(n) for n in list_number_measure] 56 | 57 | meanlist = [] 58 | std_dev_list_all = [] 59 | 60 | for n in list_number_measure: 61 | mean, std_dev = simulate(n) 62 | meanlist.append(mean) 63 | std_dev_list_all.append(std_dev) 64 | 65 | print(meanlist) 66 | print(std_dev_list_all) 67 | #plt.plot(list_number_measure, meanlist) 68 | plt.errorbar(list_number_measure, meanlist, yerr=std_dev_list_all, fmt='o-', capsize=5) 69 | plt.show() -------------------------------------------------------------------------------- /3.quantum-monte-carlo/README.md: -------------------------------------------------------------------------------- 1 | # Randomized algorithms 2 | 3 | ## Contents 4 | 1. Simulated annealing and quantum annealing ([Julia: Simulated annealing](https://github.com/GiggleLiu/ScientificComputingDemos/tree/main/Spinglass) and [Julia: Quantum annealing](https://queracomputing.github.io/Bloqade.jl/dev/tutorials/2.adiabatic/main/)) 5 | 2. Quantum Monte Carlo and variational quantum Monte Carlo 6 | 1. Restricted Boltzmann Model (RBM) ([Python](https://github.com/GiggleLiu/marburg)) 7 | 3. Quantum Random Walk 8 | 9 | ## Reading 10 | - Book: Quantum Monte Carlo Methods[^Gubernatis2016] 11 | - Thesis: Implementation of the Variational Monte Carlo method for the Hubbard model[^Ruger2013] 12 | 13 | ## Researchers in the field 14 | 15 | - [Fakher Assaad](https://scholar.google.com/citations?hl=zh-CN&user=7JB0WRYAAAAJ) - Computational solid state physics 16 | - [Anders Sandvik](https://scholar.google.com/citations?hl=zh-CN&user=IPi533gAAAAJ) - Quantum many-body physics, Monte Carlo, spin models, strongly-correlated electrons 17 | - [Zi-Yang Meng](https://scholar.google.com/citations?hl=zh-CN&user=_aq-qEAAAAAJ) - Condense matter physics 18 | - [You-Jin Deng](https://scholar.google.com/citations?hl=zh-CN&user=C_kzsgkAAAAJ) - Computational Statistical Physics 19 | 20 | ## Projects 21 | 22 | - Reproduce: Classical signature of quantum annealing.[^Stella2005][^Wang2013][^Boixo2014]. 23 | - Reproduce: Solving the quantum many-body problem with artificial neural networks[^Ruger2013][^Carleo2017]. 24 | 25 | ## References 26 | [^Stella2005]: Stella, L., Santoro, G.E., Tosatti, E., 2005. Optimization by quantum annealing: Lessons from simple cases. Phys. Rev. B 72, 014303. https://doi.org/10.1103/PhysRevB.72.014303 27 | [^Wang2013]: Wang, L., Rønnow, T.F., Boixo, S., Isakov, S.V., Wang, Z., Wecker, D., Lidar, D.A., Martinis, J.M., Troyer, M., 2013. Comment on: “Classical signature of quantum annealing.” https://doi.org/10.48550/arXiv.1305.5837 28 | [^Carleo2017]: Carleo, G., Troyer, M., 2017. Solving the quantum many-body problem with artificial neural networks. Science 355, 602–606. https://doi.org/10.1126/science.aag2302 29 | [^Boixo2014]: Boixo, S., Rønnow, T.F., Isakov, S.V., Wang, Z., Wecker, D., Lidar, D.A., Martinis, J.M., Troyer, M., 2014. Evidence for quantum annealing with more than one hundred qubits. Nature Phys 10, 218–224. https://doi.org/10.1038/nphys2900 30 | [^Ruger2013]: Rüger, R., Goethe-universität, J.W., 2013. Implementation of the Variational Monte Carlo method for the Hubbard model. http://work.robertrueger.de/docs/mscthesis.pdf 31 | [^Gubernatis2016]: James, Naoki Kawashima, and Philipp Werner., 2016, Quantum Monte Carlo Methods. Cambridge University Press 32 | -------------------------------------------------------------------------------- /0.intro/guides/report-writing.md: -------------------------------------------------------------------------------- 1 | # How to write a report 2 | ## Git and Terminal 3 | 4 | You need to know how to use Git and a terminal to work on the project. The related tutorials are in the book [Scientific Computing for Physicists](https://book.jinguo-group.science). The following are the links to the tutorials: 5 | - [How to get a terminal](https://book.jinguo-group.science/stable/chap1/terminal/) 6 | - [How to use Git](https://book.jinguo-group.science/stable/chap1/git/) 7 | 8 | ## GitHub Copilot + Markdown for technical writing 9 | 10 | This is a workflow for setting up AI-assisted technical writing using Github Copilot and Markdown. 11 | 12 | #### Step 1: Setup Markdown Editor 13 | 1. Go to [VS Code website](https://code.visualstudio.com/) and download the latest version, then install & open VS Code. 14 | 3. Add the following VS Code extensions. To add an VS Code extension, please click the `Extensions` button in the left side bar, search for the extension name and click the `Install` button. 15 | - [Markdown Preview Enhanced](https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced) 16 | - [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) 17 | - [Paste Image](https://marketplace.visualstudio.com/items?itemName=mushan.vscode-paste-image) 18 | - [vscode-reveal](https://marketplace.visualstudio.com/items?itemName=evilz.vscode-reveal) - for presentation 19 | 4. Create a new file and save it as `test.md`. Then, click the `Preview` button ![](images/preview.png){width=20px} in the top right corner. 20 | 5. Edit the markdown file. You can learn markdown from [here](https://www.markdownguide.org/basic-syntax/). Math equations can also be rendered. For example, the following code 21 | ~~~ 22 | $$ 23 | \frac{1}{2} 24 | $$ 25 | ~~~ 26 | will be rendered as 27 | ```math 28 | \frac{1}{2} 29 | ``` 30 | 31 | #### Step 2: Setup GitHub Copilot 32 | 1. Go to the [GitHub website](https://github.com/) and sign up for a free account. 33 | 2. Install the [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) extension. GitHub Copilot requires you to connect with your Github account. You can also use it for free if you are a student ([check out](https://education.github.com/pack)) or you will be charged for using it. Learn more from this [YouTube video](https://youtu.be/HDG4PQK7DK8?si=sOR7PqNcGAnrV4Tm). 34 | 3. You might need to activate the GitHub Copilot extension by clicking the `Activate` (![](images/copilot.png){width=20px}) button in the bottom right corner of the VS Code window to make it work. Then you can type some text in the editor and press `Tab` to confirm the suggestion from Github Copilot. 35 | #### Step 3: Using GitHub/GitLab to host your markdown (optional) 36 | GitHub/GitLab is a code hosting platform for version control and collaboration. It allows you to 37 | - sync files across different devices, 38 | - work together with others from anywhere, and 39 | - preview markdown files in the browser. 40 | 41 | You can learn GitHub from the [YouTube video](https://www.youtube.com/watch?v=RGOj5yH7evk) or the [official guide](https://guides.github.com/activities/hello-world/). The GitLab workflow that we will use is similar. -------------------------------------------------------------------------------- /2.ai4science/README.md: -------------------------------------------------------------------------------- 1 | # AI for Science 2 | 3 | ## Contents 4 | - [Computational Graph](([Python](https://github.com/GiggleLiu/marburg))) and optimal checkpointing ([Julia](https://github.com/GiggleLiu/TreeverseAlgorithm.jl/tree/master/test)) 5 | - Generative modeling 6 | - Random-batch meothods for interacting particle systems ([Julia](https://github.com/HPMolSim)) 7 | 8 | ## Reading 9 | - Book: Pattern recognition and machine learning[^Bishop2006]. 10 | - Book: The Elements of Differentiable Programming [^Blondel2024]. 11 | - Book: Understanding molecular simulation: from algorithms to applications [^Frenkel2023]. 12 | 13 | ## Researchers in the field 14 | 15 | - [Steven Johnson](https://scholar.google.com/citations?hl=zh-CN&user=_MHaph0AAAAJ) - FFTW 16 | - [Lei Wang](https://scholar.google.com/citations?hl=zh-CN&user=t4m9TCIAAAAJ) - computational physicscondensed matter physicsdeep learning 17 | - [Weinan E](https://scholar.google.com/citations?user=i2mOt14AAAAJ&hl=en&oi=ao) - machine learning theory; AI for science 18 | - [Bin Dong](https://scholar.google.com/citations?user=zLXcC90AAAAJ&hl=en) - AI for Science; AI for math 19 | 20 | ## Projects 21 | - Reproduce: Ab-initio study of interacting fermions at finite temperature with neural canonical transformation[^Xie2022]. 22 | - Reproduce: Random batch Ewald method for Coulomb interactions[^Jin2021]. 23 | - Reproduce: Random-batch list algorithm for short-range molecular dynamics simulations[^Liang2021]; and if time permits, its extension to the spring-bead model for polymer chains[^Kremer1990]. 24 | - Reproduce: Replica Monte Carlo Simulation of Spin-Glasses[^Swendsen1986]. 25 | - Optimal checkpointing for non-uniform program (e.g. tensor network contraction)[^Griewank1992]. 26 | 27 | ## References 28 | [^Griewank1992]: Griewank, A., 1992. Achieving logarithmic growth of temporal and spatial complexity in reverse automatic differentiation. Optimization Methods and Software 1, 35–54. https://doi.org/10.1080/10556789208805505 29 | [^Liang2021]: Liang, J., Xu, Z. and Zhao, Y., 2021. Random-batch list algorithm for short-range molecular dynamics simulations. The Journal of Chemical Physics, 155(4). https://doi.org/10.1063/5.0056515 30 | [^Kremer1990]: Kremer, K. and Grest, G.S., 1990. Dynamics of entangled linear polymer melts: A molecular‐dynamics simulation. The Journal of Chemical Physics, 92(8), pp.5057-5086. https://doi.org/10.1063/1.458541 31 | [^Blondel2024]: Blondel, M., Roulet, V., 2024. The Elements of Differentiable Programming. https://doi.org/10.48550/arXiv.2403.14606 32 | [^Bishop2006]: Bishop, Christopher M., 2006. Pattern recognition and machine learning. 33 | [^Frenkel2023]: Frenkel, D. and Smit, B., 2023. Understanding molecular simulation: from algorithms to applications. Elsevier. 34 | [^Xie2022]: Xie, H., Zhang, L., Wang, L., 2022. Ab-initio study of interacting fermions at finite temperature with neural canonical transformation. JML 1, 38–59. https://doi.org/10.4208/jml.220113 35 | [^Jin2021]: S. Jin, L. Li, Z. Xu, and Y. Zhao, A random batch Ewald method for particle systems with Coulomb interactions, SIAM J. Sci. Comput., 43 (2021), pp. B937–B960. 36 | [^Swendsen1986]: Swendsen, R.H. and Wang, J.S., 1986. Replica Monte Carlo simulation of spin-glasses. Physical review letters, 57(21), p.2607. https://doi.org/10.1103/PhysRevLett.57.2607 37 | -------------------------------------------------------------------------------- /projects/README.md: -------------------------------------------------------------------------------- 1 | # Project Registry 2 | 3 | This folder contains the projects that are being worked on during the training camp. 4 | 5 | 6 | ## Renormalization Group Reduced Density Matrix Theory (RG-RDMT) 7 | 8 | Reproduce the paper by Nobert Schuch et al. [^Kull24] on Renormalization Group Reduced Density Matrix Theory (RG-RDMT) in Julia for obtaining the ground state. 9 | 10 | **Members** 11 | - Yusheng Zhao 12 | - Qingyun Qian 13 | 14 | **GitHub repository**: https://github.com/exAClior/RGRDMT.jl 15 | 16 | [^Kull24]: Kull, I., Schuch, N., Dive, B., Navascués, M., 2024. Lower Bounds on Ground-State Energies of Local Hamiltonians through the Renormalization Group. Phys. Rev. X 14, 021008. https://doi.org/10.1103/PhysRevX.14.021008 ↩ 17 | 18 | ## Tensor network based simulation of quantum circuits and the estimation of coherent error correction threshold 19 | 20 | - Write a simple tensor network based simulation of quantum circuits[^Pan2022]. 21 | - Estimate the coherent error correction threshold for Toric code. 22 | 23 | **Members** 24 | - Zhongyi Ni 25 | 26 | **GitHub repository**: https://github.com/nzy1997/TensorQCS.jl 27 | 28 | [^Pan2022]: Pan, F., Chen, K., Zhang, P., 2022. Solving the Sampling Problem of the Sycamore Quantum Circuits. Phys. Rev. Lett. 129, 090502. https://doi.org/10.1103/PhysRevLett.129.090502 29 | 30 | 31 | ## Tensor Network Contraction Order 32 | 33 | Reproduce the Hyper-Greedy algorithm for tensor network contraction order optimization by Johnnie Gray and Stefanos Kourtis[^Gray2021]. 34 | 35 | **Members** 36 | - Xuanzhao Gao 37 | 38 | **Github repository** 39 | - https://github.com/TensorBFS/OMEinsumContractionOrders.jl 40 | - https://github.com/ArrogantGao/TamakiTreeWidth.jl 41 | - https://github.com/ArrogantGao 42 | 43 | 44 | [^Gray2021]: Hyper-optimized tensor network contraction, https://doi.org/10.22331/q-2021-03-15-410 45 | 46 | 47 | ## Differential Programming Tensor Networks 48 | 49 | Reproduce the paper: Differentiable Programming Tensor Networks[^Liao2019] 50 | [^Liao2019]: Liao, H., Liu, J., Wang, L., Xiang, T., 2019. Differentiable Programming Tensor Networks. Physical Review X 9, 31041. https://doi.org/10.1103/PhysRevX.9.031041 51 | 52 | **Members** 53 | 54 | - Yidai Zhang 55 | - Huanhai Zhou 56 | 57 | **GitHub repository**: https://github.com/YidaiZhang/TensorNetworkAD2.jl 58 | 59 | ## Learn to use the package of NetKet 3. 60 | Try to reproduce the results in the following papers: 61 | - 2310.05715 62 | - 2311.16889 63 | - 2403.07795 64 | 65 | **Members** 66 | Xingyu Ren 67 | with support from Huanhai Zhou 68 | 69 | **GitHub repository** 70 | TBA 71 | 72 | ## Continuous matrix product operator approach to finite temperature quantum states 73 | Reproduce the paper[^Tang2020]. 74 | 75 | [^Tang2020]: Tang W, Tu H H, Wang L. Continuous matrix product operator approach to finite temperature quantum states[J]. Physical Review Letters, 2020, 125(17): 170604 76 | 77 | **Members** 78 | - Haojie Zhang 79 | 80 | Link to GitHub repository: 81 | https://github.com/lovemy569/CMPO-For-Finite-Temperature 82 | 83 | 84 | ## Random batch Ewald method for Coulomb interactions 85 | Reproduce the paper[^Jin2021]. 86 | 87 | [^Jin2021]: Jin, S., Li, L., Xu, Z., Zhao, Y., 2021. A random batch Ewald method for particle systems with Coulomb interactions. SIAM Journal on Scientific Computing, 43(2), B937-B960. 88 | 89 | **Members** 90 | - Shiyi BAI 91 | 92 | **GitHub repository**: https://github.com/shiyibai5315/RBE.jl 93 | 94 | ## Isometric Tensor Network States in Two Dimensions 95 | Reproduce Isometric Tensor Network States in Two Dimensions. 96 | 97 | **Members** 98 | - Qingyuan Wang 99 | - Longli Zheng 100 | 101 | **Github repository**: (https://github.com/qingwqy/IsoTNS.jl) -------------------------------------------------------------------------------- /4.computational-complexity/README.md: -------------------------------------------------------------------------------- 1 | # Computational Complexity and Quantum Computing 2 | 3 | ## Contents 4 | 1. Problem reduction 5 | 1. Reducing problem to the independent set problem on KSG ([Julia](https://github.com/QuEraComputing/UnitDiskMapping.jl)) 6 | 2. Combinatorial optimization problems, such as spin glass and hard-core lattice gas[^Wang2024] 7 | 1. Generic tensor networks ([Julia](https://github.com/QuEraComputing/GenericTensorNetworks.jl)) 8 | 3. Quantum circuit simulation by tensor network contraction ([Julia](https://docs.yaoquantum.org/dev/man/yao2einsum.html)) 9 | 10 | 11 | ## Reading 12 | - Book: The nature of computation[^Moore2011] 13 | - Review: A Tutorial on Formulating and Using QUBO Models[^Glover2019] 14 | - Article: Quantum optimization with arbitrary connectivity using Rydberg atom arrays[^Nguyen2023] 15 | 16 | ## Researchers in the field 17 | - [Pan Zhang](https://scholar.google.com/citations?user=MFnbrRUAAAAJ&hl=zh-CN) - Statistical Physics, Machine Learning, Message Passing Algorithms, Tensor Networks, Quantum Computing 18 | - [Hai-Jun Zhou](https://scholar.google.com/citations?user=j6fZctMAAAAJ&hl=zh-CN) - spin glass, optimization, polymer, complex network game 19 | - [Cristopher Moore](https://scholar.google.com/citations?user=p_837e0AAAAJ&hl=zh-CN&oi=sra) - complex networks, networks, quantum computing, phase transitions, quantum computation 20 | - [Zhengfeng Ji](https://scholar.google.com/citations?hl=zh-CN&user=2uXdu7AAAAAJ) - quantum information and computation 21 | 22 | ## Projects 23 | 24 | - Reproduce: one of the papers about efficient simulation of noisy quantum circuit with tensor networks[^Gao2021][^Shao2023] 25 | - Better tensor network contraction order finding algorithms[^Kalachev2021][^Gray2020]. 26 | - Tensor network based simulation of quantum circuits[^Pan2022] and the estimation of coherent error correction threshold. 27 | - Open question: The $\sqrt{n}$ reduction from the independent set problem on grid to a general independent set problem[^Liu2023][^Nguyen2023][^Glover2019]. 28 | - Open question: Computing 2D Fibonacci number[^Liu2023], 3D Ising model partition function. 29 | 30 | ## References 31 | [^Shao2023]: Shao, Y., Wei, F., Cheng, S., Liu, Z., 2023. Simulating Quantum Mean Values in Noisy Variational Quantum Algorithms: A Polynomial-Scale Approach. https://doi.org/10.48550/arXiv.2306.05804 32 | [^Gao2021]: Gao, X., Kalinowski, M., Chou, C.-N., Lukin, M.D., Barak, B., Choi, S., 2021. Limitations of Linear Cross-Entropy as a Measure for Quantum Advantage. https://doi.org/10.48550/arXiv.2112.01657 33 | [^Liu2023]: Liu, J.-G., Gao, X., Cain, M., Lukin, M.D., Wang, S.-T., 2023. Computing Solution Space Properties of Combinatorial Optimization Problems Via Generic Tensor Networks. SIAM J. Sci. Comput. 45, A1239–A1270. https://doi.org/10.1137/22M1501787 34 | [^Markov2008]: Markov, I.L., Shi, Y., 2008. Simulating Quantum Computation by Contracting Tensor Networks. SIAM J. Comput. 38, 963–981. https://doi.org/10.1137/050644756 35 | [^Pan2022]: Pan, F., Chen, K., Zhang, P., 2022. Solving the Sampling Problem of the Sycamore Quantum Circuits. Phys. Rev. Lett. 129, 090502. https://doi.org/10.1103/PhysRevLett.129.090502 36 | [^Wang2024]: Wang, Y., Zhang, Y.E., Pan, F., Zhang, P., 2024. Tensor Network Message Passing. Phys. Rev. Lett. 132, 117401. https://doi.org/10.1103/PhysRevLett.132.117401 37 | [^Moore2011]: Moore, Cristopher, and Stephan Mertens. The nature of computation. OUP Oxford, 2011. 38 | [^Glover2019]: Glover, F., Kochenberger, G., Du, Y., 2019. A Tutorial on Formulating and Using QUBO Models. 39 | [^Kalachev2021]: Kalachev, G., Panteleev, P., Yung, M.-H., 2021. Recursive Multi-Tensor Contraction for XEB Verification of Quantum Circuits 1–9. 40 | [^Gray2020]: Gray, J., Kourtis, S., 2020. Hyper-optimized tensor network contraction. 41 | [^Nguyen2023]: Nguyen, M.-T., Liu, J.-G., Wurtz, J., Lukin, M.D., Wang, S.-T., Pichler, H., 2023. Quantum Optimization with Arbitrary Connectivity Using Rydberg Atom Arrays. PRX Quantum 4, 010316. https://doi.org/10.1103/PRXQuantum.4.010316 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Scientific Computing Training Camp (Basic) 2 | May 27 to June 9, 2024 (14 days) at Hong Kong University of Science and Technology (Guangzhou). Not open for registration. 3 | 4 | During the 14 days, you will **implement an algorithm**, simulate a many-body system, and write a report. 5 | 6 | > Talk is cheap. Show me the code. - Linus Torvalds 7 | 8 | ## Topics 9 | 1. [Tensor Networks](1.tensor-networks/) 10 | 2. [AI for Science](2.ai4science/) 11 | 3. [Quantum Monte Carlo](3.quantum-monte-carlo/) 12 | 4. [Computational Complexity and Quantum Computing](4.computational-complexity/) 13 | 14 | ## Inputs 15 | 1. **Work on a project** under the chosen topic, in the meeting room, from 9:30AM-9:30PM. 16 | 2. **Bidaily presentation and report** at 4:00 PM, each group has 15min to report the project progress in the meeting. Write a report and submit it to this GitHub repo before 9:30PM. The report should be written in [Markdown](https://markdownguide.org/) format. 17 | 3. A final report in the Markdown format, which will be deployed to the [training camp website](https://codingthrust.github.io/trainingcamp/). 18 | 19 | Note: each participant (including instructors) has 48 hour leave. Quitting is only allowed at the first 3 days. 20 | 21 | ## Expected output 22 | 1. A final report in the Markdown format. 23 | 2. A code repository. 24 | 3. Some research projects (not guaranteed). 25 | 26 | ## Events 27 | **Mini-lectures** 28 | 1. Jin-Guo Liu, [Tensor network methods](./1.tensor-networks/tutorial/tensornetwork.md), May 27, 9:30AM 29 | 2. Ze-Cheng Gan, Differential equation models, algorithms and applications in Molecular Dynamics, May 29, 9:30AM 30 | 3. Qi Zhang, May 30, 9:30AM, Flow model for computational physics[^ml4p] (GitHub repo: https://github.com/zhangqi94/Flow) 31 | 32 | **Talks** 33 | 1. Yi-Jia Wang, June 3, 11AM, online, Tensor network message passing[^Wang2024] 34 | 3. Ji-Yao Chen, June 5, 11AM, W4-202, Tensor networks, from ground states to excitations and back 35 | 2. Xiu-Hao Deng, Juan 6, 2PM, Quantum random walk 36 | 4. Zhao-Long Gu, June 8, 11AM, Correlation Effects and Their Interplay with Magnetic Fields and Band Topology in Twisted Transition Metal Dichalcogenides 37 | 38 | ## Guide 39 | #### Conduct a survey 40 | You can use [Google Scholar](https://scholar.google.com/) to search for the researchers you are interested in, and follow them to get updated with the latest research. You can use [Zotero](https://www.zotero.org/) to manage your references. For more details, please refer to [this guide](0.intro/guides/conduct-survey.md). 41 | #### Technical writing 42 | The report in the Markdown format should be submitted to this repository, under the folder of the corresponding topic. Please check preview events (e.g. [this one](https://code.hkust-gz.edu.cn/jinguoliu/rydbergtrainingmaterials/-/tree/main/2.error-correction/reports?ref_type=heads)) for references. 43 | 44 | - [Guide: How to use AI to facilitate technical writing](0.intro/guides/report-writing.md) 45 | 46 | #### How to program? 47 | 48 | - You must use **git** to manage your code, and use **pull requests** to submit your code. Please refer to [this guide](https://book.jinguo-group.science/stable/chap1/git/) for more details. 49 | - **Code** ([Agile software development](https://en.wikipedia.org/wiki/Agile_software_development)), even if you do not understand the algorithm at all. 50 | - **Remove uncertainty**, you can get help from me, or the community, e.g. https://julialang.org/community/ 51 | - I want to ..., but I don't know how to start. 52 | - Is there any good example/existing code about... 53 | - Is it possible to help me review my code? Ref: [Blog: The Best Way to Do a Code Review on GitHub](https://linearb.io/blog/code-review-on-github) 54 | 55 | #### Logistics 56 | 57 | - Spaces that free to use: W1 4F-6F, maker space. 58 | - We use [Zulip@HKUST-GZ](http://zulip.hkust-gz.edu.cn/) stream: `#NumericTrainingCamp` for (formal) online communication. 59 | - We will have a WeChat group for informal communication. 60 | 61 | #### Technical support 62 | - Yusheng ZHAO 63 | - Yidai ZHANG 64 | 65 | ## Final resports 66 | 67 | - Yi-Dai Zhang, Huan-Hai Zhou 68 | https://github.com/YidaiZhang/TensorNetworkAD2.jl 69 | 70 | - Zhong-Yi Ni 71 | https://github.com/nzy1997/TensorQEC.jl 72 | 73 | - Xuan-Zhao Gao 74 | https://github.com/ArrogantGao/Notes-Gsoc2024 75 | 76 | - Hao-Jie Zhang 77 | https://github.com/lovemy569/cMPO.jl 78 | 79 | - Long-Li Zheng, Qing-Yuan Wang 80 | https://github.com/Br0kenSmi1e/isoTNS.jl 81 | 82 | - Yu-Sheng Zhao, Qing-Yun Qian 83 | https://github.com/exAClior/RGRDMT.jl 84 | 85 | - Xing-Yu Ren 86 | https://github.com/Phy-Ren/Variational-Monte-Carlo 87 | 88 | ## References 89 | [^Wang2024]: Wang, Y., Zhang, Y.E., Pan, F., Zhang, P., 2024. Tensor Network Message Passing. Phys. Rev. Lett. 132, 117401. https://doi.org/10.1103/PhysRevLett.132.117401 90 | [^ml4p]: Machine learning for physicists, https://github.com/wangleiphy/ml4p 91 | -------------------------------------------------------------------------------- /0.intro/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | theme : "black" 3 | transition: "fade" 4 | center: false 5 | height: 800 6 | --- 7 | 28 | 29 | # Road to become a numeric gangster 30 | 31 | --- 32 | 33 | ## How it works 34 | 35 | Repo: [https://github.com/CodingThrust/NumericTrainingCamp](https://github.com/CodingThrust/NumericTrainingCamp) 36 | 37 | --- 38 | 39 | ## Imagine: How can others help you? 40 | 41 | ![](images/2024-05-25-14-44-06.png){width=30%} 42 | 43 | --- 44 | 45 | ## Ask the right question 46 | 47 | ![](images/2024-05-25-14-08-37.png) 48 | ![](images/2024-05-25-14-47-02.png) 49 | 50 | --- 51 | 52 | ## Who can help you? 53 | 54 | - **Programming**: Yi-Dai ZHANG, Yu-Sheng ZHAO and Xuan-Zhao GAO 55 | - **Theory**: Qing-Yun QIAN and Zhong-Yi NI 56 | - General: Jin-Guo LIU 57 | 58 | --- 59 | 60 | ## Goals for today 61 | 62 | - I will introduce many-body computational methods and the projects. 63 | - Students will choose a project to work on. 64 | - Students set up the environment. 65 | 66 | --- 67 | 68 | ## Many-body systems 69 | 70 | We start from a Hamiltonian $H$ and solve the following problems: 71 | 72 | 1. Ground state 73 | 2. Thermal equilibrium 74 | 3. Time evolution 75 | 76 | Or without a Hamiltonian: 77 | 1. simulate a quantum circuit. 78 | 79 | --- 80 | 81 | ## Complexity classification 82 | 83 | Cubitt, T., Montanaro, A., 2016. Complexity Classification of Local Hamiltonian Problems. SIAM J. Comput. 45, 268–316. https://doi.org/10.1137/140998287 84 | 85 | --- 86 | 87 | ## NP-complete model 88 | 89 | Let $G = (V, E)$ be a graph. The transverse field Ising mdoel (e.g. Rydberg atoms array without Rabi pulse) is NP-complete. 90 | $$ 91 | H = - \sum_{i \in V} Δ_i n_{r_i} + \sum_{(i, j) \in E}V_{ij} n_{r_i} n_{r_j} 92 | $$ 93 | 94 | *Unlikely to have a polynomial-time algorithm.* 95 | 96 | --- 97 | 98 | ## Stoquastic models 99 | Transverse field Ising model (e.g. 2-level model of Rydberg atoms array) 100 | $$ 101 | H = -J \sum_{(i, j) \in E} Z_i Z_j - h \sum_{j\in V} X_j 102 | $$ 103 | 104 | *Absence of sign problem in quantum Monte Carlo simulations.* 105 | 106 | --- 107 | 108 | ## QMA complete model 109 | 110 | Heisenberg model and 3-level model of Rydberg atoms array 111 | 112 | $$ 113 | H = \sum_{(i, j) \in E} J_{ij}\mathbf{S}_i \cdot \mathbf{S}_j 114 | $$ 115 | 116 | Ref: [3-level model of Rydberg atoms array](https://queracomputing.github.io/Bloqade.jl/dev/3-level/) 117 | 118 | *Their low energy subspace can simulate any other quantum system.* 119 | 120 | --- 121 | 122 | ## Notes 123 | 124 | The complexity classification is for the hardest problem in the class. 125 | 126 | --- 127 | 128 | ## Good starting point: Exactly solvable models 129 | 130 | ![](images/fig1.svg) 131 | 132 | --- 133 | 134 | ## Weakly entangled systems 135 | - Solvable by tensor networks. 136 | 137 | - Example: AKLT Hamiltonian 138 | $$ 139 | H = \sum_{i} \mathbf{S}_i \cdot \mathbf{S}\_{i+1} + \frac{1}{3}(\mathbf{S}_i \cdot \mathbf{S}\_{i+1})^2 140 | $$ 141 | 142 | Ref: Schollwock, 2010, Page 31 143 | 144 | --- 145 | 146 | ## Integrable models: Bethe ansatz 147 | E.g. translational invariant Heisenberg model 148 | 149 | ![](images/bethe.png){width=50%} 150 | 151 | Ref: Murg, V., Korepin, V.E., Verstraete, F., 2012. Algebraic Bethe ansatz and tensor networks. 152 | 153 | --- 154 | 155 | ## Integrable models: Toric code model 156 | 157 | ![](images/toriccode.png) 158 | 159 | $$ 160 | H = -\sum_{s} A_s - \sum_{p} B_p 161 | $$ 162 | 163 | --- 164 | 165 | where $A_p$ and $B_s$ are plaquette and star operators: 166 | $$ 167 | A_s = \prod_{j\in star} Z_j, \quad B_p = \prod_{j\in plaquette} X_j 168 | $$ 169 | 170 | Ref: The Toric Code, Paul Herringer 171 | 172 | The ground state is representable by a Clifford circuit. 173 | 174 | --- 175 | 176 | ## Integrable models: Free fermion models 177 | 178 | - XY model 179 | $$H = -\sum_{i} (X_i X_{i+1} + Y_i Y_{i+1})$$ 180 | Solvable by Jordan-Wigner transformation 181 | 182 | - Kitaev chain, Solvable by Majorana fermions 183 | 184 | --- 185 | 186 | ## Continue 187 | 188 | - Go through the provided topics (in the [README](../README.md)). 189 | - Students decide which project to work on before 2PM. Students choosing the same project will form a group. 190 | - Projects are mainly about how to reproduce the results of a paper. 191 | - Feel free to add new projects to the pool. 192 | - Goal: 193 | - Each group submit a [project registry](../projects/README.md). 194 | - Get familiar with the workflow. 195 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/plots.jl: -------------------------------------------------------------------------------- 1 | using LuxorGraphPlot, Luxor 2 | using LaTeXStrings, MathTeXEngine 3 | 4 | function solvable_quantum() 5 | nodestore() do ns 6 | qm = circle!(ns, (0.0, 0.0), 250) 7 | arealaw = ellipse!(ns, (60.0, -100.0), 180, 90) 8 | signfree = ellipse!(ns, (-60.0, -100.0), 180, 90) 9 | small = ellipse!(ns, (0.0, -160.0), 90, 180) 10 | integrable = ellipse!(ns, (0.0, -40.0), 90, 180) 11 | with_nodes(ns; filename=joinpath(@__DIR__, "fig1.svg")) do 12 | stroke(qm) 13 | fontsize(24) 14 | text("Quantum Wave Function", offset(qm, (0, 150))) 15 | fontsize(16) 16 | stroke(arealaw) 17 | text("Weakly entangled", offset(arealaw, (20, 0))) 18 | stroke(small) 19 | text("Small", small) 20 | stroke(integrable) 21 | text("Integrable", integrable) 22 | end 23 | end 24 | end 25 | 26 | solvable_quantum() 27 | 28 | function diagram_numeric_methods() 29 | nodestore() do ns 30 | ed = box!(ns, (0.0, -100.0), 120, 50; smooth=10) 31 | tn = box!(ns, (0.0, 0.0), 120, 50; smooth=10) 32 | mc = box!(ns, (150.0, 0.0), 120, 50; smooth=10) 33 | md = box!(ns, (0.0, 100.0), 120, 50; smooth=10) 34 | with_nodes(ns) do 35 | stroke(ed) 36 | text("Exact Diagonalization", ed) 37 | stroke(tn) 38 | text("Tensor Network", tn) 39 | stroke(mc) 40 | text("Monte Carlo", mc) 41 | stroke(md) 42 | text("Molecular Dynamics", md) 43 | end 44 | end 45 | end 46 | 47 | diagram_numeric_methods() 48 | 49 | using OMEinsum, GenericTensorNetworks 50 | 51 | function plot_net(code, tensors::Vector{<:Pair}, label_locs, fname) 52 | config = GraphDisplayConfig(; edge_line_width=2.0, vertex_stroke_color="transparent", fontsize=14, fontface="Georgia") 53 | filename = joinpath(@__DIR__, fname) 54 | show_einsum(code; 55 | tensor_locs=getfield.(tensors, :second), 56 | tensor_texts=first.(tensors), 57 | label_locs, 58 | config, 59 | filename) 60 | end 61 | 62 | function plot_matmul() 63 | plot_net(ein"ij,jk->ik", 64 | ["A" => (0, 0), "B" => (100, 0)], 65 | [(-50, 0), (50, 0), (150, 0)], 66 | "matmul.svg") 67 | end 68 | plot_matmul() 69 | 70 | function plot_svd() 71 | plot_net(ein"ij,j,jk->ik", 72 | ["U" => (0, 0), "S" => (50, -50), "V" => (100, 0)], 73 | [(-50, 0), (50, 0), (150, 0)], 74 | "svd.svg") 75 | end 76 | plot_svd() 77 | 78 | function plot_traceperm() 79 | plot_net(ein"ij,jk,ki->", 80 | ["A" => (0, 0), "B" => (50, -50), "C" => (100, 0)], 81 | [(50, 0), (25, -25), (75, -25)], 82 | "traceperm.svg") 83 | end 84 | plot_traceperm() 85 | 86 | function plot_mps() 87 | DX = 100 88 | plot_net(ein"ia,ajb,bkc,cld,dm->ijklm", 89 | ["A" => (0, 0), "B" => (DX, 0), "C" => (2DX, 0), "D" => (3DX, 0), "E" => (4DX, 0)], 90 | [(0, -50), (0.5DX, 0), (DX, -50), (1.5DX, 0), (2DX, -50), (2.5DX, 0), (3DX, -50), (3.5DX, 0), (4DX, -50)], 91 | "mps.svg") 92 | end 93 | 94 | plot_mps() 95 | 96 | function plot_inner() 97 | DX = 100 98 | plot_net(ein"ia,ajb,bkc,cld,dm,iα,αjβ,βkγ,γlδ,δm->", 99 | ["A" => (0, 0), "B" => (DX, 0), "C" => (2DX, 0), "D" => (3DX, 0), "E" => (4DX, 0), 100 | "A*" => (0, -100), "B*" => (DX, -100), "C*" => (2DX, -100), "D*" => (3DX, -100), "E*" => (4DX, -100)], 101 | [ 102 | (0, -50), (0.5DX, 0), (DX, -50), (1.5DX, 0), (2DX, -50), (2.5DX, 0), (3DX, -50), (3.5DX, 0), (4DX, -50), 103 | (0.5DX, -100), (1.5DX, -100), (2.5DX, -100), (3.5DX, -100), 104 | ], 105 | "inner.svg") 106 | end 107 | 108 | plot_inner() 109 | 110 | function plot_tebd() 111 | DX = 100 112 | DY = 70 113 | nodestore() do ns 114 | circles = [circle!(ns, (i*DX, 0), 20) for i=0:4] 115 | boxes1 = [box!(ns, (i*DX, -DY), 140, 40) for i=0.5:2:3.5] 116 | boxes2 = [box!(ns, (i*DX, -2DY), 140, 40) for i=1.5:2:4] 117 | dots = [dot!(ns, (i*DX, -3DY)) for i=0:4] 118 | with_nodes(ns; filename=joinpath(@__DIR__, "tebd.svg")) do 119 | fill.(circles) 120 | fill.(boxes1) 121 | fill.(boxes2) 122 | for i=1:4 123 | line(circles[i], bottomalign(boxes1[(i-1)÷2+1], circles[i])) 124 | end 125 | line(topalign(boxes1[1], circles[2]), bottomalign(boxes2[1], circles[2])) 126 | line(topalign(boxes1[2], circles[3]), bottomalign(boxes2[1], circles[3])) 127 | line(topalign(boxes1[2], circles[4]), bottomalign(boxes2[2], circles[4])) 128 | line(circles[5], bottomalign(boxes2[2], circles[5])) 129 | for i=1:4 line(circles[i], circles[i+1]) end 130 | line(topalign(boxes1[1], dots[1]), dots[1]) 131 | line(topalign(boxes2[1], dots[2]), dots[2]) 132 | line(topalign(boxes2[1], dots[3]), dots[3]) 133 | line(topalign(boxes2[2], dots[4]), dots[4]) 134 | line(topalign(boxes2[2], dots[5]), dots[5]) 135 | sethue("white") 136 | fontsize(16) 137 | text(L"e^{-ih_{12}d t}", boxes1[1]) 138 | text(L"e^{-ih_{34}d t}", boxes1[2]) 139 | text(L"e^{-ih_{23}d t}", boxes2[1]) 140 | text(L"e^{-ih_{45}d t}", boxes2[2]) 141 | text.([LaTeXString("\$A_$i\$") for i=1:5], circles) 142 | end 143 | end 144 | end 145 | 146 | plot_tebd() -------------------------------------------------------------------------------- /1.tensor-networks/README.md: -------------------------------------------------------------------------------- 1 | # Tensor Networks (Quantum many-body) 2 | 3 | ## Contents 4 | 1. Ground state finding 5 | 1. DMRG ([Julia](https://github.com/CodingThrust/SimpleTDVP.jl)) 6 | 2. Corner transfer matrix renormalization group (CTMRG) ([Julia](https://github.com/under-Peter/TensorNetworkAD.jl), [Python](https://github.com/TensorBFS/dTRG)) 7 | 3. variational uniform Matrix Product State algorithm (VUMPS) ([Julia](https://github.com/Jutho/TNSchool2018)) 8 | 2. Finite temperature methods 9 | 1. Continuous matrix product operator (CMPO) ([Python](https://github.com/TensorBFS/cMPO)) 10 | 3. Time evolution 11 | 1. Time-evolving block decimation (TEBD) ([Python](https://github.com/tenpy/tenpy)) 12 | 2. Time-dependent variational principle (TDVP) ([Julia](https://github.com/Jutho/TNSchool2018)) 13 | 4. Classical tensor networks 14 | 1. Tensor renormalization group (TRG) ([Julia](https://github.com/under-Peter/TensorNetworkAD.jl), [Python](https://github.com/TensorBFS/dTRG)) 15 | 16 | ## Reading 17 | - Review: A practical introduction to tensor networks: Matrix product states and projected entangled pair states[^Orus2014]. 18 | - Review: The density-matrix renormalization group in the age of matrix product states[^Schollwock2011]. 19 | - Review: Tangent-space methods for uniform matrix product states[^Vanderstraeten2019]. 20 | - Website: [Tensor Network website](https://tensornetwork.org/). 21 | - Book: Density Matrix and Tensor Network Renormalization[^Tao2023]. 22 | 23 | ## Researchers in the field 24 | - [Jutho Haegeman](https://scholar.google.com/citations?hl=zh-CN&user=yfHe3OAAAAAJ) - Quantum Many Body Physics, Tensor Network Methods 25 | - [Ignacio Cirac](https://scholar.google.com/citations?hl=zh-CN&user=gPGlTbgAAAAJ) - quantum optics, quantum information, many-body systems 26 | - [Frank Pollmann](https://scholar.google.com/citations?hl=zh-CN&user=hlf61gwAAAAJ) - Condensed Matter Theory 27 | - [Edwin Miles Stoudenmire](https://scholar.google.com/citations?hl=zh-CN&user=DLFxevAAAAAJ) - Condensed Matter Theory, Computational Physics, Tensor Network Methods, DMRG 28 | - [Shuo Yang](https://scholar.google.com/citations?hl=zh-CN&user=nemjDVIAAAAJ) - condensed matter theory, quantum physics, tensor networks 29 | - [Hiroshi Shinaoka](https://scholar.google.com/citations?hl=zh-CN&user=NT-EiksAAAAJ) - Condensed matter physics, computational physics, strongly correlated electrons 30 | - [Steven White](https://scholar.google.com/citations?user=tXebds4AAAAJ&hl=zh-CN&oi=ao), DMRG, condensed matter physics 31 | - [Frank Verstraete](https://scholar.google.com/citations?hl=zh-CN&user=wBrDPIEAAAAJ), Quantum Physics, Entanglement, Many-Body Physics, Quantum Computation, Tensor Networks 32 | - [Norbert Schuch](https://scholar.google.com/citations?user=ZHmDt48AAAAJ&hl=zh-CN), Quantum Many-Body Physics, Quantum Information Theory 33 | 34 | ## Projects 35 | 36 | * Reproduce: Isometric Tensor Network States in Two Dimensions[^Zaletel2019]. 37 | * Reproduce: Continuous matrix product operator approach to finite temperature quantum states[^Tang2020]. 38 | * Reproduce: Lower Bounds on Ground-State Energies of Local Hamiltonians through the Renormalization Group[^Kull2024]. 39 | * Reproduce: Differentiable Programming Tensor Networks[^Liao2019]. 40 | * Reproduce: Variational optimization algorithms for uniform matrix product states[^Zauner2017] 41 | 42 | ## References 43 | [^Zaletel2019]: Zaletel, M.P., Pollmann, F., 2019. Isometric Tensor Network States in Two Dimensions. 44 | [^Huang2018]: Huang, R.-Z., Liao, H.-J., Liu, Z.-Y., Xie, H.-D., Xie, Z.-Y., Zhao, H.-H., Chen, J., Xiang, T., 2018. A generalized Lanczos method for systematic optimization of tensor network states. Chinese Phys. B 27, 070501. https://doi.org/10.1088/1674-1056/27/7/070501 45 | [^Schollwock2011]: Schollwöck, U., 2011. Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of Physics 326, 96–192. https://doi.org/10.1016/j.aop.2010.09.012 46 | [^Vanderstraeten2019]: Vanderstraeten, L., Haegeman, J., Verstraete, F., 2019. Tangent-space methods for uniform matrix product states. SciPost Physics Lecture Notes 7, 1–77. https://doi.org/10.21468/scipostphyslectnotes.7 47 | [^Orus2014]: Orús, R., 2014. A practical introduction to tensor networks: Matrix product states and projected entangled pair states. Annals of Physics 349, 117–158. https://doi.org/10.1016/j.aop.2014.06.013 48 | [^Tao2023]: Xiang, Tao. Density Matrix and Tensor Network Renormalization. Cambridge University Press, 2023. 49 | [^Hubig2017]: Hubig, C., McCulloch, I.P., Schollwöck, U., 2017. Generic Construction of Efficient Matrix Product Operators. Phys. Rev. B 95, 035129. https://doi.org/10.1103/PhysRevB.95.035129 50 | [^Xu2024]: Xu, Y., Hasik, J., Ponsioen, B., Nevidomskyy, A.H., 2024. Simulating Spin Dynamics of Supersolid States in a Quantum Ising Magnet. https://doi.org/10.48550/arXiv.2405.05151 51 | [^Kull2024]: Kull, I., Schuch, N., Dive, B., Navascués, M., 2024. Lower Bounds on Ground-State Energies of Local Hamiltonians through the Renormalization Group. Phys. Rev. X 14, 021008. https://doi.org/10.1103/PhysRevX.14.021008 52 | [^Liao2019]: Liao, H., Liu, J., Wang, L., Xiang, T., 2019. Differentiable Programming Tensor Networks. Physical Review X 9, 31041. https://doi.org/10.1103/PhysRevX.9.031041 53 | [^Zauner2017]: Zauner-Stauber, V., Vanderstraeten, L., Fishman, M.T., Verstraete, F., Haegeman, J., 2017. Variational optimization algorithms for uniform matrix product states. npj Quantum Information 6, 1–32. https://doi.org/10.1103/PhysRevB.97.045145 54 | [^Tang2020]: Tang, W., Tu, H.-H., Wang, L., 2020. Continuous matrix product operator approach to finite temperature quantum states. https://doi.org/10.1103/PhysRevLett.125.170604 -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/code/tutorial.jl: -------------------------------------------------------------------------------- 1 | using OMEinsum, Test, LinearAlgebra, Yao 2 | 3 | # example 1.1: trace-permutation 4 | code_traceperm = ein"ij,jk,ki->" 5 | 6 | @testset "trace perm" begin 7 | A, B, C = rand(3, 3), rand(3, 3), rand(3, 3) 8 | res1 = code_traceperm(A, B, C) 9 | @test res1[] ≈ tr(A * B * C) 10 | end 11 | 12 | # Example 1.2: SVD decomposition 13 | code_svd = ein"ij,j,jk->ik" 14 | @testset "SVD" begin 15 | A = rand(3, 3) 16 | U, S, V = svd(A) 17 | res2 = code_svd(U, S, V') 18 | @test res2 ≈ A 19 | end 20 | 21 | # Example 1.3: Contraction order 22 | code_order = ein"il,l,kjl,kmn,jn->im" 23 | size_dict = uniformsize(code_order, 100) 24 | contraction_complexity(code_order, size_dict) 25 | 26 | opt_order1 = ein"(il,l),((kjl,kmn),jn)->im" 27 | contraction_complexity(opt_order1, size_dict) 28 | 29 | opt_order2 = ein"(il,l),(kjl,(kmn,jn))->im" 30 | contraction_complexity(opt_order2, size_dict) 31 | 32 | opt_order3 = optimize_code(code_order, size_dict, TreeSA()) 33 | contraction_complexity(opt_order3, size_dict) 34 | 35 | # Example 2.1: ghz state 36 | mutable struct IndexStore 37 | n::Int 38 | IndexStore(n::Int=0) = new(n) 39 | end 40 | newindex!(store::IndexStore) = store.n += 1 41 | 42 | struct MPS{T} 43 | tensors::Vector{Array{T, 3}} 44 | end 45 | function ghz_mps(n::Int) 46 | t1 = zeros(ComplexF64, 1, 2, 2); t1[1, 1, 1] = t1[1, 2, 2] = 1 47 | t2 = zeros(ComplexF64, 2, 2, 2); t2[1, 1, 1] = t2[2, 2, 2] = 1 48 | t3 = zeros(ComplexF64, 2, 2, 1); t3[1, 1, 1] = t3[2, 2, 1] = 1/√2 49 | tensors = [t1, fill(t2, n-2)..., t3] 50 | return MPS(tensors) 51 | end 52 | 53 | function code_mps(n::Int) 54 | store = IndexStore() 55 | ixs = Vector{Int}[] 56 | iy = Vector{Int}() 57 | right = newindex!(store) 58 | for _ = 1:n 59 | left = right 60 | physical = newindex!(store) 61 | right = newindex!(store) 62 | push!(ixs, [left, physical, right]) 63 | push!(iy, physical) 64 | end 65 | return EinCode(ixs, iy) 66 | end 67 | 68 | code_mps(5) 69 | 70 | @testset "ghz state" begin 71 | n = 10 72 | rawmps = code_mps(n) 73 | ghz = ghz_mps(n) 74 | code = optimize_code(rawmps, uniformsize(rawmps, 2), TreeSA()) 75 | v1 = vec(code(ghz.tensors...)) 76 | v2 = statevec(ghz_state(n)) 77 | @test v1 ≈ v2 78 | end 79 | 80 | # Example 2.2: Canonical form 81 | function truncated_svd(tmat::AbstractMatrix, dmax::Int, atol::Real) 82 | u, s, v = LinearAlgebra.svd(tmat) 83 | dmax = min(searchsortedfirst(s, atol, rev=true), dmax, length(s)) 84 | return u[:, 1:dmax], s[1:dmax], v'[1:dmax, :], sum(s[dmax+1:end]) 85 | end 86 | 87 | entropy(p::Vector) = -sum(x->x * log(x), p) 88 | 89 | function left_canonicalize!(mps::MPS) 90 | for i = 1:length(mps.tensors)-1 91 | left, right = mps.tensors[i], mps.tensors[i+1] 92 | mleft, mright = reshape(left, :, size(left, 3)), reshape(right, size(right, 1), :) 93 | u, s, v, trunc = truncated_svd(mleft * mright, size(mleft, 2), 0) 94 | @info "entropy = $(entropy(s .^ 2))" 95 | mps.tensors[i] = reshape(u, size(left, 1), size(left, 2), size(u, 2)) 96 | mps.tensors[i+1] = reshape(Diagonal(s) * v, size(v, 1), size(right, 2), size(right, 3)) 97 | mps.tensors[i+1] = permutedims(mps.tensors[i+1], (2, 1, 3)) 98 | end 99 | return mps 100 | end 101 | 102 | @testset "canonical form" begin 103 | n = 5 104 | ghz = ghz_mps(n) 105 | left_canonicalize!(ghz) 106 | left_env = ones(ComplexF64, 1, 1) 107 | for i = 1:n 108 | left_env = ein"(ab,aij),bik->jk"(left_env, conj.(ghz.tensors[i]), ghz.tensors[i]) 109 | @test left_env ≈ Matrix{ComplexF64}(I, size(left_env)...) 110 | end 111 | end 112 | 113 | # Example 2.3: Entanglement entropy 114 | function right_canonicalize!(mps::MPS) 115 | for i = length(mps.tensors)-1:-1:1 116 | left, right = mps.tensors[i], mps.tensors[i+1] 117 | mleft, mright = reshape(left, :, size(left, 3)), reshape(right, size(right, 1), :) 118 | u, s, v, trunc = truncated_svd(mleft * mright, size(mleft, 2), 0) 119 | @info "entropy = $(entropy(s .^ 2))" 120 | mps.tensors[i] = reshape(u * Diagonal(s), size(left, 1), size(left, 2), size(u, 2)) 121 | mps.tensors[i+1] = reshape(v, size(v, 1), size(right, 2), size(right, 3)) 122 | mps.tensors[i+1] = permutedims(mps.tensors[i+1], (2, 1, 3)) 123 | end 124 | return mps 125 | end 126 | 127 | ghz = ghz_mps(5) 128 | left_canonicalize!(ghz) 129 | right_canonicalize!(ghz) 130 | 131 | # Example 2.4: Fidelity and expectation value 132 | function code_dot(n::Int) 133 | store = IndexStore() 134 | ixs_bra = Vector{Int}[] 135 | ixs_ket = Vector{Int}[] 136 | firstidx_bra = newindex!(store) 137 | previdx_bra = firstidx_bra 138 | firstidx_ket = newindex!(store) 139 | previdx_ket = firstidx_ket 140 | for k = 1:n 141 | physical = newindex!(store) 142 | nextidx_bra = k == n ? firstidx_bra : newindex!(store) 143 | nextidx_ket = k == n ? firstidx_ket : newindex!(store) 144 | push!(ixs_bra, [previdx_bra, physical, nextidx_bra]) 145 | push!(ixs_ket, [previdx_ket, physical, nextidx_ket]) 146 | previdx_bra = nextidx_bra 147 | previdx_ket = nextidx_ket 148 | end 149 | ixs = [ixs_bra..., ixs_ket...] 150 | return DynamicEinCode(ixs, Int[]) 151 | end 152 | 153 | @testset "fidelity" begin 154 | n = 5 155 | bra = ghz_mps(n) 156 | ket = ghz_mps(n) 157 | rawcode = code_dot(n) 158 | size_dict = OMEinsum.get_size_dict(rawcode.ixs, [bra.tensors..., ket.tensors...]) 159 | code = optimize_code(rawcode, size_dict, TreeSA()) 160 | @test code(conj.(bra.tensors)..., ket.tensors...)[] ≈ 1 161 | end 162 | 163 | # Example 2.6: Expectation value 164 | function code_correlation(n::Int, opindices::Vector{Int}) 165 | @assert issorted(opindices) 166 | store = IndexStore() 167 | ixs_bra = Vector{Int}[] 168 | ixs_ket = Vector{Int}[] 169 | ixs_ops = Vector{Int}[] 170 | firstidx_bra = newindex!(store) 171 | previdx_bra = firstidx_bra 172 | firstidx_ket = newindex!(store) 173 | previdx_ket = firstidx_ket 174 | for k = 1:n 175 | if k in opindices 176 | physical_bra = newindex!(store) 177 | physical_ket = newindex!(store) 178 | push!(ixs_ops, [physical_bra, physical_ket]) 179 | else 180 | physical_ket = physical_bra = newindex!(store) 181 | end 182 | nextidx_bra = k == n ? firstidx_bra : newindex!(store) 183 | nextidx_ket = k == n ? firstidx_ket : newindex!(store) 184 | push!(ixs_bra, [previdx_bra, physical_bra, nextidx_bra]) 185 | push!(ixs_ket, [previdx_ket, physical_ket, nextidx_ket]) 186 | previdx_bra = nextidx_bra 187 | previdx_ket = nextidx_ket 188 | end 189 | ixs = [ixs_bra..., ixs_ket..., ixs_ops...] 190 | return DynamicEinCode(ixs, Int[]) 191 | end 192 | 193 | @testset "expect" begin 194 | n = 5 195 | bra = ghz_mps(n) 196 | ket = ghz_mps(n) 197 | for i = 1:n 198 | rawcode = code_correlation(n, [i]) 199 | size_dict = OMEinsum.get_size_dict(rawcode.ixs, [bra.tensors..., ket.tensors..., Matrix(X)]) 200 | code = optimize_code(rawcode, size_dict, TreeSA()) 201 | res = code(conj.(bra.tensors)..., ket.tensors..., Matrix(X))[] 202 | @info "⟨X$i⟩ = $res" 203 | @test res ≈ 0 204 | end 205 | end 206 | 207 | # Example 2.5: Sampling 208 | # https://journals.aps.org/prx/abstract/10.1103/PhysRevX.8.031012 209 | using StatsBase 210 | function sample_mps!(mps::MPS) 211 | n = length(mps.tensors) 212 | left_canonicalize!(mps) 213 | right_env = ones(ComplexF64, 1, 1) 214 | res = zeros(Int, n) 215 | for i = n:-1:1 216 | p = ein"iaj,(iak,jk)->a"(conj(mps.tensors[i]), mps.tensors[i], right_env) 217 | res[i] = sample([0,1], Weights(abs.(p) |> normalize!)) 218 | slice = mps.tensors[i][:, res[i]+1, :] 219 | right_env = ein"aj,(bk,jk)->ab"(conj(slice), slice, right_env) 220 | end 221 | return res 222 | end 223 | 224 | @testset "sampling" begin 225 | n = 5 226 | ghz = ghz_mps(n) 227 | data = sample_mps!(ghz) 228 | @test data == ones(Int, n) || data == zeros(Int, n) 229 | end -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/tensornetwork.md: -------------------------------------------------------------------------------- 1 | # Tensor networks 2 | 3 | ## 1. Mathematic foundation 4 | 5 | ### Definition 6 | A tensor network is a triple $\{\Lambda, \{T^{(i)}_{\sigma_i}\}, \sigma_0\}$[^Roa2024], where 7 | - $\Lambda$ is a set of indices, 8 | - $\{T^{(i)}_{\sigma_i}\}$ is a set of tensors and the associated indices, and 9 | - $\sigma_0$ is the output indices. 10 | 11 | The contraction of a tensor network is defined as 12 | ```math 13 | {\rm con}(\Lambda, \{T^{(i)}_{\sigma_i}\}, \sigma_0) = \sum_{\Lambda\setminus\sigma_0} \prod_{i=1}^m T^{(i)}_{\sigma_i} 14 | ``` 15 | 16 | ### Diagrammatic representation 17 | We use a node to denote a tensor and a line to denote an index. 18 | #### Example 1.1: Trace Permutation 19 | Diagram: 20 | ![](plots/traceperm.svg) 21 | 22 | Math: 23 | ```math 24 | {\rm con}(\{i, j, k\}, \{A_{ij}, B_{jk}, C_{ki}\}, \{\}) 25 | ``` 26 | Julia: 27 | ```julia 28 | ein"ij,jk,ki->"(A, B, C) 29 | ``` 30 | #### Example 1.2: SVD decomposition 31 | Diagram: 32 | ![](plots/svd.svg) 33 | 34 | Math: 35 | ```math 36 | {\rm con}(\{i, j, k\}, \{U_{ij}, S_{j}, V_{jk}\}, \{i, k\}) 37 | ``` 38 | 39 | Julia: 40 | ```julia 41 | ein"ij,j,jk->ik"(U, S, V) 42 | ``` 43 | 44 | ### Contraction order 45 | 1. A good contraction order reduces: space complexity, time complexity and read-write complexity 46 | 2. The space complexity of a contraction order is related to tree width in graph theory 47 | 3. Algorithms to find the optimal contraction order, Please check: https://github.com/TensorBFS/OMEinsumContractionOrders.jl 48 | 49 | #### Example 1.3: Contraction order 50 | 51 | 52 | Q1: What is the Julia code for the above diagram? 53 | $$ 54 | \begin{align} 55 | \begin{split} 56 | &{\rm con}(\{i,j,k,l,m,n\}, \\ 57 | & \quad\quad\{A_{\{i, l\}}, B_{\{l\}}, C_{\{k, j, l\}}, D_{\{k, m, n\}}, E_{\{j, n\}}\},\\ 58 | & \quad\quad\{i,m\}) \\ 59 | & =\sum_{j,k,l,n}A_{\{i,l\}} B_{\{l\}} C_{\{k,l\}} D_{\{k, m\}} E_{\{j, n\}}. 60 | \end{split} 61 | \end{align} 62 | $$ 63 | 64 | Q2: Given the contraction tree below, what is the corresponding time complexity, space complexity and read-write complexity? 65 | 66 | 67 | 68 | *Slicing technique* can be used to reduce the space complexity of the contraction order. 69 | 70 | #### Example 3: Fast Fourier Transform (FFT) 71 | - https://book.jinguo-group.science/stable/chap3/fft/ 72 | - https://zhuanlan.zhihu.com/p/696638919 73 | 74 | 75 | ## 2. Matrix Product States (MPS) 76 | 77 | A matrix product state is a tensor network representation of a quantum state. 78 | 79 | ![](plots/mps.svg) 80 | 81 | Q: What is the rank of the above MPS? 82 | Q: Let the virtual bond dimension be $D$, what is the space complexity of the MPS? 83 | 84 | 1. Example: product state 85 | 2. Example: GHZ state 86 | 3. Example: AKLT state (Ref. [^Schollwock2010] P31) 87 | 88 | ### Entanglement entropy and the area law 89 | 1. Every multipartite quantum state has a Schmidt decomposition 90 | ```math 91 | \ket{\psi} = \sum_{i} \lambda_i \ket{i}_A \ket{i}_B,\\ 92 | \sum_{i} \lambda_i^2 = 1, \lambda_i \geq 0. 93 | ``` 94 | 2. Schmidt decomposition can be related to singular value decomposition (SVD). 95 | 3. The entanglement entropy is defined as 96 | ```math 97 | S = -\sum_i \lambda_i^2 \log_2 \lambda_i^2. 98 | ``` 99 | 4. Reduced density matrix - the tensor network representation 100 | ```math 101 | \rho_A = \text{Tr}_B \ket{\psi}\bra{\psi}. 102 | ``` 103 | 5. The eigenvalues of the reduced density matrix are the squares of the Schmidt coefficients. 104 | 105 | 106 | 1. Schmidt decomposition 107 | 2. Systems with area law 108 | 3. Compression: How does truncation error relate to the expectation value? 109 | ### Fidelity & expectation value 110 | 1. Norm of the state 111 | ![](plots/inner.svg) 112 | 2. Reduced density matrix 113 | ### Canonical form and Vidal form 114 | ### Time evolution 115 | 1. Baker–Campbell–Hausdorff (BCH) formula and Trotter decomposition 116 | The dual of the BCH formula is the Zassenhaus formula 117 | ```math 118 | e^{t(X+Y)}=e^{tX}~e^{tY}~e^{-{\frac {t^{2}}{2}}[X,Y]}~e^{{\frac {t^{3}}{6}}(2[Y,[X,Y]]+[X,[X,Y]])}~e^{{\frac {-t^{4}}{24}}([[[X,Y],X],X]+3[[[X,Y],X],Y]+3[[[X,Y],Y],Y])}\cdots 119 | ``` 120 | When $dt$ is small, the first order Trotter decomposition is accurate 121 | ```math 122 | e^{dt(X+Y)} \approx e^{dtX} e^{dtY} 123 | ``` 124 | 2. Time-evolving block decimation (TEBD) 125 | Consider the time evolution of a local Hamiltonian 126 | ```math 127 | H = \sum_i h_{i,i+1} 128 | ``` 129 | where $h_{i, i+1}$ is a local Hamiltonian. The time evolution operator is 130 | ```math 131 | U(dt) = e^{-iHdt} \approx \prod_i e^{-ih_{i,i+1} dt} 132 | ``` 133 | 134 | ![](plots/tebd.svg) 135 | 136 | ### Video 137 | 138 | - [Norbert Schuch: Matrix product states and tensor networks (I)](https://youtu.be/W_IBEAzqm4U?si=MWV_qVt_JmA6HsNl) 139 | - [Norbert Schuch: Matrix product states and tensor networks (II)](https://youtu.be/yLpWKvk2fzY?si=J0QzYIZggQFRQ-nL) 140 | - [Norbert Schuch - Lower bounding ground state energies through renormalization and tensor networks](https://youtu.be/eGpDw8tVG3c?si=GVuypEvLRL2wCChD) 141 | - [Tutorial on Tensor Networks and Quantum Computing with Miles Stoudenmire](https://www.youtube.com/watch?v=fq3_7vBcj3g&t=538s) 142 | 143 | ### Automatic differentiation 144 | 145 | *Differentiating a tensor in a tensor network contraction is equivalent to removing the tensor.* 146 | 147 | Adjoint: 148 | ```math 149 | \overline{x} = \frac{\partial \mathcal{L}}{\partial x} 150 | ``` 151 | where $\mathcal{L}$ is the loss function and $x$ is a vector. 152 | 153 | Differential form: 154 | ```math 155 | \delta \mathcal{L} = \overline{x}^T \delta x 156 | ``` 157 | 158 | Backward rule of einsum: 159 | Consider 160 | ```math 161 | T^{(0)} = {\rm con}(\Lambda, \{T^{(i)}_{\sigma_i} \mid i=1,\ldots,m\}, \sigma_0) 162 | ``` 163 | where $\Lambda = \cup_{i=0}^m \sigma_i$ is a set of indices, $T^{(i)}$ are tensors, and $\sigma_0$ is the output index. 164 | ```math 165 | \delta T^{(0)} = \sum_k{\rm con}(\Lambda, \{T^{(i)}_{\sigma_i} \mid i=1,\ldots,m, i\neq k\} \cup \{\delta T^{(k)}_{\sigma_k}\}, \sigma_0) 166 | ``` 167 | The differential form is: 168 | ```math 169 | \delta \mathcal{L} = \sum_{k=1}^m{\rm con}(\sigma_k, \{\delta T^{(k)}_{\sigma_k}, \overline T_{\sigma_k}\}, \emptyset) = {\rm con}(\sigma_0, \{\delta T^{(0)}_{\sigma_0}, \overline T_{\sigma_0}\}, \emptyset) 170 | ``` 171 | We have 172 | ```math 173 | \overline T^{(k)}_{\sigma_k} = {\rm con}(\Lambda, \{T^{(i)}_{\sigma_i} \mid i=1,\ldots,m, i\neq k\} \cup \{\overline T^{(0)}_{\sigma_0}\}, \sigma_k) 174 | ``` 175 | 176 | Q: How about complex numbers? 177 | - Rule based AD: derive the rules using the Wirtinger calculus 178 | - Source-to-source AD: same as real numbers 179 | 180 | ## From Quantum Circuit to Tensor Networks 181 | 1. Tensor network based simulation 182 | 2. Special gates 183 | 3. Expectation value 184 | 4. ZX-calculus 185 | 5. Optimal contraction order and treewidth 186 | 6. Entanglement propagation 187 | 1. Lieb Robinson bound, check entanglement entropy 188 | 189 | ## Classical Tensor Networks 190 | 1. Tensor renormalization group (TRG) 191 | 2. Probabilistic graphical models 192 | 3. Combinatorial optimization 193 | 1. Example: Spin-glass 194 | 2. Example: Maximum independent set 195 | 3. Example: Circuit SAT 196 | 1. Is it possible to reduce spin-glass to circuit SAT? 197 | 4. Generic tensor networks 198 | 5. Overlap gap property 199 | 1. Discuss hardest instance complexity and average complexity 200 | 6. From factoring to independent set problem 201 | 202 | ## References 203 | [^Schollwock2010]: Schollwöck, U., 2011. Schollwöck, U. (2011). The density-matrix renormalization group in the age of matrix product states. Annals of Physics 326, 96–192. https://doi.org/10.1016/j.aop.2010.09.012 204 | [^Vanderstraeten2018]: Vanderstraeten, L., Haegeman, J., Verstraete, F., 2018. Tangent-space methods for uniform matrix product states. 205 | [^TensorsNet]: https://www.tensors.net/ 206 | [^Liu2023]: Computing Solution Space Properties of Combinatorial Optimization Problems Via Generic Tensor Networks. SIAM J. Sci. Comput. 45, A1239–A1270. https://doi.org/10.1137/22M1501787 207 | [^Roa2024]: Roa-Villescas, M., Gao, X., Stuijk, S., Corporaal, H., Liu, J.-G., 2024. Probabilistic Inference in the Era of Tensor Networks and Differential Programming. https://doi.org/10.48550/arXiv.2405.14060 208 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/matmul.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/traceperm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/svd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/tebd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | -------------------------------------------------------------------------------- /0.intro/images/fig1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | -------------------------------------------------------------------------------- /1.tensor-networks/tutorial/plots/mps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /4.computational-complexity/circuitsim/Manifest.toml: -------------------------------------------------------------------------------- 1 | # This file is machine-generated - editing it directly is not advised 2 | 3 | julia_version = "1.10.3" 4 | manifest_format = "2.0" 5 | project_hash = "50a4f9241aa539c78f41ca1d5edda0d62ba5e386" 6 | 7 | [[deps.AbstractTrees]] 8 | git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" 9 | uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" 10 | version = "0.4.5" 11 | 12 | [[deps.Adapt]] 13 | deps = ["LinearAlgebra", "Requires"] 14 | git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" 15 | uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" 16 | version = "4.0.4" 17 | weakdeps = ["StaticArrays"] 18 | 19 | [deps.Adapt.extensions] 20 | AdaptStaticArraysExt = "StaticArrays" 21 | 22 | [[deps.ArgTools]] 23 | uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" 24 | version = "1.1.1" 25 | 26 | [[deps.Artifacts]] 27 | uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" 28 | 29 | [[deps.Base64]] 30 | uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" 31 | 32 | [[deps.BatchedRoutines]] 33 | deps = ["LinearAlgebra"] 34 | git-tree-sha1 = "441db9f0399bcfb4eeb8b891a6b03f7acc5dc731" 35 | uuid = "a9ab73d0-e05c-5df1-8fde-d6a4645b8d8e" 36 | version = "0.2.2" 37 | 38 | [[deps.BetterExp]] 39 | git-tree-sha1 = "dd3448f3d5b2664db7eceeec5f744535ce6e759b" 40 | uuid = "7cffe744-45fd-4178-b173-cf893948b8b7" 41 | version = "0.1.0" 42 | 43 | [[deps.BitBasis]] 44 | deps = ["LinearAlgebra", "StaticArrays"] 45 | git-tree-sha1 = "fbcd7aaa2a11146cd8ec521cfc69c60f7ea2bcc4" 46 | uuid = "50ba71b6-fa0f-514d-ae9a-0916efc90dcf" 47 | version = "0.9.1" 48 | 49 | [[deps.Bzip2_jll]] 50 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 51 | git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" 52 | uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" 53 | version = "1.0.8+1" 54 | 55 | [[deps.CacheServers]] 56 | deps = ["Distributed", "Test"] 57 | git-tree-sha1 = "b584b04f236d3677b4334fab095796a128445bf8" 58 | uuid = "a921213e-d44a-5460-ac04-5d720a99ba71" 59 | version = "0.2.0" 60 | 61 | [[deps.Cairo]] 62 | deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"] 63 | git-tree-sha1 = "d0b3f8b4ad16cb0a2988c6788646a5e6a17b6b1b" 64 | uuid = "159f3aea-2a34-519c-b102-8c37f9878175" 65 | version = "1.0.5" 66 | 67 | [[deps.Cairo_jll]] 68 | deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] 69 | git-tree-sha1 = "a4c43f59baa34011e303e76f5c8c91bf58415aaf" 70 | uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" 71 | version = "1.18.0+1" 72 | 73 | [[deps.ChainRulesCore]] 74 | deps = ["Compat", "LinearAlgebra"] 75 | git-tree-sha1 = "575cd02e080939a33b6df6c5853d14924c08e35b" 76 | uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" 77 | version = "1.23.0" 78 | weakdeps = ["SparseArrays"] 79 | 80 | [deps.ChainRulesCore.extensions] 81 | ChainRulesCoreSparseArraysExt = "SparseArrays" 82 | 83 | [[deps.ColorTypes]] 84 | deps = ["FixedPointNumbers", "Random"] 85 | git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" 86 | uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" 87 | version = "0.11.5" 88 | 89 | [[deps.Colors]] 90 | deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] 91 | git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" 92 | uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" 93 | version = "0.12.10" 94 | 95 | [[deps.Combinatorics]] 96 | git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" 97 | uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" 98 | version = "1.0.2" 99 | 100 | [[deps.Compat]] 101 | deps = ["TOML", "UUIDs"] 102 | git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" 103 | uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" 104 | version = "4.15.0" 105 | weakdeps = ["Dates", "LinearAlgebra"] 106 | 107 | [deps.Compat.extensions] 108 | CompatLinearAlgebraExt = "LinearAlgebra" 109 | 110 | [[deps.CompilerSupportLibraries_jll]] 111 | deps = ["Artifacts", "Libdl"] 112 | uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" 113 | version = "1.1.1+0" 114 | 115 | [[deps.DataAPI]] 116 | git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" 117 | uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" 118 | version = "1.16.0" 119 | 120 | [[deps.DataStructures]] 121 | deps = ["Compat", "InteractiveUtils", "OrderedCollections"] 122 | git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" 123 | uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" 124 | version = "0.18.20" 125 | 126 | [[deps.Dates]] 127 | deps = ["Printf"] 128 | uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" 129 | 130 | [[deps.Distributed]] 131 | deps = ["Random", "Serialization", "Sockets"] 132 | uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" 133 | 134 | [[deps.DocStringExtensions]] 135 | deps = ["LibGit2"] 136 | git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" 137 | uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" 138 | version = "0.9.3" 139 | 140 | [[deps.Downloads]] 141 | deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] 142 | uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" 143 | version = "1.6.0" 144 | 145 | [[deps.Expat_jll]] 146 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 147 | git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" 148 | uuid = "2e619515-83b5-522b-bb60-26c02a35a201" 149 | version = "2.6.2+0" 150 | 151 | [[deps.FFMPEG]] 152 | deps = ["FFMPEG_jll"] 153 | git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" 154 | uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" 155 | version = "0.4.1" 156 | 157 | [[deps.FFMPEG_jll]] 158 | deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] 159 | git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" 160 | uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" 161 | version = "4.4.4+1" 162 | 163 | [[deps.FileIO]] 164 | deps = ["Pkg", "Requires", "UUIDs"] 165 | git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" 166 | uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" 167 | version = "1.16.3" 168 | 169 | [[deps.FileWatching]] 170 | uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" 171 | 172 | [[deps.FixedPointNumbers]] 173 | deps = ["Statistics"] 174 | git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" 175 | uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" 176 | version = "0.8.4" 177 | 178 | [[deps.Fontconfig_jll]] 179 | deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] 180 | git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" 181 | uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" 182 | version = "2.13.96+0" 183 | 184 | [[deps.FreeType2_jll]] 185 | deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] 186 | git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" 187 | uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" 188 | version = "2.13.1+0" 189 | 190 | [[deps.FriBidi_jll]] 191 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 192 | git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" 193 | uuid = "559328eb-81f9-559d-9380-de523a88c83c" 194 | version = "1.0.14+0" 195 | 196 | [[deps.GMP_jll]] 197 | deps = ["Artifacts", "Libdl"] 198 | uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" 199 | version = "6.2.1+6" 200 | 201 | [[deps.GPUArraysCore]] 202 | deps = ["Adapt"] 203 | git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" 204 | uuid = "46192b85-c4d5-4398-a991-12ede77f4527" 205 | version = "0.1.6" 206 | 207 | [[deps.Gettext_jll]] 208 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] 209 | git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" 210 | uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" 211 | version = "0.21.0+0" 212 | 213 | [[deps.Glib_jll]] 214 | deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] 215 | git-tree-sha1 = "359a1ba2e320790ddbe4ee8b4d54a305c0ea2aff" 216 | uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" 217 | version = "2.80.0+0" 218 | 219 | [[deps.Graphics]] 220 | deps = ["Colors", "LinearAlgebra", "NaNMath"] 221 | git-tree-sha1 = "d61890399bc535850c4bf08e4e0d3a7ad0f21cbd" 222 | uuid = "a2bd30eb-e257-5431-a919-1863eab51364" 223 | version = "1.1.2" 224 | 225 | [[deps.Graphite2_jll]] 226 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 227 | git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" 228 | uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" 229 | version = "1.3.14+0" 230 | 231 | [[deps.HarfBuzz_jll]] 232 | deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] 233 | git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" 234 | uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" 235 | version = "2.8.1+1" 236 | 237 | [[deps.InteractiveUtils]] 238 | deps = ["Markdown"] 239 | uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" 240 | 241 | [[deps.IrrationalConstants]] 242 | git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" 243 | uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" 244 | version = "0.2.2" 245 | 246 | [[deps.JLLWrappers]] 247 | deps = ["Artifacts", "Preferences"] 248 | git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" 249 | uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" 250 | version = "1.5.0" 251 | 252 | [[deps.JSON]] 253 | deps = ["Dates", "Mmap", "Parsers", "Unicode"] 254 | git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" 255 | uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" 256 | version = "0.21.4" 257 | 258 | [[deps.JpegTurbo_jll]] 259 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 260 | git-tree-sha1 = "c84a835e1a09b289ffcd2271bf2a337bbdda6637" 261 | uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" 262 | version = "3.0.3+0" 263 | 264 | [[deps.Juno]] 265 | deps = ["Base64", "Logging", "Media", "Profile"] 266 | git-tree-sha1 = "07cb43290a840908a771552911a6274bc6c072c7" 267 | uuid = "e5e0dc1b-0480-54bc-9374-aad01c23163d" 268 | version = "0.8.4" 269 | 270 | [[deps.KrylovKit]] 271 | deps = ["ChainRulesCore", "GPUArraysCore", "LinearAlgebra", "Printf", "VectorInterface"] 272 | git-tree-sha1 = "3f3a92bbe8f568b689a7f7bc193f7c717d793751" 273 | uuid = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" 274 | version = "0.7.1" 275 | 276 | [[deps.LAME_jll]] 277 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 278 | git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" 279 | uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" 280 | version = "3.100.2+0" 281 | 282 | [[deps.LERC_jll]] 283 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 284 | git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" 285 | uuid = "88015f11-f218-50d7-93a8-a6af411a945d" 286 | version = "3.0.0+1" 287 | 288 | [[deps.LLVMOpenMP_jll]] 289 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 290 | git-tree-sha1 = "d986ce2d884d49126836ea94ed5bfb0f12679713" 291 | uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" 292 | version = "15.0.7+0" 293 | 294 | [[deps.LZO_jll]] 295 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 296 | git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" 297 | uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" 298 | version = "2.10.2+0" 299 | 300 | [[deps.LaTeXStrings]] 301 | git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" 302 | uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" 303 | version = "1.3.1" 304 | 305 | [[deps.LegibleLambdas]] 306 | deps = ["MacroTools"] 307 | git-tree-sha1 = "7946db4829eb8de47c399f92c19790f9cc0bbd07" 308 | uuid = "f1f30506-32fe-5131-bd72-7c197988f9e5" 309 | version = "0.3.0" 310 | 311 | [[deps.LibCURL]] 312 | deps = ["LibCURL_jll", "MozillaCACerts_jll"] 313 | uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" 314 | version = "0.6.4" 315 | 316 | [[deps.LibCURL_jll]] 317 | deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] 318 | uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" 319 | version = "8.4.0+0" 320 | 321 | [[deps.LibGit2]] 322 | deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] 323 | uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" 324 | 325 | [[deps.LibGit2_jll]] 326 | deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] 327 | uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" 328 | version = "1.6.4+0" 329 | 330 | [[deps.LibSSH2_jll]] 331 | deps = ["Artifacts", "Libdl", "MbedTLS_jll"] 332 | uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" 333 | version = "1.11.0+1" 334 | 335 | [[deps.Libdl]] 336 | uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" 337 | 338 | [[deps.Libffi_jll]] 339 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 340 | git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" 341 | uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" 342 | version = "3.2.2+1" 343 | 344 | [[deps.Libgcrypt_jll]] 345 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] 346 | git-tree-sha1 = "9fd170c4bbfd8b935fdc5f8b7aa33532c991a673" 347 | uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" 348 | version = "1.8.11+0" 349 | 350 | [[deps.Libgpg_error_jll]] 351 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 352 | git-tree-sha1 = "fbb1f2bef882392312feb1ede3615ddc1e9b99ed" 353 | uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" 354 | version = "1.49.0+0" 355 | 356 | [[deps.Libiconv_jll]] 357 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 358 | git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" 359 | uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" 360 | version = "1.17.0+0" 361 | 362 | [[deps.Libmount_jll]] 363 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 364 | git-tree-sha1 = "4b683b19157282f50bfd5dcaa2efe5295814ea22" 365 | uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" 366 | version = "2.40.0+0" 367 | 368 | [[deps.Librsvg_jll]] 369 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pango_jll", "Pkg", "gdk_pixbuf_jll"] 370 | git-tree-sha1 = "ae0923dab7324e6bc980834f709c4cd83dd797ed" 371 | uuid = "925c91fb-5dd6-59dd-8e8c-345e74382d89" 372 | version = "2.54.5+0" 373 | 374 | [[deps.Libtiff_jll]] 375 | deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] 376 | git-tree-sha1 = "6355fb9a4d22d867318db186fd09b09b35bd2ed7" 377 | uuid = "89763e89-9b03-5906-acba-b20f662cd828" 378 | version = "4.6.0+0" 379 | 380 | [[deps.Libuuid_jll]] 381 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 382 | git-tree-sha1 = "27fd5cc10be85658cacfe11bb81bee216af13eda" 383 | uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" 384 | version = "2.40.0+0" 385 | 386 | [[deps.LinearAlgebra]] 387 | deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] 388 | uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" 389 | 390 | [[deps.LogExpFunctions]] 391 | deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] 392 | git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" 393 | uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" 394 | version = "0.3.27" 395 | 396 | [deps.LogExpFunctions.extensions] 397 | LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" 398 | LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" 399 | LogExpFunctionsInverseFunctionsExt = "InverseFunctions" 400 | 401 | [deps.LogExpFunctions.weakdeps] 402 | ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" 403 | ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" 404 | InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" 405 | 406 | [[deps.Logging]] 407 | uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" 408 | 409 | [[deps.Luxor]] 410 | deps = ["Base64", "Cairo", "Colors", "DataStructures", "Dates", "FFMPEG", "FileIO", "Juno", "LaTeXStrings", "PrecompileTools", "Random", "Requires", "Rsvg"] 411 | git-tree-sha1 = "aa3eb624552373a6204c19b00e95ce62ea932d32" 412 | uuid = "ae8d54c2-7ccd-5906-9d76-62fc9837b5bc" 413 | version = "3.8.0" 414 | 415 | [[deps.LuxurySparse]] 416 | deps = ["LinearAlgebra", "Random", "SparseArrays", "StaticArrays"] 417 | git-tree-sha1 = "84ce2a2a25c8a4561ef19a1a8be3c9305661fa08" 418 | uuid = "d05aeea4-b7d4-55ac-b691-9e7fabb07ba2" 419 | version = "0.7.4" 420 | 421 | [[deps.MLStyle]] 422 | git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" 423 | uuid = "d8e11817-5142-5d16-987a-aa16d5891078" 424 | version = "0.4.17" 425 | 426 | [[deps.MPC_jll]] 427 | deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "MPFR_jll", "Pkg"] 428 | git-tree-sha1 = "9618bed470dcb869f944f4fe4a9e76c4c8bf9a11" 429 | uuid = "2ce0c516-f11f-5db3-98ad-e0e1048fbd70" 430 | version = "1.2.1+0" 431 | 432 | [[deps.MPFR_jll]] 433 | deps = ["Artifacts", "GMP_jll", "Libdl"] 434 | uuid = "3a97d323-0669-5f0c-9066-3539efd106a3" 435 | version = "4.2.0+1" 436 | 437 | [[deps.MacroTools]] 438 | deps = ["Markdown", "Random"] 439 | git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" 440 | uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" 441 | version = "0.5.13" 442 | 443 | [[deps.Markdown]] 444 | deps = ["Base64"] 445 | uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" 446 | 447 | [[deps.MbedTLS_jll]] 448 | deps = ["Artifacts", "Libdl"] 449 | uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" 450 | version = "2.28.2+1" 451 | 452 | [[deps.Media]] 453 | deps = ["MacroTools", "Test"] 454 | git-tree-sha1 = "75a54abd10709c01f1b86b84ec225d26e840ed58" 455 | uuid = "e89f7d12-3494-54d1-8411-f7d8b9ae1f27" 456 | version = "0.5.0" 457 | 458 | [[deps.Missings]] 459 | deps = ["DataAPI"] 460 | git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" 461 | uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" 462 | version = "1.2.0" 463 | 464 | [[deps.Mmap]] 465 | uuid = "a63ad114-7e13-5084-954f-fe012c677804" 466 | 467 | [[deps.MozillaCACerts_jll]] 468 | uuid = "14a3606d-f60d-562e-9121-12d972cd8159" 469 | version = "2023.1.10" 470 | 471 | [[deps.NaNMath]] 472 | deps = ["OpenLibm_jll"] 473 | git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" 474 | uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" 475 | version = "1.0.2" 476 | 477 | [[deps.NetworkOptions]] 478 | uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" 479 | version = "1.2.0" 480 | 481 | [[deps.OMEinsum]] 482 | deps = ["AbstractTrees", "BatchedRoutines", "ChainRulesCore", "Combinatorics", "LinearAlgebra", "MacroTools", "OMEinsumContractionOrders", "Test", "TupleTools"] 483 | git-tree-sha1 = "5b7f4666a3fb57f4bca9f2cdb48b0e5478b1717b" 484 | uuid = "ebe7aa44-baf0-506c-a96f-8464559b3922" 485 | version = "0.8.1" 486 | 487 | [deps.OMEinsum.extensions] 488 | CUDAExt = "CUDA" 489 | 490 | [deps.OMEinsum.weakdeps] 491 | CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" 492 | 493 | [[deps.OMEinsumContractionOrders]] 494 | deps = ["AbstractTrees", "BetterExp", "JSON", "SparseArrays", "Suppressor"] 495 | git-tree-sha1 = "b0cba9f4a6f021a63b066f0bb29a6fd63c93be44" 496 | uuid = "6f22d1fd-8eed-4bb7-9776-e7d684900715" 497 | version = "0.8.3" 498 | 499 | [deps.OMEinsumContractionOrders.extensions] 500 | KaHyParExt = ["KaHyPar"] 501 | 502 | [deps.OMEinsumContractionOrders.weakdeps] 503 | KaHyPar = "2a6221f6-aa48-11e9-3542-2d9e0ef01880" 504 | 505 | [[deps.Ogg_jll]] 506 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 507 | git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" 508 | uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" 509 | version = "1.3.5+1" 510 | 511 | [[deps.OpenBLAS_jll]] 512 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] 513 | uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" 514 | version = "0.3.23+4" 515 | 516 | [[deps.OpenLibm_jll]] 517 | deps = ["Artifacts", "Libdl"] 518 | uuid = "05823500-19ac-5b8b-9628-191a04bc5112" 519 | version = "0.8.1+2" 520 | 521 | [[deps.OpenSSL_jll]] 522 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 523 | git-tree-sha1 = "3da7367955dcc5c54c1ba4d402ccdc09a1a3e046" 524 | uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" 525 | version = "3.0.13+1" 526 | 527 | [[deps.OpenSpecFun_jll]] 528 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] 529 | git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" 530 | uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" 531 | version = "0.5.5+0" 532 | 533 | [[deps.Opus_jll]] 534 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 535 | git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" 536 | uuid = "91d4177d-7536-5919-b921-800302f37372" 537 | version = "1.3.2+0" 538 | 539 | [[deps.OrderedCollections]] 540 | git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" 541 | uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" 542 | version = "1.6.3" 543 | 544 | [[deps.PCRE2_jll]] 545 | deps = ["Artifacts", "Libdl"] 546 | uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" 547 | version = "10.42.0+1" 548 | 549 | [[deps.PackageExtensionCompat]] 550 | git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" 551 | uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" 552 | version = "1.0.2" 553 | weakdeps = ["Requires", "TOML"] 554 | 555 | [[deps.Pango_jll]] 556 | deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] 557 | git-tree-sha1 = "cb5a2ab6763464ae0f19c86c56c63d4a2b0f5bda" 558 | uuid = "36c8627f-9965-5494-a995-c6b170f724f3" 559 | version = "1.52.2+0" 560 | 561 | [[deps.Parsers]] 562 | deps = ["Dates", "PrecompileTools", "UUIDs"] 563 | git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" 564 | uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" 565 | version = "2.8.1" 566 | 567 | [[deps.Pixman_jll]] 568 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] 569 | git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" 570 | uuid = "30392449-352a-5448-841d-b1acce4e97dc" 571 | version = "0.42.2+0" 572 | 573 | [[deps.Pkg]] 574 | deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] 575 | uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" 576 | version = "1.10.0" 577 | 578 | [[deps.PrecompileTools]] 579 | deps = ["Preferences"] 580 | git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" 581 | uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" 582 | version = "1.2.1" 583 | 584 | [[deps.Preferences]] 585 | deps = ["TOML"] 586 | git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" 587 | uuid = "21216c6a-2e73-6563-6e65-726566657250" 588 | version = "1.4.3" 589 | 590 | [[deps.Printf]] 591 | deps = ["Unicode"] 592 | uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" 593 | 594 | [[deps.Profile]] 595 | deps = ["Printf"] 596 | uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" 597 | 598 | [[deps.Quaternions]] 599 | deps = ["LinearAlgebra", "Random", "RealDot"] 600 | git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9" 601 | uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" 602 | version = "0.7.6" 603 | 604 | [[deps.REPL]] 605 | deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] 606 | uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" 607 | 608 | [[deps.Random]] 609 | deps = ["SHA"] 610 | uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" 611 | 612 | [[deps.RealDot]] 613 | deps = ["LinearAlgebra"] 614 | git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" 615 | uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" 616 | version = "0.1.0" 617 | 618 | [[deps.RecipesBase]] 619 | deps = ["PrecompileTools"] 620 | git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" 621 | uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" 622 | version = "1.3.4" 623 | 624 | [[deps.Reexport]] 625 | git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" 626 | uuid = "189a3867-3050-52da-a836-e630ba90ab69" 627 | version = "1.2.2" 628 | 629 | [[deps.Requires]] 630 | deps = ["UUIDs"] 631 | git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" 632 | uuid = "ae029012-a4dd-5104-9daa-d747884805df" 633 | version = "1.3.0" 634 | 635 | [[deps.Rotations]] 636 | deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] 637 | git-tree-sha1 = "2a0a5d8569f481ff8840e3b7c84bbf188db6a3fe" 638 | uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" 639 | version = "1.7.0" 640 | weakdeps = ["RecipesBase"] 641 | 642 | [deps.Rotations.extensions] 643 | RotationsRecipesBaseExt = "RecipesBase" 644 | 645 | [[deps.Rsvg]] 646 | deps = ["Cairo", "Glib_jll", "Librsvg_jll"] 647 | git-tree-sha1 = "3d3dc66eb46568fb3a5259034bfc752a0eb0c686" 648 | uuid = "c4c386cf-5103-5370-be45-f3a111cca3b8" 649 | version = "1.0.0" 650 | 651 | [[deps.SHA]] 652 | uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" 653 | version = "0.7.0" 654 | 655 | [[deps.Serialization]] 656 | uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" 657 | 658 | [[deps.Sockets]] 659 | uuid = "6462fe0b-24de-5631-8697-dd941f90decc" 660 | 661 | [[deps.SortingAlgorithms]] 662 | deps = ["DataStructures"] 663 | git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" 664 | uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" 665 | version = "1.2.1" 666 | 667 | [[deps.SparseArrays]] 668 | deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] 669 | uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" 670 | version = "1.10.0" 671 | 672 | [[deps.SpecialFunctions]] 673 | deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] 674 | git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" 675 | uuid = "276daf66-3868-5448-9aa4-cd146d93841b" 676 | version = "2.4.0" 677 | weakdeps = ["ChainRulesCore"] 678 | 679 | [deps.SpecialFunctions.extensions] 680 | SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" 681 | 682 | [[deps.StaticArrays]] 683 | deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] 684 | git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2" 685 | uuid = "90137ffa-7385-5640-81b9-e52037218182" 686 | version = "1.9.3" 687 | weakdeps = ["ChainRulesCore", "Statistics"] 688 | 689 | [deps.StaticArrays.extensions] 690 | StaticArraysChainRulesCoreExt = "ChainRulesCore" 691 | StaticArraysStatisticsExt = "Statistics" 692 | 693 | [[deps.StaticArraysCore]] 694 | git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" 695 | uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" 696 | version = "1.4.2" 697 | 698 | [[deps.Statistics]] 699 | deps = ["LinearAlgebra", "SparseArrays"] 700 | uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" 701 | version = "1.10.0" 702 | 703 | [[deps.StatsAPI]] 704 | deps = ["LinearAlgebra"] 705 | git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" 706 | uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" 707 | version = "1.7.0" 708 | 709 | [[deps.StatsBase]] 710 | deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] 711 | git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" 712 | uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" 713 | version = "0.34.3" 714 | 715 | [[deps.SuiteSparse_jll]] 716 | deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] 717 | uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" 718 | version = "7.2.1+1" 719 | 720 | [[deps.Suppressor]] 721 | deps = ["Logging"] 722 | git-tree-sha1 = "9143c41bd539a8885c79728b9dedb0ce47dc9819" 723 | uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" 724 | version = "0.2.7" 725 | 726 | [[deps.SymEngine]] 727 | deps = ["Compat", "Libdl", "LinearAlgebra", "RecipesBase", "Serialization", "SpecialFunctions", "SymEngine_jll"] 728 | git-tree-sha1 = "62926b1f0a2358480dde70bb6fa1d01ca58fd2c9" 729 | uuid = "123dc426-2d89-5057-bbad-38513e3affd8" 730 | version = "0.11.0" 731 | 732 | [deps.SymEngine.extensions] 733 | SymEngineSymbolicUtilsExt = "SymbolicUtils" 734 | 735 | [deps.SymEngine.weakdeps] 736 | SymbolicUtils = "d1185830-fcd6-423d-90d6-eec64667417b" 737 | 738 | [[deps.SymEngine_jll]] 739 | deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "MPC_jll", "MPFR_jll"] 740 | git-tree-sha1 = "af787293daff456369f97dd01cff7e215c177bc4" 741 | uuid = "3428059b-622b-5399-b16f-d347a77089a4" 742 | version = "0.11.2+0" 743 | 744 | [[deps.TOML]] 745 | deps = ["Dates"] 746 | uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" 747 | version = "1.0.3" 748 | 749 | [[deps.Tar]] 750 | deps = ["ArgTools", "SHA"] 751 | uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" 752 | version = "1.10.0" 753 | 754 | [[deps.Test]] 755 | deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] 756 | uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" 757 | 758 | [[deps.Thebes]] 759 | deps = ["Colors", "Luxor", "PackageExtensionCompat", "Random", "Rotations", "StaticArrays"] 760 | git-tree-sha1 = "52be2beb73e37ff3f010b5e4135295d7872e1e27" 761 | uuid = "8b424ff8-82f5-59a4-86a6-de3761897198" 762 | version = "1.0.0" 763 | 764 | [deps.Thebes.extensions] 765 | LaTeXExt = ["LaTeXStrings", "MathTeXEngine"] 766 | 767 | [deps.Thebes.weakdeps] 768 | LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" 769 | MathTeXEngine = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" 770 | 771 | [[deps.TupleTools]] 772 | git-tree-sha1 = "41d61b1c545b06279871ef1a4b5fcb2cac2191cd" 773 | uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" 774 | version = "1.5.0" 775 | 776 | [[deps.UUIDs]] 777 | deps = ["Random", "SHA"] 778 | uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" 779 | 780 | [[deps.Unicode]] 781 | uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" 782 | 783 | [[deps.VectorInterface]] 784 | deps = ["LinearAlgebra"] 785 | git-tree-sha1 = "833b06acd39f0abc97bc1170bd28e4f713619b37" 786 | uuid = "409d34a3-91d5-4945-b6ec-7529ddf182d8" 787 | version = "0.4.5" 788 | 789 | [[deps.XML2_jll]] 790 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] 791 | git-tree-sha1 = "532e22cf7be8462035d092ff21fada7527e2c488" 792 | uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" 793 | version = "2.12.6+0" 794 | 795 | [[deps.XSLT_jll]] 796 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] 797 | git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" 798 | uuid = "aed1982a-8fda-507f-9586-7b0439959a61" 799 | version = "1.1.34+0" 800 | 801 | [[deps.XZ_jll]] 802 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 803 | git-tree-sha1 = "ac88fb95ae6447c8dda6a5503f3bafd496ae8632" 804 | uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" 805 | version = "5.4.6+0" 806 | 807 | [[deps.Xorg_libX11_jll]] 808 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] 809 | git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" 810 | uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" 811 | version = "1.8.6+0" 812 | 813 | [[deps.Xorg_libXau_jll]] 814 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 815 | git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" 816 | uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" 817 | version = "1.0.11+0" 818 | 819 | [[deps.Xorg_libXdmcp_jll]] 820 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 821 | git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" 822 | uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" 823 | version = "1.1.4+0" 824 | 825 | [[deps.Xorg_libXext_jll]] 826 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] 827 | git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" 828 | uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" 829 | version = "1.3.6+0" 830 | 831 | [[deps.Xorg_libXrender_jll]] 832 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] 833 | git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" 834 | uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" 835 | version = "0.9.11+0" 836 | 837 | [[deps.Xorg_libpthread_stubs_jll]] 838 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 839 | git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" 840 | uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" 841 | version = "0.1.1+0" 842 | 843 | [[deps.Xorg_libxcb_jll]] 844 | deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] 845 | git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" 846 | uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" 847 | version = "1.15.0+0" 848 | 849 | [[deps.Xorg_xtrans_jll]] 850 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 851 | git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" 852 | uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" 853 | version = "1.5.0+0" 854 | 855 | [[deps.Yao]] 856 | deps = ["BitBasis", "LinearAlgebra", "LuxurySparse", "Reexport", "YaoAPI", "YaoArrayRegister", "YaoBlocks", "YaoSym"] 857 | git-tree-sha1 = "7713cbadd0bf475061f229d7d1a4c53dc5771bdf" 858 | uuid = "5872b779-8223-5990-8dd0-5abbb0748c8c" 859 | version = "0.8.13" 860 | 861 | [[deps.YaoAPI]] 862 | git-tree-sha1 = "11d2c13b14cf8d354f19716d49af464e8c3c3eed" 863 | uuid = "0843a435-28de-4971-9e8b-a9641b2983a8" 864 | version = "0.4.7" 865 | 866 | [[deps.YaoArrayRegister]] 867 | deps = ["Adapt", "BitBasis", "DocStringExtensions", "LegibleLambdas", "LinearAlgebra", "LuxurySparse", "MLStyle", "Random", "SparseArrays", "StaticArrays", "StatsBase", "TupleTools", "YaoAPI"] 868 | git-tree-sha1 = "aa5c55eaabf3a6f25e6018feabf74a9ba1a1d98d" 869 | uuid = "e600142f-9330-5003-8abb-0ebd767abc51" 870 | version = "0.9.9" 871 | 872 | [[deps.YaoBlocks]] 873 | deps = ["BitBasis", "CacheServers", "ChainRulesCore", "DocStringExtensions", "InteractiveUtils", "KrylovKit", "LegibleLambdas", "LinearAlgebra", "LuxurySparse", "MLStyle", "Random", "SparseArrays", "StaticArrays", "StatsBase", "TupleTools", "YaoAPI", "YaoArrayRegister"] 874 | git-tree-sha1 = "4c9c491c09ec0323a1c56c44f5f8298a4a624063" 875 | uuid = "418bc28f-b43b-5e0b-a6e7-61bbc1a2c1df" 876 | version = "0.13.12" 877 | 878 | [[deps.YaoPlots]] 879 | deps = ["LinearAlgebra", "Luxor", "Thebes", "YaoArrayRegister", "YaoBlocks"] 880 | git-tree-sha1 = "ecde4171de7b39de0ed422b7215fa4d8fb72e2a5" 881 | uuid = "32cfe2d9-419e-45f2-8191-2267705d8dbc" 882 | version = "0.9.1" 883 | 884 | [[deps.YaoSym]] 885 | deps = ["BitBasis", "LinearAlgebra", "LuxurySparse", "SparseArrays", "SymEngine", "YaoArrayRegister", "YaoBlocks"] 886 | git-tree-sha1 = "e887044e08fe3bfa72dc7b468eacc3124224e340" 887 | uuid = "3b27209a-d3d6-11e9-3c0f-41eb92b2cb9d" 888 | version = "0.6.8" 889 | 890 | [[deps.YaoToEinsum]] 891 | deps = ["LinearAlgebra", "OMEinsum", "Yao"] 892 | path = "/Users/liujinguo/.julia/dev/YaoToEinsum" 893 | uuid = "9b173c7b-dc24-4dc5-a0e1-adab2f7b6ba9" 894 | version = "0.2.2" 895 | 896 | [deps.YaoToEinsum.extensions] 897 | YaoToEinsumCUDAExt = "CUDA" 898 | 899 | [deps.YaoToEinsum.weakdeps] 900 | CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" 901 | 902 | [[deps.Zlib_jll]] 903 | deps = ["Libdl"] 904 | uuid = "83775a58-1f1d-513f-b197-d71354ab007a" 905 | version = "1.2.13+1" 906 | 907 | [[deps.Zstd_jll]] 908 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 909 | git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" 910 | uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" 911 | version = "1.5.6+0" 912 | 913 | [[deps.gdk_pixbuf_jll]] 914 | deps = ["Artifacts", "Glib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Xorg_libX11_jll", "libpng_jll"] 915 | git-tree-sha1 = "86e7731be08b12fa5e741f719603ae740e16b666" 916 | uuid = "da03df04-f53b-5353-a52f-6a8b0620ced0" 917 | version = "2.42.10+0" 918 | 919 | [[deps.libaom_jll]] 920 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 921 | git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" 922 | uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" 923 | version = "3.4.0+0" 924 | 925 | [[deps.libass_jll]] 926 | deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 927 | git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" 928 | uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" 929 | version = "0.15.1+0" 930 | 931 | [[deps.libblastrampoline_jll]] 932 | deps = ["Artifacts", "Libdl"] 933 | uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" 934 | version = "5.8.0+1" 935 | 936 | [[deps.libfdk_aac_jll]] 937 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 938 | git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" 939 | uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" 940 | version = "2.0.2+0" 941 | 942 | [[deps.libpng_jll]] 943 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] 944 | git-tree-sha1 = "d7015d2e18a5fd9a4f47de711837e980519781a4" 945 | uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" 946 | version = "1.6.43+1" 947 | 948 | [[deps.libvorbis_jll]] 949 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] 950 | git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" 951 | uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" 952 | version = "1.3.7+1" 953 | 954 | [[deps.nghttp2_jll]] 955 | deps = ["Artifacts", "Libdl"] 956 | uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" 957 | version = "1.52.0+1" 958 | 959 | [[deps.p7zip_jll]] 960 | deps = ["Artifacts", "Libdl"] 961 | uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" 962 | version = "17.4.0+2" 963 | 964 | [[deps.x264_jll]] 965 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 966 | git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" 967 | uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" 968 | version = "2021.5.5+0" 969 | 970 | [[deps.x265_jll]] 971 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 972 | git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" 973 | uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" 974 | version = "3.5.0+0" 975 | --------------------------------------------------------------------------------