QMBLthe quantum many-body leaderboard

All instances / Heisenberg

Heisenberg chain, 20 sites, open

Exact energy and best values (rules §6)

exact -0.4341237 ED
Wu et al. (2024) · the instance is solved
best variational -0.4341237 DMRG
Wu et al. (2024) · the lowest unflagged variational energy, a strict variational bound

Energies as E/N (S.S). Classes are different claims and are not ranked against each other.

The Hamiltonian

H = ∑⟨ij⟩ σi·σj

Nearest-neighbour Heisenberg antiferromagnet, J = 1, written with Pauli matrices.

lattice
chain
sites
20
boundary
open
energies
5

Stored as a total energy; quoted here as E/N (S.S), which is what the papers report (how the conversion works).

Every published energy

Grouped by what the number is. The exact energy comes first where there is one; in every other group the lowest unflagged energy is its best value, and each row's distance is to that best (rules §6).

Numerically exact (1)

Exact diagonalization, an exact solution, or sign-problem-free QMC where that is established. An exact energy is shown first, before the best of each other class. QMC is exact only within its error bar, which it must state, and reads exact (stochastic); an exact diagonalization outranks it. For a diagonalization resolved by symmetry sector only the ground state's sector is listed; the lowest energies of the other sectors are the instance's spectrum, in its JSON, and are not shown as the exact energy.

E/N (S.S)distance to class bestσVar(E)V-score methodsourcecodeyearcomment
-0.4341237exact 0 n/a 0.00e+0 0.0e+0 ED
VarBench reference run
Wu et al. (2024) run script 2024

Strict variational upper bounds (4)

Energies that a variational state reached (VMC, DMRG and MPS at finite bond dimension, PEPS, NQS, VQE). Each is an upper bound on the ground-state energy.

E/N (S.S)distance to class bestσVar(E)V-score methodsourcecodeyearcomment
-0.4341237best variational 0 n/a 6.30e-10 1.0e-11 DMRG
VarBench reference run
Wu et al. (2024) run script 2024
-0.4341229 8.0e-7 1.7e-7 5.06e-4 8.4e-6 VMC (RNN)
VarBench reference run
Wu et al. (2024) run script 2024
-0.434089 3.5e-5 2.6e-6 4.56e-2 7.6e-4 VMC (RBM)
VarBench reference run
Wu et al. (2024) run script 2024
-0.433638 4.9e-4 3.9e-6 1.01e-1 1.7e-3 VMC (Jastrow)
VarBench reference run
Wu et al. (2024) run script 2024

How these numbers were read

Where each number below was read, and how it was checked.

-0.4341237, ED

Checked 2026-09-29 · QMBL ED cost run checks/cost/ed/results/Heisenberg--chain_20_O.json (checks/cost/ed/run_ed.py: NetKet 3.22.4 operator, sparse CSR built in blocks, SciPy eigsh/ARPACK k=1 SA; commit 716e043); results file read locally, no rerun

Reported as. energy -34.729893337595904 (stored_exact -34.72989333759587, relative_difference 1.02e-15, reproduces_stored true)

|reproduced - stored| = 3.55e-14 (relative 1.02e-15); within 1e-9 relative. Sector total Sz = 0, dimension 184756, 111 Lanczos steps (the file states no residual). The stored value is the source's own ED (varbench@2024-10-22), so two codes agree; a third code, E1's node Lanczos (qmbl-runs/qmbl-verify/out/E1-exact-recompute/results/Heisenberg__chain_20_O.json), gives -34.72989333759506 (8.46e-13 from the cost run). Also read by VB3-varbench-code-heisenberg#7 (scope config: vendor/varbench/Heisenberg/chain_20_O.md (snapshot 390a21e), row 'Exact diagonalization'; linked scripts/Heisenberg/chain_20_O/ed_netket.sh).

-0.4341237, DMRG

Checked 2026-09-29 · VarBench snapshot 390a21e (vendor/varbench) and full upstream history (varbench-history, git log --follow on the file, every version); varbench/methods ed31bb0 run script and program read as text; no output log or result file exists in the methods repo for any Heisenberg row

Reported as. | -34.7298933375 | | 6.3E-10 | 20 | 0 | DMRG (max truncation error ~ 1.0E-12) | [code](https://github.com/varbench/methods/blob/main/programs/dmrg_itensors_heisenberg/chain_20_O.jl) |

Program chain_20_O.jl: N = 20, periodic = false, Pauli form, Sz = 0, maxdim up to 1000 (exact MPS for 20 sites needs 1024). Best variational bound on the solved instance: 9.6e-11 above the exact -34.72989333759587 (Bethe ansatz and ED agree), i.e. equal at its 10 printed decimals. M6 (V-score 1.0e-11 outlier): genuine. History: entered d3f0688 (2021-12-05, J. M. Silvester) as -34.7298933375 with sigma 0 and variance 0, labels '~1.0E-13' -> '~1.0E-12' (febb6a9, 7764424); variance blank (c9a3134), sigma 0 -> 0.0000126 (3a788a0) -> blank with variance 0.0000251 (e8dd21b) -> 0.0000252 -> 6.3E-10 (e78283b, 2022-03-10); the energy never changed; nothing restored. Program linked 2024-08-08 (d944d80).

-0.4341229(2), VMC (RNN)

Checked 2026-09-29 · VarBench snapshot 390a21e (vendor/varbench) and full upstream history (varbench-history, git log --follow on the file, every version); varbench/methods ed31bb0 run script and program read as text; no output log or result file exists in the methods repo for any Heisenberg row

Reported as. | -34.729829 | 0.000014 | 0.000506 | 20 | 0 | RNN | [code](https://github.com/varbench/methods/blob/main/scripts/Heisenberg/chain_20_O/vmc_rnn.sh) |

vmc_rnn.sh: open 20-site chain, NetKet Heisenberg J = 1 Pauli with Marshall sign rule (a sublattice rotation on the bipartite chain), full Hilbert space (no --zero_mag; exact autoregressive sampling, ARDirectSampler), FastLSTMNet 2 layers x 16 features, Adam, 10^5 steps. RNN is the method named. The stored (sigma, Var) imply 2.6e6 independent samples (sigma/sqrt(Var/2^20) = 0.637), not the script's 2^20: the numbers come from the 2021 run (c12e2c8, 2021-10-14, Dian Wu), the script (d54f7c0, 2024-07-30) documents the settings afterwards. 6.4e-5 above the exact energy (4.6 sigma): a valid bound.

-0.434089(3), VMC (RBM)

Checked 2026-09-29 · VarBench snapshot 390a21e (vendor/varbench) and full upstream history (varbench-history, git log --follow on the file, every version); varbench/methods ed31bb0 run script and program read as text; no output log or result file exists in the methods repo for any Heisenberg row

Reported as. | -34.72711 | 0.00021 | 0.04559541 | 20 | 0 | RBM (alpha = 1) | [code](https://github.com/varbench/methods/blob/main/scripts/Heisenberg/chain_20_O/vmc_rbm.sh) |

scripts/Heisenberg/chain_20_O/vmc_rbm.sh: 'python3 vmc.py --ham heis --boundary open --sign mars --ham_dim 1 --L 20 --zero_mag --net rbm --seed 123 --show_progress' -> 20-site open chain (nk.graph.Grid, vmc.py line 51); NetKet Heisenberg J = 1 in Pauli form with Marshall sign rule (a sublattice rotation on a bipartite lattice, spectrum unchanged); Sz = 0 (total_sz=0, MetropolisExchange); real float32 RBM, alpha = 1 (nk.models.RBM, log_cosh); 10^4 SR steps; final estimate over 2^20 samples (vmc.py lines 268-269). sigma/sqrt(Var/2^20) = 1.007: the stored sigma is the error of that final estimate. 0.0028 above the exact -34.72989333759587. History: entered 10f5c12 (2022-07-11, Dian Wu) as -34.7271 | 0.00021 | 0.0455955 | RBM (alpha = 1); af1d48f (2022-09-01, 'Add Jastrow baseline'): energy -34.7271 -> -34.72711; variance 0.0455955 -> 0.04559541; linked 5047bfd (2024-07-30). Program files postdate the value (scripts added to varbench/methods 2024-07-30); they document the settings after the run.

-0.433638(4), VMC (Jastrow)

Checked 2026-09-29 · VarBench snapshot 390a21e (vendor/varbench) and full upstream history (varbench-history, git log --follow on the file, every version); varbench/methods ed31bb0 run script and program read as text; no output log or result file exists in the methods repo for any Heisenberg row

Reported as. | -34.69100 | 0.00031 | 0.1008130 | 20 | 0 | Jastrow baseline | [code](https://github.com/varbench/methods/blob/main/scripts/Heisenberg/chain_20_O/vmc_jastrow.sh) |

scripts/Heisenberg/chain_20_O/vmc_jastrow.sh: 'python3 vmc.py --ham heis --boundary open --sign mars --ham_dim 1 --L 20 --zero_mag --net jas --seed 123 --show_progress' -> 20-site open chain (nk.graph.Grid, vmc.py line 51); NetKet Heisenberg J = 1 in Pauli form with Marshall sign rule (a sublattice rotation on a bipartite lattice, spectrum unchanged); Sz = 0 (total_sz=0, MetropolisExchange); real float32 Jastrow (nk.models.Jastrow); 10^4 SR steps; final estimate over 2^20 samples (vmc.py lines 268-269). sigma/sqrt(Var/2^20) = 1.000: the stored sigma is the error of that final estimate. 0.0389 above the exact -34.72989333759587. History: entered af1d48f (2022-09-01, Dian Wu) as -34.69100 | 0.00031 | 0.1008130 | Jastrow baseline; linked fdb4bfb (2024-07-30). Program files postdate the value (scripts added to varbench/methods 2024-07-30); they document the settings after the run.

Coverage

Newest published number here: 2024.

This instance as data

JSON · source file on GitHub · add a result · open an issue about this instance