Skip to content

Fix #601: Optimized code_n dimension execution to O(1) for bigger codes#702

Open
the-punisher-29 wants to merge 1 commit into
QuantumSavory:masterfrom
the-punisher-29:feature/perf-code-n
Open

Fix #601: Optimized code_n dimension execution to O(1) for bigger codes#702
the-punisher-29 wants to merge 1 commit into
QuantumSavory:masterfrom
the-punisher-29:feature/perf-code-n

Conversation

@the-punisher-29

@the-punisher-29 the-punisher-29 commented Mar 23, 2026

Copy link
Copy Markdown

Keeping this as a draft , was facing some issues with Oscar compilation on Julia 1.12 on my machine, so although i ran this (ECC_TEST="base" julia --project=. -e 'using Pkg; Pkg.test("QuantumClifford")') test, im'not sure 100%
. I checked the formulas against the base framework , but I will wait for the tests here and once everything is good,i'll mark this ready.

The problem (#601, found while testing #594): property tests on the bigger extension-aware codes (Tricycles, Homological Products, Tanner variants) were hitting O(N³) because the framework was building entire parity matrices just to count columns for code_n.

What I did in this:

  • Found every code in lib/QECCore and ext/ that was falling back to the matrix builder for sizing.
  • Worked out closed-form dimension equations for all 10 unoptimized families.(please,inform if i missed any)
  • Added @test (@timed code_n(code)).time < 10 guards in test_ecc_codeproperties.jl to catch future regressions.

here is some of the codes i worked on (code family name and then on right its formula for code_n)

  • GeneralizedToric — 2αβ
    α×β lattice has αβ horizontal + αβ vertical edges

  • DelfosseReichardt — p · 2^m
    Kronecker product of H₁ (p cols) and Reed-Muller H_RM (2^m cols)

  • QuantumTannerGraphProduct — n₁n₂ + m₁m₂
    Qubits sit on faces of the product complex: E₁×E₂ and V₁×V₂

  • CyclicQuantumTannerGraphProduct — 8m²
    Symmetric bipartite subgraphs with 4m vertices and degree 2m each

  • TrivariateTricycle — 3lmp
    3 circulant blocks over polynomial ring with cyclic degrees l, m, p

  • ExtendedGeneralizedBicycle — 2mℓ
    2-block bicycle structure with ring depth scaled by expansion index m

  • GeneralizedHyperGraphProduct — 2 · rows(A) · ℓ
    Tensor sum rℓ + cℓ, and the constructor forces A to be square (r = c)

  • MultivariateMulticycle — C(t, t/2) · ∏|Gᵢ|
    Koszul complex of length t; qubits live at middle dimension t/2

  • HomologicalProduct — Σᵢ Rᵢ ∏ⱼ≠ᵢ Cⱼ
    Künneth theorem: degree 1 needs exactly one factor at degree 1, rest at 0

  • DoubleHomologicalProduct — n⁴ + 4n²m² + m⁴
    Künneth expansion over dual boundary layers at scales nm and n²+m²

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1)

Time benchmarks
master 9c2cb60... master / 9c2cb60...
circuitsim/compactification/compact 6.87 ± 0.021 ms 6.95 ± 0.021 ms 0.989 ± 0.0043
circuitsim/compactification/no_compact 6.87 ± 0.041 ms 6.93 ± 0.031 ms 0.991 ± 0.0074
circuitsim/mctrajectories/q1001_r1 16.9 ± 0.51 ms 16 ± 0.16 ms 1.06 ± 0.034
circuitsim/mctrajectories/q101_r1 0.177 ± 0.0099 ms 0.177 ± 0.0097 ms 1 ± 0.078
circuitsim/mctrajectories_sumtype/q1001_r1 15.6 ± 0.78 ms 14 ± 0.27 ms 1.12 ± 0.06
circuitsim/mctrajectories_sumtype/q101_r1 0.122 ± 0.0039 ms 0.123 ± 0.0024 ms 0.992 ± 0.037
circuitsim/mctrajectories_union/q1001_r1 15.7 ± 0.76 ms 13.7 ± 0.21 ms 1.14 ± 0.058
circuitsim/mctrajectories_union/q101_r1 0.121 ± 0.0035 ms 0.122 ± 0.0021 ms 0.988 ± 0.034
circuitsim/pftrajectories/q1001_r1 0.0791 ± 0.043 ms 0.0781 ± 0.04 ms 1.01 ± 0.75
circuitsim/pftrajectories/q1001_r100 0.188 ± 0.01 ms 0.187 ± 0.011 ms 1 ± 0.081
circuitsim/pftrajectories/q1001_r10000 1.16 ± 0.011 ms 1.16 ± 0.012 ms 1 ± 0.014
circuitsim/pftrajectories/q101_r1 8.1 ± 3.5 μs 7.99 ± 3.6 μs 1.01 ± 0.63
circuitsim/pftrajectories_sumtype/q1001_r1 0.166 ± 0.0018 ms 0.164 ± 0.0027 ms 1.01 ± 0.02
circuitsim/pftrajectories_sumtype/q1001_r100 0.275 ± 0.009 ms 0.274 ± 0.0087 ms 1 ± 0.046
circuitsim/pftrajectories_sumtype/q1001_r10000 1.24 ± 0.01 ms 1.23 ± 0.014 ms 1 ± 0.014
circuitsim/pftrajectories_sumtype/q1001_r10000_fastrow 6.15 ± 0.13 ms 6.11 ± 0.027 ms 1.01 ± 0.022
circuitsim/pftrajectories_sumtype/q101_r1 16.7 ± 0.08 μs 16.6 ± 0.09 μs 1.01 ± 0.0073
circuitsim/pftrajectories_union/q1001_r1 23.3 ± 0.079 μs 23.6 ± 0.07 μs 0.987 ± 0.0044
circuitsim/pftrajectories_union/q1001_r100 0.134 ± 0.00066 ms 0.135 ± 0.00061 ms 0.999 ± 0.0067
circuitsim/pftrajectories_union/q1001_r10000 1.09 ± 0.0074 ms 1.09 ± 0.0084 ms 1 ± 0.01
circuitsim/pftrajectories_union/q101_r1 2.43 ± 0.011 μs 2.45 ± 0.01 μs 0.988 ± 0.006
clifford/dense/cnot250_on_dense500_destab 11.1 ± 0.049 ms 11.2 ± 0.053 ms 0.992 ± 0.0064
clifford/dense/cnot250_on_dense500_stab 5.55 ± 0.035 ms 5.6 ± 0.025 ms 0.992 ± 0.0077
clifford/dense/cnot250_on_diag500_destab 0.976 ± 0.0029 ms 1.13 ± 0.0037 ms 0.865 ± 0.0038
clifford/dense/cnot250_on_diag500_stab 0.568 ± 0.0099 ms 0.569 ± 0.0096 ms 0.998 ± 0.024
clifford/dense/cnot_on_dense500_destab 0.0445 ± 0.00035 ms 0.0445 ± 0.0004 ms 1 ± 0.012
clifford/dense/cnot_on_dense500_stab 22.8 ± 0.23 μs 22.7 ± 0.2 μs 1 ± 0.013
clifford/dense/cnot_on_diag500_destab 26.7 ± 0.61 μs 26.5 ± 0.66 μs 1.01 ± 0.034
clifford/dense/cnot_on_diag500_stab 13.7 ± 0.33 μs 14 ± 0.32 μs 0.981 ± 0.033
clifford/dense/dense500_on_dense500_destab 11.1 ± 0.049 ms 11.1 ± 0.044 ms 0.998 ± 0.0059
clifford/dense/dense500_on_dense500_stab 5.56 ± 0.027 ms 5.62 ± 0.02 ms 0.989 ± 0.0061
clifford/dense/dense500_on_diag500_destab 1.13 ± 0.0042 ms 1.13 ± 0.004 ms 1 ± 0.0051
clifford/dense/dense500_on_diag500_stab 0.568 ± 0.0097 ms 0.57 ± 0.0096 ms 0.998 ± 0.024
clifford/symbolic/cnot250_on_dense500_destab 1.5 ± 0.017 ms 1.52 ± 0.013 ms 0.992 ± 0.014
clifford/symbolic/cnot250_on_dense500_stab 0.749 ± 0.0076 ms 0.761 ± 0.0054 ms 0.984 ± 0.012
clifford/symbolic/cnot250_on_diag500_destab 1.23 ± 0.017 ms 1.23 ± 0.015 ms 0.996 ± 0.018
clifford/symbolic/cnot250_on_diag500_stab 0.622 ± 0.0099 ms 0.634 ± 0.0084 ms 0.981 ± 0.02
clifford/symbolic/cnot_on_dense500_destab 4.94 ± 0.07 μs 4.96 ± 0.05 μs 0.996 ± 0.017
clifford/symbolic/cnot_on_dense500_stab 2.5 ± 0.031 μs 2.54 ± 0.02 μs 0.984 ± 0.014
clifford/symbolic/cnot_on_diag500_destab 4.95 ± 0.13 μs 4.93 ± 0.08 μs 1 ± 0.031
clifford/symbolic/cnot_on_diag500_stab 2.48 ± 0.031 μs 2.54 ± 0.041 μs 0.98 ± 0.02
ecc/evaluate_decoder/shor_bp_comm 2.09 ± 0.062 ms 2.28 ± 0.072 ms 0.915 ± 0.04
ecc/evaluate_decoder/shor_bp_naivesyn 4.61 ± 0.15 ms 4.73 ± 0.16 ms 0.974 ± 0.046
ecc/evaluate_decoder/shor_bp_shorsyn 4.99 ± 0.13 ms 5.09 ± 0.13 ms 0.979 ± 0.036
ecc/evaluate_decoder/shor_pybp_comm 21.4 ± 1 ms 22.2 ± 0.94 ms 0.964 ± 0.061
ecc/evaluate_decoder/shor_pybp_naivesyn 0.0429 ± 0.0023 s 0.045 ± 0.0023 s 0.953 ± 0.071
ecc/evaluate_decoder/shor_pybp_shorsyn 0.0437 ± 0.0023 s 0.046 ± 0.002 s 0.95 ± 0.065
ecc/evaluate_decoder/shor_pybposd_comm 20.9 ± 1.4 ms 22.3 ± 1.2 ms 0.938 ± 0.078
ecc/evaluate_decoder/shor_pybposd_naivesyn 0.0431 ± 0.0023 s 0.0452 ± 0.0027 s 0.953 ± 0.076
ecc/evaluate_decoder/shor_pybposd_shorsyn 0.0427 ± 0.0022 s 0.0456 ± 0.0024 s 0.936 ± 0.069
ecc/evaluate_decoder/shor_table_comm 0.291 ± 0.02 ms 0.293 ± 0.018 ms 0.994 ± 0.093
ecc/evaluate_decoder/shor_table_naivesyn 0.968 ± 0.0092 ms 0.973 ± 0.0058 ms 0.995 ± 0.011
ecc/evaluate_decoder/shor_table_shorsyn 1.35 ± 0.061 ms 1.35 ± 0.013 ms 1 ± 0.046
ecc/evaluate_decoder/toric8_bp_comm 0.776 ± 0.039 s 0.756 ± 0.054 s 1.03 ± 0.089
ecc/evaluate_decoder/toric8_bp_naivesyn 1.46 ± 0.072 s 1.49 ± 0.043 s 0.984 ± 0.056
ecc/evaluate_decoder/toric8_bp_shorsyn 1.54 ± 0.064 s 1.5 ± 0.09 s 1.03 ± 0.075
ecc/evaluate_decoder/toric8_pybp_comm 0.0658 ± 0.0022 s 0.0649 ± 0.0023 s 1.01 ± 0.049
ecc/evaluate_decoder/toric8_pybp_naivesyn 0.137 ± 0.005 s 0.135 ± 0.005 s 1.01 ± 0.053
ecc/evaluate_decoder/toric8_pybp_shorsyn 0.145 ± 0.005 s 0.144 ± 0.0033 s 1.01 ± 0.042
ecc/evaluate_decoder/toric8_pybposd_comm 0.0663 ± 0.003 s 0.0655 ± 0.0022 s 1.01 ± 0.057
ecc/evaluate_decoder/toric8_pybposd_naivesyn 0.138 ± 0.0041 s 0.137 ± 0.0036 s 1.01 ± 0.04
ecc/evaluate_decoder/toric8_pybposd_shorsyn 0.145 ± 0.0054 s 0.146 ± 0.0038 s 0.992 ± 0.045
ecc/evaluate_decoder/toric8_pymatch_comm 3.49 ± 0.051 ms 3.46 ± 0.046 ms 1.01 ± 0.02
ecc/evaluate_decoder/toric8_pymatch_naivesyn 13.5 ± 0.36 ms 13.5 ± 0.22 ms 0.999 ± 0.031
ecc/evaluate_decoder/toric8_pymatch_shorsyn 22.1 ± 1.3 ms 22.1 ± 1.2 ms 1 ± 0.077
ecc/evaluate_decoder/toric8_table_comm 3.74 ± 0.047 ms 3.76 ± 0.045 ms 0.997 ± 0.017
ecc/evaluate_decoder/toric8_table_naivesyn 13.2 ± 0.22 ms 13.3 ± 0.12 ms 0.992 ± 0.019
ecc/evaluate_decoder/toric8_table_shorsyn 21.7 ± 0.14 ms 21.6 ± 0.15 ms 1.01 ± 0.0093
pauli/mul/100 0.041 ± 0.01 μs 0.041 ± 0.01 μs 1 ± 0.34
pauli/mul/1000 0.051 ± 0.01 μs 0.051 ± 0.01 μs 1 ± 0.28
pauli/mul/100000 0.822 ± 0.05 μs 0.821 ± 0.051 μs 1 ± 0.087
pauli/mul/20000000 0.199 ± 0.017 ms 0.189 ± 0.012 ms 1.05 ± 0.11
stabilizer/canon/cano500 3.16 ± 0.04 ms 3.24 ± 0.033 ms 0.975 ± 0.016
stabilizer/canon/diag_cano500 0.65 ± 0.01 ms 0.65 ± 0.012 ms 1 ± 0.024
stabilizer/canon/diag_gott500 2.56 ± 0.054 ms 2.57 ± 0.036 ms 0.994 ± 0.025
stabilizer/canon/diag_rref500 0.6 ± 0.01 ms 0.6 ± 0.011 ms 1 ± 0.026
stabilizer/canon/gott500 5.14 ± 0.25 ms 5.16 ± 0.26 ms 0.997 ± 0.069
stabilizer/canon/md_cano500 1.23 ± 0.017 ms 1.18 ± 0.015 ms 1.04 ± 0.02
stabilizer/canon/md_rref500 1.2 ± 0.018 ms 1.18 ± 0.015 ms 1.01 ± 0.02
stabilizer/canon/rref500 3.16 ± 0.038 ms 3.2 ± 0.037 ms 0.986 ± 0.016
stabilizer/project/destabilizer 16.5 ± 0.86 μs 16.9 ± 0.19 μs 0.98 ± 0.052
stabilizer/project/stabilizer 8.43 ± 0.39 μs 9.58 ± 0.32 μs 0.88 ± 0.05
stabilizer/tensor/diag_pow5_20 2.33 ± 0.72 ms 2.12 ± 0.87 ms 1.1 ± 0.56
stabilizer/tensor/pow5_20 2.96 ± 0.29 μs 3 ± 0.26 μs 0.99 ± 0.13
stabilizer/trace/destabilizer 22.1 ± 0.44 μs 21.4 ± 0.39 μs 1.03 ± 0.028
stabilizer/trace/stabilizer 24.5 ± 0.54 μs 24.8 ± 0.48 μs 0.99 ± 0.029
time_to_load 1.49 ± 0.018 s 1.46 ± 0.0064 s 1.01 ± 0.013
Memory benchmarks
master 9c2cb60... master / 9c2cb60...
circuitsim/compactification/compact 0 allocs: 0 B 0 allocs: 0 B
circuitsim/compactification/no_compact 6 k allocs: 0.275 MB 6 k allocs: 0.275 MB 1
circuitsim/mctrajectories/q1001_r1 18 k allocs: 0.489 MB 18 k allocs: 0.489 MB 1
circuitsim/mctrajectories/q101_r1 1.82 k allocs: 0.0493 MB 1.82 k allocs: 0.0493 MB 1
circuitsim/mctrajectories_sumtype/q1001_r1 9 allocs: 0.484 kB 9 allocs: 0.484 kB 1
circuitsim/mctrajectories_sumtype/q101_r1 8 allocs: 0.25 kB 8 allocs: 0.25 kB 1
circuitsim/mctrajectories_union/q1001_r1 9 allocs: 0.484 kB 9 allocs: 0.484 kB 1
circuitsim/mctrajectories_union/q101_r1 8 allocs: 0.25 kB 8 allocs: 0.25 kB 1
circuitsim/pftrajectories/q1001_r1 2 k allocs: 0.0916 MB 2 k allocs: 0.0916 MB 1
circuitsim/pftrajectories/q1001_r100 2 k allocs: 0.0916 MB 2 k allocs: 0.0916 MB 1
circuitsim/pftrajectories/q1001_r10000 2 k allocs: 0.0916 MB 2 k allocs: 0.0916 MB 1
circuitsim/pftrajectories/q101_r1 0.201 k allocs: 9.42 kB 0.201 k allocs: 9.42 kB 1
circuitsim/pftrajectories_sumtype/q1001_r1 0 allocs: 0 B 0 allocs: 0 B
circuitsim/pftrajectories_sumtype/q1001_r100 0 allocs: 0 B 0 allocs: 0 B
circuitsim/pftrajectories_sumtype/q1001_r10000 0 allocs: 0 B 0 allocs: 0 B
circuitsim/pftrajectories_sumtype/q1001_r10000_fastrow 0 allocs: 0 B 0 allocs: 0 B
circuitsim/pftrajectories_sumtype/q101_r1 0 allocs: 0 B 0 allocs: 0 B
circuitsim/pftrajectories_union/q1001_r1 2 allocs: 0.0938 kB 2 allocs: 0.0938 kB 1
circuitsim/pftrajectories_union/q1001_r100 2 allocs: 0.0938 kB 2 allocs: 0.0938 kB 1
circuitsim/pftrajectories_union/q1001_r10000 2 allocs: 0.0938 kB 2 allocs: 0.0938 kB 1
circuitsim/pftrajectories_union/q101_r1 2 allocs: 0.0938 kB 2 allocs: 0.0938 kB 1
clifford/dense/cnot250_on_dense500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/cnot250_on_dense500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/cnot250_on_diag500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/cnot250_on_diag500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/cnot_on_dense500_destab 3 allocs: 0.0938 kB 3 allocs: 0.0938 kB 1
clifford/dense/cnot_on_dense500_stab 3 allocs: 0.0938 kB 3 allocs: 0.0938 kB 1
clifford/dense/cnot_on_diag500_destab 3 allocs: 0.0938 kB 3 allocs: 0.0938 kB 1
clifford/dense/cnot_on_diag500_stab 3 allocs: 0.0938 kB 3 allocs: 0.0938 kB 1
clifford/dense/dense500_on_dense500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/dense500_on_dense500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/dense500_on_diag500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/dense/dense500_on_diag500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot250_on_dense500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot250_on_dense500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot250_on_diag500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot250_on_diag500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot_on_dense500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot_on_dense500_stab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot_on_diag500_destab 0 allocs: 0 B 0 allocs: 0 B
clifford/symbolic/cnot_on_diag500_stab 0 allocs: 0 B 0 allocs: 0 B
ecc/evaluate_decoder/shor_bp_comm 0.0396 M allocs: 1.61 MB 0.0395 M allocs: 1.6 MB 1
ecc/evaluate_decoder/shor_bp_naivesyn 0.0748 M allocs: 3.15 MB 0.075 M allocs: 3.15 MB 0.999
ecc/evaluate_decoder/shor_bp_shorsyn 0.0752 M allocs: 3.21 MB 0.075 M allocs: 3.2 MB 1
ecc/evaluate_decoder/shor_pybp_comm 0.0915 M allocs: 3.26 MB 0.0915 M allocs: 3.26 MB 1
ecc/evaluate_decoder/shor_pybp_naivesyn 0.178 M allocs: 6.43 MB 0.178 M allocs: 6.43 MB 1
ecc/evaluate_decoder/shor_pybp_shorsyn 0.178 M allocs: 6.49 MB 0.178 M allocs: 6.49 MB 1
ecc/evaluate_decoder/shor_pybposd_comm 0.0915 M allocs: 3.26 MB 0.0915 M allocs: 3.26 MB 1
ecc/evaluate_decoder/shor_pybposd_naivesyn 0.178 M allocs: 6.43 MB 0.178 M allocs: 6.43 MB 1
ecc/evaluate_decoder/shor_pybposd_shorsyn 0.178 M allocs: 6.49 MB 0.178 M allocs: 6.49 MB 1
ecc/evaluate_decoder/shor_table_comm 3.98 k allocs: 0.17 MB 3.98 k allocs: 0.17 MB 1
ecc/evaluate_decoder/shor_table_naivesyn 2.8 k allocs: 0.185 MB 2.8 k allocs: 0.185 MB 1
ecc/evaluate_decoder/shor_table_shorsyn 3.28 k allocs: 0.247 MB 3.28 k allocs: 0.247 MB 1
ecc/evaluate_decoder/toric8_bp_comm 1.01 M allocs: 0.165 GB 1.02 M allocs: 0.166 GB 0.988
ecc/evaluate_decoder/toric8_bp_naivesyn 2.02 M allocs: 0.33 GB 2.05 M allocs: 0.334 GB 0.989
ecc/evaluate_decoder/toric8_bp_shorsyn 2.07 M allocs: 0.337 GB 2.07 M allocs: 0.338 GB 0.999
ecc/evaluate_decoder/toric8_pybp_comm 0.101 M allocs: 4.15 MB 0.101 M allocs: 4.15 MB 1
ecc/evaluate_decoder/toric8_pybp_naivesyn 0.214 M allocs: 8.98 MB 0.214 M allocs: 8.98 MB 1
ecc/evaluate_decoder/toric8_pybp_shorsyn 0.229 M allocs: 10.7 MB 0.229 M allocs: 10.7 MB 1
ecc/evaluate_decoder/toric8_pybposd_comm 0.101 M allocs: 4.15 MB 0.101 M allocs: 4.15 MB 1
ecc/evaluate_decoder/toric8_pybposd_naivesyn 0.214 M allocs: 8.98 MB 0.214 M allocs: 8.98 MB 1
ecc/evaluate_decoder/toric8_pybposd_shorsyn 0.229 M allocs: 10.7 MB 0.229 M allocs: 10.7 MB 1
ecc/evaluate_decoder/toric8_pymatch_comm 14 k allocs: 1.05 MB 14 k allocs: 1.05 MB 1
ecc/evaluate_decoder/toric8_pymatch_naivesyn 0.0389 M allocs: 2.71 MB 0.0389 M allocs: 2.71 MB 1
ecc/evaluate_decoder/toric8_pymatch_shorsyn 0.054 M allocs: 4.41 MB 0.054 M allocs: 4.41 MB 1
ecc/evaluate_decoder/toric8_table_comm 13.9 k allocs: 0.835 MB 13.9 k allocs: 0.835 MB 1
ecc/evaluate_decoder/toric8_table_naivesyn 0.0388 M allocs: 2.28 MB 0.0388 M allocs: 2.28 MB 1
ecc/evaluate_decoder/toric8_table_shorsyn 0.0538 M allocs: 3.98 MB 0.0538 M allocs: 3.98 MB 1
pauli/mul/100 0 allocs: 0 B 0 allocs: 0 B
pauli/mul/1000 0 allocs: 0 B 0 allocs: 0 B
pauli/mul/100000 0 allocs: 0 B 0 allocs: 0 B
pauli/mul/20000000 0 allocs: 0 B 0 allocs: 0 B
stabilizer/canon/cano500 0 allocs: 0 B 0 allocs: 0 B
stabilizer/canon/diag_cano500 0 allocs: 0 B 0 allocs: 0 B
stabilizer/canon/diag_gott500 14.5 k allocs: 0.853 MB 14.5 k allocs: 0.853 MB 1
stabilizer/canon/diag_rref500 0 allocs: 0 B 0 allocs: 0 B
stabilizer/canon/gott500 14.5 k allocs: 0.854 MB 14.5 k allocs: 0.854 MB 1
stabilizer/canon/md_cano500 0 allocs: 0 B 0 allocs: 0 B
stabilizer/canon/md_rref500 0 allocs: 0 B 0 allocs: 0 B
stabilizer/canon/rref500 0 allocs: 0 B 0 allocs: 0 B
stabilizer/project/destabilizer 5 allocs: 0.281 kB 5 allocs: 0.281 kB 1
stabilizer/project/stabilizer 2 allocs: 0.0781 kB 2 allocs: 0.0781 kB 1
stabilizer/tensor/diag_pow5_20 0.032 k allocs: 24 MB 0.032 k allocs: 24 MB 1
stabilizer/tensor/pow5_20 29 allocs: 5.48 kB 29 allocs: 5.48 kB 1
stabilizer/trace/destabilizer 2 allocs: 0.0781 kB 2 allocs: 0.0781 kB 1
stabilizer/trace/stabilizer 3 allocs: 0.109 kB 3 allocs: 0.109 kB 1
time_to_load 0.149 k allocs: 11.1 kB 0.149 k allocs: 11.1 kB 1

@codecov

codecov Bot commented Mar 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 91.66667% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 74.81%. Comparing base (b525285) to head (9c2cb60).

Files with missing lines Patch % Lines
...ore/src/codes/quantum/quantumtannergraphproduct.jl 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #702      +/-   ##
==========================================
+ Coverage   73.88%   74.81%   +0.92%     
==========================================
  Files         111      111              
  Lines        7725     7636      -89     
==========================================
+ Hits         5708     5713       +5     
+ Misses       2017     1923      -94     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@the-punisher-29 the-punisher-29 marked this pull request as ready for review March 23, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant