Dense-Evolution
Dense statevector quantum simulator · JAX XLA · NISQ · VQE · QML
Dense-Evolution is a high-performance statevector simulator for deep NISQ circuits, VQE
pipelines, and QML workloads. It eliminates Kronecker-product overhead via stride-sliced
linear kernel fusion compiled through JAX XLA, keeping memory at the theoretical minimum
of 2ⁿ × 16 bytes.
What's in here
DenseSVSimulator— the core dense statevector engine, JIT-fused circuit execution, projective measurement.MPSSimulator— matrix-product-state engine for low-entanglement circuits at hundreds of qubits, with ajax.lax.scan-fused execution path.Chunk— anti-OOM statevector chunking for circuits too large for a single dense allocation, including a real multi-device distributed dispatch path.QASMParser— OpenQASM 2.0 / 3.0 parsing, includingforloops, range syntax, and QASM3 classicalbitregisters.dense_evolution.mitigation— Zero-Noise Extrapolation, both the classic scalar/vector form and a density-matrix extension (Smolin-Gambetta-Smith physical projection, Uhlmann fidelity), every entry point with ajax.jit-compatible variant.dense_evolution.healing— the predictive-healing primitives (calculate_delta_preemp,calculate_vettore_dinamico, ...) ZNE's healing-adapted branch is built on.NoiseModel— Kraus-channel noise (depolarizing, bitflip, phaseflip, amplitude damping, and a combined worst-case model), JAX- and NumPy-native.- Interop with Qiskit and PennyLane, and autodiff
through
circuit_to_energy_fnfor gradient-based VQE.
Module dependencies
Real module graph, traced from the actual import statements in each file (not an
idealized layering) -- circuit sources feed three interchangeable execution engines, which
in turn feed the higher-level mitigation/autodiff layers.
flowchart LR
subgraph core["Core"]
parser["parser<br/>(QASMParser)"]
gates["gates"]
registry["registry<br/>(NoiseModel)"]
compiler["compiler<br/>(QuantumTranspiler)"]
end
subgraph engines["Engines"]
simulator["simulator<br/>(DenseSVSimulator)"]
mps["mps<br/>(MPSSimulator)"]
chunk["chunk<br/>(Chunk)"]
end
subgraph higher["Higher-level"]
interop["interop<br/>(Qiskit / PennyLane)"]
autodiff["autodiff<br/>(circuit_to_energy_fn)"]
healing["healing<br/>(predictive primitives)"]
mitigation["mitigation<br/>(ZNE)"]
end
gates --> registry
simulator --> registry
simulator --> gates
simulator --> compiler
mps --> compiler
mps --> gates
chunk --> simulator
chunk --> compiler
chunk --> gates
interop --> parser
interop --> simulator
autodiff --> parser
autodiff --> gates
autodiff --> compiler
autodiff --> registry
mitigation --> healing
Where to start
New to the package? Start with Getting Started.
Looking for a specific function or class? Jump straight to the API Reference.
Want to see what changed recently? Check the Changelog.
Honesty as a design principle
This library's docstrings and changelog document real, measured findings — including negative results and rejected approaches — not just the features that worked. Where a number is quoted (a speedup, a fidelity improvement, a coverage percentage), it was measured directly and the measurement is described, not assumed. See the Changelog for the full history.