From dba0a8e6343550a52db09eb060dbee8aa7429944 Mon Sep 17 00:00:00 2001 From: Fe-r-oz Date: Fri, 4 Oct 2024 18:53:22 +0500 Subject: [PATCH 1/4] Coprime Bivariate Bicycle Codes via Univariate Polynomial Ring --- Manifest.toml | 291 +++++++++++++++++++++++------ Project.toml | 1 + src/CodingTheory.jl | 4 +- src/Quantum/product_codes.jl | 48 ++++- test/Quantum/product_codes_test.jl | 58 +++++- 5 files changed, 338 insertions(+), 64 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index dd7a164..5d60f92 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.5" +julia_version = "1.10.4" manifest_format = "2.0" -project_hash = "2d6645f27d1e47bd5cddd8a51982054007baf2cb" +project_hash = "163f71688893b1a2d676f6ba6e175eb2cf6dfafe" [[deps.ASL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -12,9 +12,9 @@ version = "0.1.3+0" [[deps.AbstractAlgebra]] deps = ["InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "45e46834b8fcfd59389939445267047577b19df5" +git-tree-sha1 = "ca88b21f7430be07fb6e9c0500fe4af65e023857" uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.43.1" +version = "0.41.11" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] @@ -30,11 +30,21 @@ version = "1.5.0" ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.0.4" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + [[deps.AlgebraicSolving]] -deps = ["LinearAlgebra", "Logging", "Markdown", "Nemo", "Printf", "Random", "StaticArrays", "Test", "msolve_jll"] -git-tree-sha1 = "59b14f801f508a03b0643713b22c4696bc52e445" +deps = ["LinearAlgebra", "Logging", "LoopVectorization", "Markdown", "Nemo", "Printf", "Random", "StaticArrays", "Test", "msolve_jll"] +git-tree-sha1 = "6ed4d44c604045dae661c5971bbfa964fbc93b5f" uuid = "66b61cbe-0446-4d5d-9090-1ff510639f9d" -version = "0.7.0" +version = "0.4.16" [[deps.AliasTables]] deps = ["PtrArrays", "Random"] @@ -52,14 +62,43 @@ git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" uuid = "ec485272-7323-5ecc-a04f-4719b315124d" version = "0.4.0" +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra"] +git-tree-sha1 = "3640d077b6dafd64ceb8fd5c1ec76f7ca53bcf76" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.16.0" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceSparseArraysExt = "SparseArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.AutoHashEquals]] -deps = ["Pkg"] -git-tree-sha1 = "daaeb6f7f77b88c072a83a2451801818acb5c63b" +git-tree-sha1 = "4ec6b48702dacc5994a835c1189831755e4e76ef" uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f" -version = "2.1.0" +version = "2.2.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" @@ -70,17 +109,40 @@ git-tree-sha1 = "7fea8f658689fa5062b23f4400eda888b7ae2aaa" uuid = "f01c122e-0ea1-4f85-ad8f-907073ad7a9f" version = "0.1.3" +[[deps.BitTwiddlingConvenienceFunctions]] +deps = ["Static"] +git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" +uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" +version = "0.1.6" + [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" version = "1.0.8+1" +[[deps.CPUSummary]] +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" +uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" +version = "0.2.6" + +[[deps.CloseOpenIntervals]] +deps = ["Static", "StaticArrayInterface"] +git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" +uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" +version = "0.1.13" + [[deps.Combinatorics]] git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.0.0" + [[deps.Compat]] deps = ["TOML", "UUIDs"] git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" @@ -96,6 +158,12 @@ deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" version = "1.1.1+0" +[[deps.CpuId]] +deps = ["Markdown"] +git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" +uuid = "adafc99b-e345-5852-983c-f28acb93d879" +version = "0.3.1" + [[deps.CxxWrap]] deps = ["Libdl", "MacroTools", "libcxxwrap_julia_jll"] git-tree-sha1 = "3345cb637ca1efb2ebf7f5145558522b92660d1f" @@ -135,9 +203,9 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "e6c693a0e4394f8fda0e51a5bdf5aef26f8235e9" +git-tree-sha1 = "d7477ecdafb813ddee2ae727afa94e9dcb5f3fb0" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.111" +version = "0.25.112" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -168,9 +236,9 @@ version = "1.8.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" +git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" +version = "3.3.10+1" [[deps.FLINT_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "MPFR_jll", "OpenBLAS32_jll"] @@ -194,28 +262,28 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] FillArraysStatisticsExt = "Statistics" [[deps.GAP]] -deps = ["AbstractAlgebra", "Artifacts", "Compat", "Downloads", "GAP_jll", "GAP_lib_jll", "GAP_pkg_juliainterface_jll", "InteractiveUtils", "Libdl", "MacroTools", "Markdown", "Ncurses_jll", "Pidfile", "Pkg", "REPL", "Random", "Scratch"] -git-tree-sha1 = "b045754f9aae9f79df4b18b2e4df84887897105d" +deps = ["Artifacts", "Compat", "Downloads", "GAP_jll", "GAP_lib_jll", "GAP_pkg_juliainterface_jll", "InteractiveUtils", "Libdl", "MacroTools", "Markdown", "Ncurses_jll", "Pidfile", "Pkg", "REPL", "Random", "Scratch"] +git-tree-sha1 = "fcaf50e1874719fdec62c3646351e52007ad63aa" uuid = "c863536a-3901-11e9-33e7-d5cd0df7b904" -version = "0.11.4" +version = "0.10.4" [[deps.GAP_jll]] -deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Readline_jll", "Zlib_jll"] -git-tree-sha1 = "becf60c941de1c38cea3dd76562c1c1d99052745" +deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg", "Readline_jll", "Zlib_jll"] +git-tree-sha1 = "c3a00b8f8ced0887d52104d0a0df233d9efc79d4" uuid = "5cd7a574-2c56-5be2-91dc-c8bc375b9ddf" -version = "400.1300.102+0" +version = "400.1200.200+9" [[deps.GAP_lib_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "eb3391939716a7ca7094879bb4455a49acb2b496" +git-tree-sha1 = "473b619163e30d9cc58d4a8f9d412e6ea8910fcf" uuid = "de1ad85e-c930-5cd4-919d-ccd3fcafd1a3" -version = "400.1300.100+0" +version = "400.1201.200+0" [[deps.GAP_pkg_juliainterface_jll]] deps = ["Artifacts", "GAP_jll", "GAP_lib_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "786044766785f5f2192f45de19acae5d1bb8885d" +git-tree-sha1 = "c5a0f16f0478ab067752861d3c9339f335832459" uuid = "ba154793-3a7d-51ee-8800-e295b0cf7374" -version = "0.900.100+0" +version = "0.800.300+3" [[deps.GLPK_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -230,26 +298,32 @@ version = "6.2.1+6" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "ebd18c326fa6cee1efb7da9a3b45cf69da2ed4d9" +git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.11.2" +version = "1.12.0" [[deps.Hecke]] deps = ["AbstractAlgebra", "Dates", "Distributed", "InteractiveUtils", "LazyArtifacts", "Libdl", "LinearAlgebra", "Markdown", "Nemo", "Pkg", "Printf", "Random", "RandomExtensions", "Serialization", "SparseArrays"] -git-tree-sha1 = "9257286b6ada9e8d0ae2a629bf13c51a149c5562" +git-tree-sha1 = "f89af7272ac9585fe73c1f0d810970b025ddc345" uuid = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" -version = "0.34.3" +version = "0.32.3" weakdeps = ["GAP", "Polymake"] [deps.Hecke.extensions] GAPExt = "GAP" PolymakeExt = "Polymake" +[[deps.HostCPUFeatures]] +deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] +git-tree-sha1 = "8e070b599339d622e9a081d17230d74a5c473293" +uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" +version = "0.1.17" + [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5e19e1e4fa3e71b774ce746274364aef0234634e" +git-tree-sha1 = "dd3b49277ec2bb2c6b94eb1604d4d0616016f7a6" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.1+0" +version = "2.11.2+0" [[deps.HypergeometricFunctions]] deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] @@ -257,6 +331,11 @@ git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" version = "0.3.24" +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + [[deps.Inflate]] git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" @@ -315,9 +394,15 @@ version = "18.1.7+0" [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" +git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+0" +version = "2.10.2+1" + +[[deps.LayoutPointers]] +deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" +uuid = "10f19ff3-798f-405d-979b-55457f8fc047" +version = "0.1.17" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -373,11 +458,26 @@ version = "0.3.28" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +[[deps.LoopVectorization]] +deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] +git-tree-sha1 = "8084c25a250e00ae427a379a5b607e7aed96a2dd" +uuid = "bdcacae8-1622-11e9-2a5c-532679323890" +version = "0.12.171" + + [deps.LoopVectorization.extensions] + ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] + SpecialFunctionsExt = "SpecialFunctions" + + [deps.LoopVectorization.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + [[deps.Lz4_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7f26c8fc5229e68484e0b3447312c98e16207d11" +git-tree-sha1 = "abf88ff67f4fd89839efcae2f4c39cbc4ecd0846" uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" -version = "1.10.0+0" +version = "1.10.0+1" [[deps.METIS_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -408,6 +508,11 @@ git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.13" +[[deps.ManualMemory]] +git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" +uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" +version = "0.1.8" + [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -434,9 +539,9 @@ version = "1.25.1+0" [[deps.Mongoc]] deps = ["Dates", "DecFP", "MongoC_jll", "Serialization"] -git-tree-sha1 = "f47bf7ed9d9c1da0a632777ca7dc406e3ad5f923" +git-tree-sha1 = "1f0d7579d1bacc1446751990d7e0c4c0bf0f3277" uuid = "4fe8b98c-fc19-5c23-8ec2-168ff83495f2" -version = "0.9.0" +version = "0.9.1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" @@ -444,15 +549,15 @@ version = "2023.1.10" [[deps.Ncurses_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3ac1ca10bae513c9cc8f83d7734b921b8007b574" +git-tree-sha1 = "3690e6c58c16ba676bcc9b5654762fe8a05db1c7" uuid = "68e3532b-a499-55ff-9963-d1c0c0748b3a" -version = "6.5.0+0" +version = "6.5.0+1" [[deps.Nemo]] deps = ["AbstractAlgebra", "FLINT_jll", "Libdl", "LinearAlgebra", "Pkg", "Random", "RandomExtensions", "SHA"] -git-tree-sha1 = "a644b4943424d9f1ffe7a7a1cdda617053bac5c0" +git-tree-sha1 = "bae0f1452c648d84535b581103ab8a59cf10a32a" uuid = "2edaba10-b0f1-5616-af89-8c11ac63239a" -version = "0.47.1" +version = "0.45.7" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -464,6 +569,15 @@ git-tree-sha1 = "d9c6d1dca818768f1671244dcdf8e8e08b2b8937" uuid = "76642167-d241-5cee-8c94-7a494e8cb7b7" version = "1.12.1+0" +[[deps.OffsetArrays]] +git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.14.1" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" @@ -499,11 +613,9 @@ version = "1.6.3" [[deps.Oscar]] deps = ["AbstractAlgebra", "AlgebraicSolving", "Distributed", "GAP", "Hecke", "JSON", "JSON3", "LazyArtifacts", "Markdown", "Nemo", "Pkg", "Polymake", "Random", "RandomExtensions", "Serialization", "Singular", "TOPCOM_jll", "UUIDs", "cohomCalg_jll"] -git-tree-sha1 = "6e9ad54815c837a1a27d19280dddfca5f0f5bf03" -repo-rev = "master" -repo-url = "https://github.com/oscar-system/Oscar.jl.git" +git-tree-sha1 = "6d86eb479c0afaebad9c00e862d91f3ae1de3c4f" uuid = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" -version = "1.2.0-DEV" +version = "1.1.1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] @@ -540,11 +652,17 @@ deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", " uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" version = "1.10.0" +[[deps.PolyesterWeave]] +deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] +git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" +uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" +version = "0.2.2" + [[deps.Polymake]] deps = ["AbstractAlgebra", "BinaryWrappers", "CxxWrap", "Downloads", "JSON", "Libdl", "Mongoc", "NetworkOptions", "Ninja_jll", "Perl_jll", "Pidfile", "Pkg", "REPL", "Scratch", "SparseArrays", "TOPCOM_jll", "lib4ti2_jll", "libpolymake_julia_jll", "polymake_jll", "polymake_oscarnumber_jll"] -git-tree-sha1 = "fa518c47ef32714e99cb0915c45b564fb91fe5bc" +git-tree-sha1 = "e065263f7e818a419bdc89979d7196222bb70efb" uuid = "d720cf60-89b5-51f5-aff5-213f193123e7" -version = "0.11.21" +version = "0.11.22" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -601,15 +719,21 @@ version = "0.4.4" [[deps.Readline_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ncurses_jll"] -git-tree-sha1 = "9d70e0c890a6c7ca3eb1ca0eaabba4d34795b7fb" +git-tree-sha1 = "69684dc9c2c69f7c515097841991362cca0739ea" uuid = "05236dd9-4125-5232-aa7c-9ec0c9b2c25a" -version = "8.2.1+0" +version = "8.2.1+1" [[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" version = "1.2.2" +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + [[deps.Rmath]] deps = ["Random", "Rmath_jll"] git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" @@ -632,6 +756,17 @@ version = "800.0.301+0" uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" +[[deps.SIMDTypes]] +git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" +uuid = "94e857df-77ce-4151-89e5-788b33177be4" +version = "0.1.0" + +[[deps.SLEEFPirates]] +deps = ["IfElse", "Static", "VectorizationBase"] +git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0" +uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" +version = "0.6.43" + [[deps.SPRAL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] git-tree-sha1 = "11f3da4b25efacd1cec8e263421f2a9003a5e8e0" @@ -659,15 +794,15 @@ version = "0.9.4" [[deps.Singular]] deps = ["AbstractAlgebra", "BinaryWrappers", "CxxWrap", "Libdl", "LinearAlgebra", "Nemo", "Pidfile", "Pkg", "Random", "RandomExtensions", "Singular_jll", "Statistics", "lib4ti2_jll", "libsingular_julia_jll"] -git-tree-sha1 = "9b6135b5c8081f83eb2c334d7a7b903c2076aef7" +git-tree-sha1 = "1490e197db038b23960cef430c56fb277fdf29a6" uuid = "bcd08a7b-43d2-5ff7-b6d4-c458787f915c" -version = "0.23.7" +version = "0.23.5" [[deps.Singular_jll]] deps = ["Artifacts", "FLINT_jll", "GMP_jll", "JLLWrappers", "Libdl", "MPFR_jll", "cddlib_jll"] -git-tree-sha1 = "052417021e25f7aca4e81e17f5e12feb53f7ef00" +git-tree-sha1 = "6c85174749476dcd3f059a33884072d748033263" uuid = "43d676ae-4934-50ba-8046-7a96366d613b" -version = "404.0.605+0" +version = "404.0.606+0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -695,6 +830,23 @@ version = "2.4.0" [deps.SpecialFunctions.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +[[deps.Static]] +deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] +git-tree-sha1 = "87d51a3ee9a4b0d2fe054bdd3fc2436258db2603" +uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" +version = "1.1.1" + +[[deps.StaticArrayInterface]] +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] +git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" +uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" +version = "1.8.0" +weakdeps = ["OffsetArrays", "StaticArrays"] + + [deps.StaticArrayInterface.extensions] + StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" + StaticArrayInterfaceStaticArraysExt = "StaticArrays" + [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" @@ -791,13 +943,30 @@ git-tree-sha1 = "42fd9023fef18b9b78c8343a4e2f3813ffbcefcb" uuid = "1c621080-faea-4a02-84b6-bbd5e436b8fe" version = "1.0.0" +[[deps.ThreadingUtilities]] +deps = ["ManualMemory"] +git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" +uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" +version = "0.5.2" + [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +[[deps.VectorizationBase]] +deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "e7f5b81c65eb858bed630fe006837b935518aca5" +uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" +version = "0.21.70" + [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" @@ -805,9 +974,9 @@ version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" +git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+0" +version = "1.5.6+1" [[deps.bliss_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -842,7 +1011,7 @@ version = "1.6.10+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.11.0+0" +version = "5.8.0+1" [[deps.libcxxwrap_julia_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -858,9 +1027,9 @@ version = "0.12.1+0" [[deps.libsingular_julia_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Singular_jll", "libcxxwrap_julia_jll"] -git-tree-sha1 = "55003499aa923d492234577898643b0e1e471e9d" +git-tree-sha1 = "ab24eb5706b1d1a1b5037951a382b0c4fd6edf5b" uuid = "ae4fbd8f-ecdb-54f8-bbce-35570499b30e" -version = "0.45.4+0" +version = "0.45.5+0" [[deps.lrslib_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -870,9 +1039,9 @@ version = "0.3.3+0" [[deps.msolve_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "FLINT_jll", "GMP_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl", "MPFR_jll"] -git-tree-sha1 = "7324fd011ebc4b9e43d9aa365c79797860459d0a" +git-tree-sha1 = "0b408d2693c1389e2817f1a3468d02783161cd33" uuid = "6d01cc9a-e8f6-580e-8c54-544227e08205" -version = "0.700.200+0" +version = "0.600.800+0" [[deps.nauty_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -916,6 +1085,6 @@ version = "0.3.1+0" [[deps.snappy_jll]] deps = ["Artifacts", "JLLWrappers", "LZO_jll", "Libdl", "Lz4_jll", "Zlib_jll"] -git-tree-sha1 = "8bc7ddafc0a7339b82a06c1dde849cd5039324d6" +git-tree-sha1 = "d34e37153e4c03205bde2f0f8ada6cced8c83978" uuid = "fe1e1685-f7be-5f59-ac9f-4ca204017dfd" -version = "1.2.0+0" +version = "1.2.1+0" diff --git a/Project.toml b/Project.toml index 4d52366..3319d21 100644 --- a/Project.toml +++ b/Project.toml @@ -10,6 +10,7 @@ DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" +Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" diff --git a/src/CodingTheory.jl b/src/CodingTheory.jl index a4940f2..f0e032d 100644 --- a/src/CodingTheory.jl +++ b/src/CodingTheory.jl @@ -10,6 +10,7 @@ using AutoHashEquals using Graphs import Graphs as Grphs using Oscar +using Hecke using Combinatorics using .Threads using LinearAlgebra @@ -31,6 +32,7 @@ import Oscar.GAP: GapObj, Globals, Packages import Base: circshift, iseven, show, length, in, zeros, ⊆, /, *, ==, ∩, +, -, copy, isequal, ∘ import Combinatorics: powerset import DataStructures: capacity +import Hecke: GroupAlgebraElem, FinGenAbGroupElem, FinFieldElem, CTFieldElem, fpFieldElem # tilings.jl LINS_flag_install = Packages.install("LINS") @@ -376,7 +378,7 @@ export HypergraphProductCode, GeneralizedShorCode, BaconCasaccinoConstruction, GeneralizedHypergraphProductCode, LiftedProductCode, bias_tailored_lifted_product_matrices, BiasTailoredLiftedProductCode, SPCDFoldProductCode, SingleParityCheckDFoldProductCode, Quintavalle_basis, asymmetric_product, symmetric_product, random_homological_product_code, - homological_product, ⊠, BivariateBicycleCode + homological_product, ⊠, BivariateBicycleCode, CoPrimeBivariateBicycleCode ############################# # Quantum/simulation.jl diff --git a/src/Quantum/product_codes.jl b/src/Quantum/product_codes.jl index efd5fa3..2af2c6c 100644 --- a/src/Quantum/product_codes.jl +++ b/src/Quantum/product_codes.jl @@ -917,7 +917,7 @@ function BivariateBicycleCode(a::T, b::T) where T <: Union{MPolyQuoRingElem{FqMP l = exps[1][1] end end - + x = matrix(F, [mod1(i + 1, l) == j ? 1 : 0 for i in 1:l, j in 1:l]) ⊗ identity_matrix(F, m) y = identity_matrix(F, l) ⊗ matrix(F, [mod1(i + 1, m) == j ? 1 : 0 for i in 1:m, j in 1:m]) @@ -943,5 +943,51 @@ function BivariateBicycleCode(a::T, b::T) where T <: Union{MPolyQuoRingElem{FqMP end end + return CSSCode(hcat(A, B), hcat(transpose(B), transpose(A))) end + + +""" + CoPrimeBivariateBicycleCode(a::MPolyQuoRingElem{FqMPolyRingElem}, b::MPolyQuoRingElem{FqMPolyRingElem}) + +Return the coprime bivariate bicycle code defined by the residue ring elements `a` and `b`. + +# Note +- This is defined in https://arxiv.org/pdf/2408.10001v1. +""" +function CoPrimeBivariateBicycleCode(a::T, b::T, l::Int, m::Int) where T <: Union{MPolyQuoRingElem{FqMPolyRingElem}, MPolyQuoRingElem{fpMPolyRingElem}} + R = parent(a) + R == parent(b) || throw(DomainError("Polynomials must have the same parent.")) + F = base_ring(base_ring(a)) + order(F) == 2 || throw(DomainError("This code family is currently only defined over binary fields.")) + length(symbols(parent(a))) == 1 || throw(DomainError("Polynomials must be over one variable.")) + g = gens(modulus(R)) + length(g) == 1 || throw(DomainError("Residue rings must have only one generator.")) + + gcd([l, m]) == 1 || throw(DomainError("l and m must be coprime numbers.")) + x = matrix(F, [mod1(i + 1, l) == j ? 1 : 0 for i in 1:l, j in 1:l]) ⊗ identity_matrix(F, m) + y = identity_matrix(F, l) ⊗ matrix(F, [mod1(i + 1, m) == j ? 1 : 0 for i in 1:m, j in 1:m]) + + A = zero_matrix(F, l * m, l * m) + for ex in exponents(lift(a)) + power, which = findmax(ex) + if which == 1 + A += x^power + elseif which == 2 + A += y^power + end + end + + B = zero_matrix(F, l * m, l * m) + for ex in exponents(lift(b)) + power, which = findmax(ex) + if which == 1 + B += x^power + elseif which == 2 + B += y^power + end + end + + return CSSCode(hcat(A, B), hcat(transpose(B), transpose(A))) +end \ No newline at end of file diff --git a/test/Quantum/product_codes_test.jl b/test/Quantum/product_codes_test.jl index 4f1dca5..b3de721 100644 --- a/test/Quantum/product_codes_test.jl +++ b/test/Quantum/product_codes_test.jl @@ -606,5 +606,61 @@ @test length(Q) == 196 @test dimension(Q) == 12 @test_broken minimum_distance(S) == 8 - end + + # co-prime bivariate bicycle codes + # [[30, 4, 6]] + S, (π) = polynomial_ring(Oscar.Nemo.Native.GF(2), [:π]) + l = 3 + m = 5 + R, _ = quo(S, ideal(S, [π[1]^(l*m)])) + a = R(1 + π[1] + π[1]^2) + b = R(π[1] + π[1]^3 + π[1]^8) + Q = CoPrimeBivariateBicycleCode(a, b, l, m) + @test length(Q) == 30 + @test_broken dimension(code) == 4 + @test_broken minimum_distance(S) == 6 + + # [[42, 6, 6]] + l = 3 + m = 7 + R, _ = quo(S, ideal(S, [π[1]^(l*m)])) + a = R(1 + π[1]^2 + π[1]^3) + b = R(π[1] + π[1]^3 + π[1]^11) + Q = CoPrimeBivariateBicycleCode(a, b, l, m) + @test length(Q) == 42 + @test_broken dimension(Q) == 6 + @test_broken minimum_distance(S) == 6 + + # [[70, 6, 8]] + l = 5 + m = 7 + R, _ = quo(S, ideal(S, [π[1]^(l*m)])) + a = R(1 + π[1]^2 + π[1]^5) + b = R(1 + π[1] + π[1]^12) + Q = CoPrimeBivariateBicycleCode(a, b, l, m) + @test length(Q) == 70 + @test_broken dimension(Q) == 6 + @test_broken minimum_distance(S) == 8 + + # [[108, 12, 6]] + l = 2 + m = 27 + R, _ = quo(S, ideal(S, [π[1]^(l*m)])) + a = R(π[1]^2 + π[1]^5 + π[1]^44) + b = R(π[1]^8 + π[1]^14 + π[1]^47) + Q = CoPrimeBivariateBicycleCode(a, b, l, m) + @test length(Q) == 108 + @test_broken dimension(Q) == 12 + @test_broken minimum_distance(S) == 6 + + # [126, 12, 10]] + l = 7 + m = 9 + R, _ = quo(S, ideal(S, [π[1]^(l*m)])) + a = R(1 + π[1] + π[1]^58) + b = R(π[1]^3 + π[1]^16 + π[1]^44) + Q = CoPrimeBivariateBicycleCode(a, b, l, m) + @test length(Q) == 126 + @test_broken dimension(Q) == 12 + @test_broken dimension(Q) == 10 end From 20340619e22b9adfd07c31826a83c62395c80035 Mon Sep 17 00:00:00 2001 From: Fe-r-oz Date: Fri, 11 Oct 2024 22:12:01 +0500 Subject: [PATCH 2/4] add code review suggestions --- Manifest.toml | 4 +-- docs/src/Quantum/product_codes.md | 2 ++ docs/src/references.bib | 18 ++++++++++ src/CodingTheory.jl | 2 +- src/Quantum/product_codes.jl | 22 ++++-------- test/Quantum/product_codes_test.jl | 57 +++++++++++++++--------------- 6 files changed, 59 insertions(+), 46 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 5d60f92..58955a9 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1027,9 +1027,9 @@ version = "0.12.1+0" [[deps.libsingular_julia_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Singular_jll", "libcxxwrap_julia_jll"] -git-tree-sha1 = "ab24eb5706b1d1a1b5037951a382b0c4fd6edf5b" +git-tree-sha1 = "436efe88c41337fd128062555fe8f8ea6c0e7309" uuid = "ae4fbd8f-ecdb-54f8-bbce-35570499b30e" -version = "0.45.5+0" +version = "0.45.6+0" [[deps.lrslib_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] diff --git a/docs/src/Quantum/product_codes.md b/docs/src/Quantum/product_codes.md index cf1ae93..a7dbdf1 100644 --- a/docs/src/Quantum/product_codes.md +++ b/docs/src/Quantum/product_codes.md @@ -6,6 +6,8 @@ - [Generealized bicycle](https://errorcorrectionzoo.org/c/generalized_bicycle): [pryadko2013quantum](@cite), [Kovalev_2013](@cite), [panteleev2021degenerate](@cite) - Generalized hypergraph product: [panteleev2021degenerate](@cite) - Bias-tailored lifted product: [roffe2023bias](@cite) +- Bivariate bicycle: [wang2024coprime](@cite) +- Coprime bivarate bicycle: [wang2024coprime](@cite) ```@autodocs diff --git a/docs/src/references.bib b/docs/src/references.bib index 6eeb9ce..e91e3cc 100644 --- a/docs/src/references.bib +++ b/docs/src/references.bib @@ -183,3 +183,21 @@ @inproceedings{yao2024belief year={2024}, organization={IEEE} } + +@article{bravyi2024high, + title={High-threshold and low-overhead fault-tolerant quantum memory}, + author={Bravyi, Sergey and Cross, Andrew W and Gambetta, Jay M and Maslov, Dmitri and Rall, Patrick and Yoder, Theodore J}, + journal={Nature}, + volume={627}, + number={8005}, + pages={778--782}, + year={2024}, + publisher={Nature Publishing Group UK London} +} + +@article{wang2024coprime, + title={Coprime Bivariate Bicycle Codes and their Properties}, + author={Wang, Ming and Mueller, Frank}, + journal={arXiv preprint arXiv:2408.10001}, + year={2024} +} diff --git a/src/CodingTheory.jl b/src/CodingTheory.jl index f0e032d..e5eb4c0 100644 --- a/src/CodingTheory.jl +++ b/src/CodingTheory.jl @@ -378,7 +378,7 @@ export HypergraphProductCode, GeneralizedShorCode, BaconCasaccinoConstruction, GeneralizedHypergraphProductCode, LiftedProductCode, bias_tailored_lifted_product_matrices, BiasTailoredLiftedProductCode, SPCDFoldProductCode, SingleParityCheckDFoldProductCode, Quintavalle_basis, asymmetric_product, symmetric_product, random_homological_product_code, - homological_product, ⊠, BivariateBicycleCode, CoPrimeBivariateBicycleCode + homological_product, ⊠, BivariateBicycleCode, CoprimeBivariateBicycleCode ############################# # Quantum/simulation.jl diff --git a/src/Quantum/product_codes.jl b/src/Quantum/product_codes.jl index 2af2c6c..ba10b1c 100644 --- a/src/Quantum/product_codes.jl +++ b/src/Quantum/product_codes.jl @@ -956,7 +956,7 @@ Return the coprime bivariate bicycle code defined by the residue ring elements ` # Note - This is defined in https://arxiv.org/pdf/2408.10001v1. """ -function CoPrimeBivariateBicycleCode(a::T, b::T, l::Int, m::Int) where T <: Union{MPolyQuoRingElem{FqMPolyRingElem}, MPolyQuoRingElem{fpMPolyRingElem}} +function CoprimeBivariateBicycleCode(a::T, b::T, l::Int, m::Int) where T <: Union{MPolyQuoRingElem{FqMPolyRingElem}, MPolyQuoRingElem{fpMPolyRingElem}} R = parent(a) R == parent(b) || throw(DomainError("Polynomials must have the same parent.")) F = base_ring(base_ring(a)) @@ -968,26 +968,18 @@ function CoPrimeBivariateBicycleCode(a::T, b::T, l::Int, m::Int) where T <: Unio gcd([l, m]) == 1 || throw(DomainError("l and m must be coprime numbers.")) x = matrix(F, [mod1(i + 1, l) == j ? 1 : 0 for i in 1:l, j in 1:l]) ⊗ identity_matrix(F, m) y = identity_matrix(F, l) ⊗ matrix(F, [mod1(i + 1, m) == j ? 1 : 0 for i in 1:m, j in 1:m]) - + P = x*y A = zero_matrix(F, l * m, l * m) for ex in exponents(lift(a)) - power, which = findmax(ex) - if which == 1 - A += x^power - elseif which == 2 - A += y^power - end + power, _ = findmax(ex) + A += P^power end B = zero_matrix(F, l * m, l * m) for ex in exponents(lift(b)) - power, which = findmax(ex) - if which == 1 - B += x^power - elseif which == 2 - B += y^power - end + power, _ = findmax(ex) + B += P^power end return CSSCode(hcat(A, B), hcat(transpose(B), transpose(A))) -end \ No newline at end of file +end diff --git a/test/Quantum/product_codes_test.jl b/test/Quantum/product_codes_test.jl index b3de721..f4117b6 100644 --- a/test/Quantum/product_codes_test.jl +++ b/test/Quantum/product_codes_test.jl @@ -607,60 +607,61 @@ @test dimension(Q) == 12 @test_broken minimum_distance(S) == 8 - # co-prime bivariate bicycle codes + # Coprime Bivariate Bicycle codes + # Table 2 of https://arxiv.org/pdf/2408.10001v1 # [[30, 4, 6]] - S, (π) = polynomial_ring(Oscar.Nemo.Native.GF(2), [:π]) + S, (P) = polynomial_ring(Oscar.Nemo.Native.GF(2), [:P]) l = 3 m = 5 - R, _ = quo(S, ideal(S, [π[1]^(l*m)])) - a = R(1 + π[1] + π[1]^2) - b = R(π[1] + π[1]^3 + π[1]^8) - Q = CoPrimeBivariateBicycleCode(a, b, l, m) + R, _ = quo(S, ideal(S, [P[1]^(l*m)])) + a = R(1 + P[1] + P[1]^2) + b = R(P[1] + P[1]^3 + P[1]^8) + Q = CoprimeBivariateBicycleCode(a, b, l, m) @test length(Q) == 30 - @test_broken dimension(code) == 4 + @test dimension(Q) == 4 @test_broken minimum_distance(S) == 6 - + # [[42, 6, 6]] l = 3 m = 7 - R, _ = quo(S, ideal(S, [π[1]^(l*m)])) - a = R(1 + π[1]^2 + π[1]^3) - b = R(π[1] + π[1]^3 + π[1]^11) - Q = CoPrimeBivariateBicycleCode(a, b, l, m) + R, _ = quo(S, ideal(S, [P[1]^(l*m)])) + a = R(1 + P[1]^2 + P[1]^3) + b = R(P[1] + P[1]^3 + P[1]^11) + Q = CoprimeBivariateBicycleCode(a, b, l, m) @test length(Q) == 42 - @test_broken dimension(Q) == 6 + @test dimension(Q) == 6 @test_broken minimum_distance(S) == 6 # [[70, 6, 8]] l = 5 m = 7 - R, _ = quo(S, ideal(S, [π[1]^(l*m)])) - a = R(1 + π[1]^2 + π[1]^5) - b = R(1 + π[1] + π[1]^12) - Q = CoPrimeBivariateBicycleCode(a, b, l, m) + R, _ = quo(S, ideal(S, [P[1]^(l*m)])) + a = R(1 + P[1] + P[1]^5) + b = R(1 + P[1] + P[1]^12) + Q = CoprimeBivariateBicycleCode(a, b, l, m) @test length(Q) == 70 - @test_broken dimension(Q) == 6 + @test dimension(Q) == 6 @test_broken minimum_distance(S) == 8 # [[108, 12, 6]] l = 2 m = 27 - R, _ = quo(S, ideal(S, [π[1]^(l*m)])) - a = R(π[1]^2 + π[1]^5 + π[1]^44) - b = R(π[1]^8 + π[1]^14 + π[1]^47) - Q = CoPrimeBivariateBicycleCode(a, b, l, m) + R, _ = quo(S, ideal(S, [P[1]^(l*m)])) + a = R(P[1]^2 + P[1]^5 + P[1]^44) + b = R(P[1]^8 + P[1]^14 + P[1]^47) + Q = CoprimeBivariateBicycleCode(a, b, l, m) @test length(Q) == 108 - @test_broken dimension(Q) == 12 + @test dimension(Q) == 12 @test_broken minimum_distance(S) == 6 # [126, 12, 10]] l = 7 m = 9 - R, _ = quo(S, ideal(S, [π[1]^(l*m)])) - a = R(1 + π[1] + π[1]^58) - b = R(π[1]^3 + π[1]^16 + π[1]^44) - Q = CoPrimeBivariateBicycleCode(a, b, l, m) + R, _ = quo(S, ideal(S, [P[1]^(l*m)])) + a = R(1 + P[1] + P[1]^58) + b = R(P[1]^3 + P[1]^16 + P[1]^44) + Q = CoprimeBivariateBicycleCode(a, b, l, m) @test length(Q) == 126 - @test_broken dimension(Q) == 12 + @test dimension(Q) == 12 @test_broken dimension(Q) == 10 end From 2fa36f9b9811cc2976e8ced89379d4fb3f6634ab Mon Sep 17 00:00:00 2001 From: Fe-r-oz Date: Sat, 12 Oct 2024 00:53:51 +0500 Subject: [PATCH 3/4] add code review suggestions --- Manifest.toml | 291 ++++++----------------------- Project.toml | 2 +- src/CodingTheory.jl | 2 - src/Quantum/product_codes.jl | 24 ++- test/Quantum/product_codes_test.jl | 20 +- 5 files changed, 91 insertions(+), 248 deletions(-) diff --git a/Manifest.toml b/Manifest.toml index 58955a9..dd7a164 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.4" +julia_version = "1.10.5" manifest_format = "2.0" -project_hash = "163f71688893b1a2d676f6ba6e175eb2cf6dfafe" +project_hash = "2d6645f27d1e47bd5cddd8a51982054007baf2cb" [[deps.ASL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -12,9 +12,9 @@ version = "0.1.3+0" [[deps.AbstractAlgebra]] deps = ["InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "ca88b21f7430be07fb6e9c0500fe4af65e023857" +git-tree-sha1 = "45e46834b8fcfd59389939445267047577b19df5" uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.41.11" +version = "0.43.1" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] @@ -30,21 +30,11 @@ version = "1.5.0" ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.0.4" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - [[deps.AlgebraicSolving]] -deps = ["LinearAlgebra", "Logging", "LoopVectorization", "Markdown", "Nemo", "Printf", "Random", "StaticArrays", "Test", "msolve_jll"] -git-tree-sha1 = "6ed4d44c604045dae661c5971bbfa964fbc93b5f" +deps = ["LinearAlgebra", "Logging", "Markdown", "Nemo", "Printf", "Random", "StaticArrays", "Test", "msolve_jll"] +git-tree-sha1 = "59b14f801f508a03b0643713b22c4696bc52e445" uuid = "66b61cbe-0446-4d5d-9090-1ff510639f9d" -version = "0.4.16" +version = "0.7.0" [[deps.AliasTables]] deps = ["PtrArrays", "Random"] @@ -62,43 +52,14 @@ git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" uuid = "ec485272-7323-5ecc-a04f-4719b315124d" version = "0.4.0" -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "3640d077b6dafd64ceb8fd5c1ec76f7ca53bcf76" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.16.0" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceCUDSSExt = "CUDSS" - ArrayInterfaceChainRulesExt = "ChainRules" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceReverseDiffExt = "ReverseDiff" - ArrayInterfaceSparseArraysExt = "SparseArrays" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" - ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.AutoHashEquals]] -git-tree-sha1 = "4ec6b48702dacc5994a835c1189831755e4e76ef" +deps = ["Pkg"] +git-tree-sha1 = "daaeb6f7f77b88c072a83a2451801818acb5c63b" uuid = "15f4f7f2-30c1-5605-9d31-71845cf9641f" -version = "2.2.0" +version = "2.1.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" @@ -109,40 +70,17 @@ git-tree-sha1 = "7fea8f658689fa5062b23f4400eda888b7ae2aaa" uuid = "f01c122e-0ea1-4f85-ad8f-907073ad7a9f" version = "0.1.3" -[[deps.BitTwiddlingConvenienceFunctions]] -deps = ["Static"] -git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" -uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" -version = "0.1.6" - [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" version = "1.0.8+1" -[[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" -uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.6" - -[[deps.CloseOpenIntervals]] -deps = ["Static", "StaticArrayInterface"] -git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" -uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" -version = "0.1.13" - [[deps.Combinatorics]] git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" -[[deps.CommonWorldInvalidations]] -git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" -uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" -version = "1.0.0" - [[deps.Compat]] deps = ["TOML", "UUIDs"] git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" @@ -158,12 +96,6 @@ deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" version = "1.1.1+0" -[[deps.CpuId]] -deps = ["Markdown"] -git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" -uuid = "adafc99b-e345-5852-983c-f28acb93d879" -version = "0.3.1" - [[deps.CxxWrap]] deps = ["Libdl", "MacroTools", "libcxxwrap_julia_jll"] git-tree-sha1 = "3345cb637ca1efb2ebf7f5145558522b92660d1f" @@ -203,9 +135,9 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "d7477ecdafb813ddee2ae727afa94e9dcb5f3fb0" +git-tree-sha1 = "e6c693a0e4394f8fda0e51a5bdf5aef26f8235e9" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.112" +version = "0.25.111" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -236,9 +168,9 @@ version = "1.8.0" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25" +git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+1" +version = "3.3.10+0" [[deps.FLINT_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "MPFR_jll", "OpenBLAS32_jll"] @@ -262,28 +194,28 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] FillArraysStatisticsExt = "Statistics" [[deps.GAP]] -deps = ["Artifacts", "Compat", "Downloads", "GAP_jll", "GAP_lib_jll", "GAP_pkg_juliainterface_jll", "InteractiveUtils", "Libdl", "MacroTools", "Markdown", "Ncurses_jll", "Pidfile", "Pkg", "REPL", "Random", "Scratch"] -git-tree-sha1 = "fcaf50e1874719fdec62c3646351e52007ad63aa" +deps = ["AbstractAlgebra", "Artifacts", "Compat", "Downloads", "GAP_jll", "GAP_lib_jll", "GAP_pkg_juliainterface_jll", "InteractiveUtils", "Libdl", "MacroTools", "Markdown", "Ncurses_jll", "Pidfile", "Pkg", "REPL", "Random", "Scratch"] +git-tree-sha1 = "b045754f9aae9f79df4b18b2e4df84887897105d" uuid = "c863536a-3901-11e9-33e7-d5cd0df7b904" -version = "0.10.4" +version = "0.11.4" [[deps.GAP_jll]] -deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg", "Readline_jll", "Zlib_jll"] -git-tree-sha1 = "c3a00b8f8ced0887d52104d0a0df233d9efc79d4" +deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Readline_jll", "Zlib_jll"] +git-tree-sha1 = "becf60c941de1c38cea3dd76562c1c1d99052745" uuid = "5cd7a574-2c56-5be2-91dc-c8bc375b9ddf" -version = "400.1200.200+9" +version = "400.1300.102+0" [[deps.GAP_lib_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "473b619163e30d9cc58d4a8f9d412e6ea8910fcf" +git-tree-sha1 = "eb3391939716a7ca7094879bb4455a49acb2b496" uuid = "de1ad85e-c930-5cd4-919d-ccd3fcafd1a3" -version = "400.1201.200+0" +version = "400.1300.100+0" [[deps.GAP_pkg_juliainterface_jll]] deps = ["Artifacts", "GAP_jll", "GAP_lib_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c5a0f16f0478ab067752861d3c9339f335832459" +git-tree-sha1 = "786044766785f5f2192f45de19acae5d1bb8885d" uuid = "ba154793-3a7d-51ee-8800-e295b0cf7374" -version = "0.800.300+3" +version = "0.900.100+0" [[deps.GLPK_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -298,32 +230,26 @@ version = "6.2.1+6" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780" +git-tree-sha1 = "ebd18c326fa6cee1efb7da9a3b45cf69da2ed4d9" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.12.0" +version = "1.11.2" [[deps.Hecke]] deps = ["AbstractAlgebra", "Dates", "Distributed", "InteractiveUtils", "LazyArtifacts", "Libdl", "LinearAlgebra", "Markdown", "Nemo", "Pkg", "Printf", "Random", "RandomExtensions", "Serialization", "SparseArrays"] -git-tree-sha1 = "f89af7272ac9585fe73c1f0d810970b025ddc345" +git-tree-sha1 = "9257286b6ada9e8d0ae2a629bf13c51a149c5562" uuid = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" -version = "0.32.3" +version = "0.34.3" weakdeps = ["GAP", "Polymake"] [deps.Hecke.extensions] GAPExt = "GAP" PolymakeExt = "Polymake" -[[deps.HostCPUFeatures]] -deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "8e070b599339d622e9a081d17230d74a5c473293" -uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.17" - [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "dd3b49277ec2bb2c6b94eb1604d4d0616016f7a6" +git-tree-sha1 = "5e19e1e4fa3e71b774ce746274364aef0234634e" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.2+0" +version = "2.11.1+0" [[deps.HypergeometricFunctions]] deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] @@ -331,11 +257,6 @@ git-tree-sha1 = "7c4195be1649ae622304031ed46a2f4df989f1eb" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" version = "0.3.24" -[[deps.IfElse]] -git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.1" - [[deps.Inflate]] git-tree-sha1 = "d1b1b796e47d94588b3757fe84fbf65a5ec4a80d" uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" @@ -394,15 +315,9 @@ version = "18.1.7+0" [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731" +git-tree-sha1 = "70c5da094887fd2cae843b8db33920bac4b6f07d" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+1" - -[[deps.LayoutPointers]] -deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" -uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.17" +version = "2.10.2+0" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] @@ -458,26 +373,11 @@ version = "0.3.28" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[deps.LoopVectorization]] -deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "8084c25a250e00ae427a379a5b607e7aed96a2dd" -uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.171" - - [deps.LoopVectorization.extensions] - ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] - SpecialFunctionsExt = "SpecialFunctions" - - [deps.LoopVectorization.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" - [[deps.Lz4_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "abf88ff67f4fd89839efcae2f4c39cbc4ecd0846" +git-tree-sha1 = "7f26c8fc5229e68484e0b3447312c98e16207d11" uuid = "5ced341a-0733-55b8-9ab6-a4889d929147" -version = "1.10.0+1" +version = "1.10.0+0" [[deps.METIS_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -508,11 +408,6 @@ git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.13" -[[deps.ManualMemory]] -git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" -uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" -version = "0.1.8" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -539,9 +434,9 @@ version = "1.25.1+0" [[deps.Mongoc]] deps = ["Dates", "DecFP", "MongoC_jll", "Serialization"] -git-tree-sha1 = "1f0d7579d1bacc1446751990d7e0c4c0bf0f3277" +git-tree-sha1 = "f47bf7ed9d9c1da0a632777ca7dc406e3ad5f923" uuid = "4fe8b98c-fc19-5c23-8ec2-168ff83495f2" -version = "0.9.1" +version = "0.9.0" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" @@ -549,15 +444,15 @@ version = "2023.1.10" [[deps.Ncurses_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3690e6c58c16ba676bcc9b5654762fe8a05db1c7" +git-tree-sha1 = "3ac1ca10bae513c9cc8f83d7734b921b8007b574" uuid = "68e3532b-a499-55ff-9963-d1c0c0748b3a" -version = "6.5.0+1" +version = "6.5.0+0" [[deps.Nemo]] deps = ["AbstractAlgebra", "FLINT_jll", "Libdl", "LinearAlgebra", "Pkg", "Random", "RandomExtensions", "SHA"] -git-tree-sha1 = "bae0f1452c648d84535b581103ab8a59cf10a32a" +git-tree-sha1 = "a644b4943424d9f1ffe7a7a1cdda617053bac5c0" uuid = "2edaba10-b0f1-5616-af89-8c11ac63239a" -version = "0.45.7" +version = "0.47.1" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -569,15 +464,6 @@ git-tree-sha1 = "d9c6d1dca818768f1671244dcdf8e8e08b2b8937" uuid = "76642167-d241-5cee-8c94-7a494e8cb7b7" version = "1.12.1+0" -[[deps.OffsetArrays]] -git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.1" -weakdeps = ["Adapt"] - - [deps.OffsetArrays.extensions] - OffsetArraysAdaptExt = "Adapt" - [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" @@ -613,9 +499,11 @@ version = "1.6.3" [[deps.Oscar]] deps = ["AbstractAlgebra", "AlgebraicSolving", "Distributed", "GAP", "Hecke", "JSON", "JSON3", "LazyArtifacts", "Markdown", "Nemo", "Pkg", "Polymake", "Random", "RandomExtensions", "Serialization", "Singular", "TOPCOM_jll", "UUIDs", "cohomCalg_jll"] -git-tree-sha1 = "6d86eb479c0afaebad9c00e862d91f3ae1de3c4f" +git-tree-sha1 = "6e9ad54815c837a1a27d19280dddfca5f0f5bf03" +repo-rev = "master" +repo-url = "https://github.com/oscar-system/Oscar.jl.git" uuid = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" -version = "1.1.1" +version = "1.2.0-DEV" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] @@ -652,17 +540,11 @@ deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", " uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" version = "1.10.0" -[[deps.PolyesterWeave]] -deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] -git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" -uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" -version = "0.2.2" - [[deps.Polymake]] deps = ["AbstractAlgebra", "BinaryWrappers", "CxxWrap", "Downloads", "JSON", "Libdl", "Mongoc", "NetworkOptions", "Ninja_jll", "Perl_jll", "Pidfile", "Pkg", "REPL", "Scratch", "SparseArrays", "TOPCOM_jll", "lib4ti2_jll", "libpolymake_julia_jll", "polymake_jll", "polymake_oscarnumber_jll"] -git-tree-sha1 = "e065263f7e818a419bdc89979d7196222bb70efb" +git-tree-sha1 = "fa518c47ef32714e99cb0915c45b564fb91fe5bc" uuid = "d720cf60-89b5-51f5-aff5-213f193123e7" -version = "0.11.22" +version = "0.11.21" [[deps.PrecompileTools]] deps = ["Preferences"] @@ -719,21 +601,15 @@ version = "0.4.4" [[deps.Readline_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ncurses_jll"] -git-tree-sha1 = "69684dc9c2c69f7c515097841991362cca0739ea" +git-tree-sha1 = "9d70e0c890a6c7ca3eb1ca0eaabba4d34795b7fb" uuid = "05236dd9-4125-5232-aa7c-9ec0c9b2c25a" -version = "8.2.1+1" +version = "8.2.1+0" [[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" version = "1.2.2" -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - [[deps.Rmath]] deps = ["Random", "Rmath_jll"] git-tree-sha1 = "852bd0f55565a9e973fcfee83a84413270224dc4" @@ -756,17 +632,6 @@ version = "800.0.301+0" uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" -[[deps.SIMDTypes]] -git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" -uuid = "94e857df-77ce-4151-89e5-788b33177be4" -version = "0.1.0" - -[[deps.SLEEFPirates]] -deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.43" - [[deps.SPRAL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] git-tree-sha1 = "11f3da4b25efacd1cec8e263421f2a9003a5e8e0" @@ -794,15 +659,15 @@ version = "0.9.4" [[deps.Singular]] deps = ["AbstractAlgebra", "BinaryWrappers", "CxxWrap", "Libdl", "LinearAlgebra", "Nemo", "Pidfile", "Pkg", "Random", "RandomExtensions", "Singular_jll", "Statistics", "lib4ti2_jll", "libsingular_julia_jll"] -git-tree-sha1 = "1490e197db038b23960cef430c56fb277fdf29a6" +git-tree-sha1 = "9b6135b5c8081f83eb2c334d7a7b903c2076aef7" uuid = "bcd08a7b-43d2-5ff7-b6d4-c458787f915c" -version = "0.23.5" +version = "0.23.7" [[deps.Singular_jll]] deps = ["Artifacts", "FLINT_jll", "GMP_jll", "JLLWrappers", "Libdl", "MPFR_jll", "cddlib_jll"] -git-tree-sha1 = "6c85174749476dcd3f059a33884072d748033263" +git-tree-sha1 = "052417021e25f7aca4e81e17f5e12feb53f7ef00" uuid = "43d676ae-4934-50ba-8046-7a96366d613b" -version = "404.0.606+0" +version = "404.0.605+0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" @@ -830,23 +695,6 @@ version = "2.4.0" [deps.SpecialFunctions.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -[[deps.Static]] -deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] -git-tree-sha1 = "87d51a3ee9a4b0d2fe054bdd3fc2436258db2603" -uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "1.1.1" - -[[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] -git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" -uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.8.0" -weakdeps = ["OffsetArrays", "StaticArrays"] - - [deps.StaticArrayInterface.extensions] - StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" - StaticArrayInterfaceStaticArraysExt = "StaticArrays" - [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" @@ -943,30 +791,13 @@ git-tree-sha1 = "42fd9023fef18b9b78c8343a4e2f3813ffbcefcb" uuid = "1c621080-faea-4a02-84b6-bbd5e436b8fe" version = "1.0.0" -[[deps.ThreadingUtilities]] -deps = ["ManualMemory"] -git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" -uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.2" - [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -[[deps.VectorizationBase]] -deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "e7f5b81c65eb858bed630fe006837b935518aca5" -uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.70" - [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" @@ -974,9 +805,9 @@ version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b" +git-tree-sha1 = "e678132f07ddb5bfa46857f0d7620fb9be675d3b" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+1" +version = "1.5.6+0" [[deps.bliss_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1011,7 +842,7 @@ version = "1.6.10+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+1" +version = "5.11.0+0" [[deps.libcxxwrap_julia_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1027,9 +858,9 @@ version = "0.12.1+0" [[deps.libsingular_julia_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Singular_jll", "libcxxwrap_julia_jll"] -git-tree-sha1 = "436efe88c41337fd128062555fe8f8ea6c0e7309" +git-tree-sha1 = "55003499aa923d492234577898643b0e1e471e9d" uuid = "ae4fbd8f-ecdb-54f8-bbce-35570499b30e" -version = "0.45.6+0" +version = "0.45.4+0" [[deps.lrslib_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1039,9 +870,9 @@ version = "0.3.3+0" [[deps.msolve_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "FLINT_jll", "GMP_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl", "MPFR_jll"] -git-tree-sha1 = "0b408d2693c1389e2817f1a3468d02783161cd33" +git-tree-sha1 = "7324fd011ebc4b9e43d9aa365c79797860459d0a" uuid = "6d01cc9a-e8f6-580e-8c54-544227e08205" -version = "0.600.800+0" +version = "0.700.200+0" [[deps.nauty_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1085,6 +916,6 @@ version = "0.3.1+0" [[deps.snappy_jll]] deps = ["Artifacts", "JLLWrappers", "LZO_jll", "Libdl", "Lz4_jll", "Zlib_jll"] -git-tree-sha1 = "d34e37153e4c03205bde2f0f8ada6cced8c83978" +git-tree-sha1 = "8bc7ddafc0a7339b82a06c1dde849cd5039324d6" uuid = "fe1e1685-f7be-5f59-ac9f-4ca204017dfd" -version = "1.2.1+0" +version = "1.2.0+0" diff --git a/Project.toml b/Project.toml index 3319d21..09723eb 100644 --- a/Project.toml +++ b/Project.toml @@ -10,10 +10,10 @@ DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" -Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" +Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21" ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" diff --git a/src/CodingTheory.jl b/src/CodingTheory.jl index e5eb4c0..c17b6d3 100644 --- a/src/CodingTheory.jl +++ b/src/CodingTheory.jl @@ -10,7 +10,6 @@ using AutoHashEquals using Graphs import Graphs as Grphs using Oscar -using Hecke using Combinatorics using .Threads using LinearAlgebra @@ -32,7 +31,6 @@ import Oscar.GAP: GapObj, Globals, Packages import Base: circshift, iseven, show, length, in, zeros, ⊆, /, *, ==, ∩, +, -, copy, isequal, ∘ import Combinatorics: powerset import DataStructures: capacity -import Hecke: GroupAlgebraElem, FinGenAbGroupElem, FinFieldElem, CTFieldElem, fpFieldElem # tilings.jl LINS_flag_install = Packages.install("LINS") diff --git a/src/Quantum/product_codes.jl b/src/Quantum/product_codes.jl index ba10b1c..cca4512 100644 --- a/src/Quantum/product_codes.jl +++ b/src/Quantum/product_codes.jl @@ -956,26 +956,40 @@ Return the coprime bivariate bicycle code defined by the residue ring elements ` # Note - This is defined in https://arxiv.org/pdf/2408.10001v1. """ -function CoprimeBivariateBicycleCode(a::T, b::T, l::Int, m::Int) where T <: Union{MPolyQuoRingElem{FqMPolyRingElem}, MPolyQuoRingElem{fpMPolyRingElem}} +function CoprimeBivariateBicycleCode(a::T, b::T) where T <: Union{MPolyQuoRingElem{FqMPolyRingElem}, MPolyQuoRingElem{fpMPolyRingElem}} R = parent(a) R == parent(b) || throw(DomainError("Polynomials must have the same parent.")) F = base_ring(base_ring(a)) order(F) == 2 || throw(DomainError("This code family is currently only defined over binary fields.")) length(symbols(parent(a))) == 1 || throw(DomainError("Polynomials must be over one variable.")) g = gens(modulus(R)) - length(g) == 1 || throw(DomainError("Residue rings must have only one generator.")) - gcd([l, m]) == 1 || throw(DomainError("l and m must be coprime numbers.")) + m = -1 + l = -1 + + exps = collect(exponents(g[1]))[1][1] + length(exps) == 1 || throw(ArgumentError("Moduli of the incorrect form.")) + facs = factor(ZZ(exps)).fac + pfacs = collect(keys(facs)) + pexps = collect(values(facs)) + + l = Int(pfacs[1]^pexps[1]) + m = Int(pfacs[2]^pexps[2]) + + length(pfacs) == 2 ? (gcd([l, m]) == 1 ? + nothing : throw(ArgumentError("l and m must be coprime numbers."))) : throw(ArgumentError("Moduli of the incorrect form.")) + x = matrix(F, [mod1(i + 1, l) == j ? 1 : 0 for i in 1:l, j in 1:l]) ⊗ identity_matrix(F, m) y = identity_matrix(F, l) ⊗ matrix(F, [mod1(i + 1, m) == j ? 1 : 0 for i in 1:m, j in 1:m]) + P = x*y - A = zero_matrix(F, l * m, l * m) + A = zero_matrix(F, exps, exps) for ex in exponents(lift(a)) power, _ = findmax(ex) A += P^power end - B = zero_matrix(F, l * m, l * m) + B = zero_matrix(F, exps, exps) for ex in exponents(lift(b)) power, _ = findmax(ex) B += P^power diff --git a/test/Quantum/product_codes_test.jl b/test/Quantum/product_codes_test.jl index f4117b6..0490d8d 100644 --- a/test/Quantum/product_codes_test.jl +++ b/test/Quantum/product_codes_test.jl @@ -616,10 +616,10 @@ R, _ = quo(S, ideal(S, [P[1]^(l*m)])) a = R(1 + P[1] + P[1]^2) b = R(P[1] + P[1]^3 + P[1]^8) - Q = CoprimeBivariateBicycleCode(a, b, l, m) + Q = CoprimeBivariateBicycleCode(a, b) @test length(Q) == 30 @test dimension(Q) == 4 - @test_broken minimum_distance(S) == 6 + @test_broken minimum_distance(Q) == 6 # [[42, 6, 6]] l = 3 @@ -627,10 +627,10 @@ R, _ = quo(S, ideal(S, [P[1]^(l*m)])) a = R(1 + P[1]^2 + P[1]^3) b = R(P[1] + P[1]^3 + P[1]^11) - Q = CoprimeBivariateBicycleCode(a, b, l, m) + Q = CoprimeBivariateBicycleCode(a, b) @test length(Q) == 42 @test dimension(Q) == 6 - @test_broken minimum_distance(S) == 6 + @test_broken minimum_distance(Q) == 6 # [[70, 6, 8]] l = 5 @@ -638,10 +638,10 @@ R, _ = quo(S, ideal(S, [P[1]^(l*m)])) a = R(1 + P[1] + P[1]^5) b = R(1 + P[1] + P[1]^12) - Q = CoprimeBivariateBicycleCode(a, b, l, m) + Q = CoprimeBivariateBicycleCode(a, b) @test length(Q) == 70 @test dimension(Q) == 6 - @test_broken minimum_distance(S) == 8 + @test_broken minimum_distance(Q) == 8 # [[108, 12, 6]] l = 2 @@ -649,10 +649,10 @@ R, _ = quo(S, ideal(S, [P[1]^(l*m)])) a = R(P[1]^2 + P[1]^5 + P[1]^44) b = R(P[1]^8 + P[1]^14 + P[1]^47) - Q = CoprimeBivariateBicycleCode(a, b, l, m) + Q = CoprimeBivariateBicycleCode(a, b) @test length(Q) == 108 @test dimension(Q) == 12 - @test_broken minimum_distance(S) == 6 + @test_broken minimum_distance(Q) == 6 # [126, 12, 10]] l = 7 @@ -660,8 +660,8 @@ R, _ = quo(S, ideal(S, [P[1]^(l*m)])) a = R(1 + P[1] + P[1]^58) b = R(P[1]^3 + P[1]^16 + P[1]^44) - Q = CoprimeBivariateBicycleCode(a, b, l, m) + Q = CoprimeBivariateBicycleCode(a, b) @test length(Q) == 126 @test dimension(Q) == 12 - @test_broken dimension(Q) == 10 + @test_broken minimum_distance(Q) == 10 end From ffbbb979f53b9f8241b3e18488be8b247f581030 Mon Sep 17 00:00:00 2001 From: Fe-r-oz Date: Sat, 12 Oct 2024 01:02:52 +0500 Subject: [PATCH 4/4] remove extra line --- src/Quantum/product_codes.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Quantum/product_codes.jl b/src/Quantum/product_codes.jl index cca4512..187c9f1 100644 --- a/src/Quantum/product_codes.jl +++ b/src/Quantum/product_codes.jl @@ -947,7 +947,6 @@ function BivariateBicycleCode(a::T, b::T) where T <: Union{MPolyQuoRingElem{FqMP return CSSCode(hcat(A, B), hcat(transpose(B), transpose(A))) end - """ CoPrimeBivariateBicycleCode(a::MPolyQuoRingElem{FqMPolyRingElem}, b::MPolyQuoRingElem{FqMPolyRingElem})