# burn_quantum
Differentiable qubit and qudit simulation using Burn 0.22's native tensors,
devices, modules, parameters, optimizers and weight records. Rust 1.95+.
`QuantumBackend` describes quantum execution; `DenseSimulator` implements it
using supported Burn devices. The public API accepts native `Tensor<D>` and
`Device` values. It does not require a separate tensor backend or a Burn fork.
## Quick start
```toml
[dependencies]
burn_quantum = "0.4.0"
burn = { version = "~0.22.1", default-features = false, features = ["std", "flex"] }
```
```rust
use burn::tensor::Device;
use burn_quantum::{Circuit, DenseSimulator, QuantumBackend, Register, Unitary};
fn main() -> burn_quantum::Result<()> {
let mut circuit = Circuit::new(Register::qubits(2)?, 0, 0);
circuit.unitary(vec![0], Unitary::h())?;
circuit.unitary(vec![0, 1], Unitary::cnot())?;
let state = DenseSimulator::default()
.execute(&circuit, None, None, 1, &Device::flex())?;
state.validate(1e-5)?;
// [0.5, 0.0, 0.0, 0.5] in |00>, |01>, |10>, |11> order.
println!("{}", state.probabilities());
Ok(())
}
```
## Capabilities
- Batched qubit, qudit and mixed-dimensional pure states and density matrices.
- Validated local unitaries, differentiable rotations, observables, partial
traces, Kraus channels and seeded terminal measurement.
- Serializable circuits, native autodiff, qudit-aware parameter-shift
references, and `QuantumLayer` integration with Burn modules and records.
- Reusable encodings, circuit templates, probability losses and fidelity kernels.
- Quantum natural SPSA with a regularized Fubini–Study metric and checkpoints.
- Boolean CNF/DIMACS SAT search with reversible oracles and verified witnesses.
- `photonic` adds dual-rail/vacuum encoding, loss,
Fock optics, calibrated fusions, physical circuit compilation, finite fabric
scheduling, Clifford/frame simulation, encoded resources, QEC memories,
finite boundaries, logical/magic-state references and bounded event/process execution.
A separate `tensor_network` module supplies mixed-qudit MPS and distributed
entangled-state ownership, with explicit approximation and host-SVD limits. See the
[implemented models and remaining gates](https://github.com/mosure/burn_quantum/blob/main/docs/photonic-status.md).
Default features are `flex` and `autodiff`. Optional `wgpu`, `cuda` and `fusion`
features select accelerator capabilities; callers supply the execution device.
F32/F64 availability depends on the device. GPU qualification uses F32.
Dense simulation uses exponential state storage: for batch B and Hilbert
dimension N, pure states store 2BN real scalars and density matrices store 2BN².
Allocation limits are preflight checks, not a total memory cap. SAT search may
return `Inconclusive` when its budget is exhausted. QN-SPSA's dense host metric
uses O(d²) storage and an O(d³) solve for d parameters. These implementations do
not establish quantum advantage or efficient simulation of arbitrary circuits.
## Canonical algorithms and dynamic protocols
`algorithms` supplies reusable QFT/inverse QFT, phase estimation, Deutsch–Jozsa
parity oracles, single-target Grover, generalized Toffoli, graph MaxCut QAOA,
teleportation and coherent odd-repetition recovery. Builders retain the ordinary
`Circuit`, symbolic bindings and operation labels. `append_qft` composes with an
existing circuit; all wires follow the register's big-endian convention.
`protocol::Protocol` references ordinary circuit operations and explicitly adds
projective measurements and initialized classical conditions. `BranchExecution`
executes a supplied outcome branch incrementally, reports its cumulative
probability, and normalizes the actually collapsed state. Impossible branches are
errors. This is explicit branch execution, not random shot sampling or a claim
that requested measurement outcomes occur deterministically.
## Package and repository
This package owns `src/`, integration `tests/`, simulator `examples/`, and the
executable-only `support/device.rs` helper. From a repository checkout:
```sh
cargo run --locked -p burn_quantum --example bell
cargo test --locked -p burn_quantum
cargo check --locked -p burn_quantum --no-default-features
cargo run --locked -p burn_quantum --features wgpu --example wgpu_smoke
```
The unpublished sibling `burn_quantum_example` package contains single-file
applications, including canonical circuits, VQE, QAOA, classifiers, a Born
machine, hybrid regression, Grover SAT, QN-SPSA VQE, physical photonic optimization,
finite-boundary QEC studies, magic-state distillation and distributed MPS workloads.
Run it from a repository checkout:
```sh
cargo run --locked -p burn_quantum_example --bin qnspsa_vqe
cargo run --locked -p burn_quantum_example --bin fbqc_bell_swap
```
See the [API documentation](https://docs.rs/burn_quantum),
[example suite](https://github.com/mosure/burn_quantum/tree/main/crates/burn_quantum_example),
[guides and validation records](https://github.com/mosure/burn_quantum/tree/main/docs),
and [changelog](https://github.com/mosure/burn_quantum/blob/main/CHANGELOG.md).
The separate [`burn_quantum_visualization`](https://crates.io/crates/burn_quantum_visualization)
crate provides a native and browser explorer for these experiments, with Bloch
spheres, probability/phase disks, circuit diagrams and photonic timelines.
It requires Rust 1.97.1; the core crate remains usable with Rust 1.95.
Try the [interactive gallery](https://mosure.github.io/burn_quantum/).
## License
MIT OR Apache-2.0. Both license texts are included in this package.