Avatar for the UCL-CCS user
UCL-CCS
ferrmion
BlogDocsChangelog

Performance History

Latest Results

Seperate core module and pyo3 bindings (#169) * Reorganise into Cargo workspace with standalone ferrmion-core crate Extract the pure-Rust core algorithms (operators, states, encode, optimise) into a new `crates/ferrmion-core` sub-crate that has zero PyO3/numpy dependencies and can be published as a standalone Rust library. The root `ferrmion` crate becomes a thin PyO3 binding layer that depends on `ferrmion-core` and exposes its types to Python via `ferrmion.core`. Changes: - Convert root Cargo.toml to a Cargo workspace with two members - Add crates/ferrmion-core with pure-Rust dependencies only - git mv 11 core source files into crates/ferrmion-core/src/ - Replace `numpy::Complex64` / `numpy::ndarray` imports with `num_complex::Complex64` / `ndarray` in moved files - Replace doctest `use ferrmion::` with `use ferrmion_core::` in moved files - Make MajoranaSparse fields `pub` (were `pub(super)`, now cross-crate) - Replace orphan-rule-violating `impl From<X> for PyErr` blocks with a local `CoreError` bridge type in src/lib.rs - Update benches/ to import from `ferrmion_core` https://claude.ai/code/session_01Dh1GfBjojk91yLuegNQMAF * seperate core --------- Co-authored-by: Claude <noreply@anthropic.com>
main
14 hours ago
seperate core
seperate-core
15 hours ago
Add ZBasisEnsemble type and batch decode method (#168) * Add ZBasisEnsemble type and batch decode method Introduces `ZBasisEnsemble` (Array2<bool> states + Array1<Complex64> coefficients) and `MajoranaEncoding::decode_zbasis_ensemble`, which decodes all rows of the ensemble in one pass per mode — applying each annihilation operator across every row in-place via Rayon before advancing to the next mode, avoiding per-state array clones. Adds criterion benchmarks comparing batch vs sequential decode at ensemble sizes 10, 100 and 1000, and proptest/unit tests asserting batch results match single-state decode for all standard encodings. https://claude.ai/code/session_013szAhdyfQpAKcDhcKAGUKS * Expose decode to Python and add codspeed benchmark Adds a `decode` PyO3 binding (`wrap_decode`) in `src/lib.rs` that accepts a (n_states × n_qubits) bool array plus encoding parameters, calls `decode_zbasis_ensemble`, and returns a (n_states × n_modes) occupation array. Raises `ValueError` for any undecodable state. Surfaces this as `FermionQubitEncoding.decode(states)` in `base.py` so it is available on all encodings, and adds the corresponding `core.pyi` stub. Adds `test_benchmark_decode_zbasis_ensemble` parameterised over all four standard encodings × three system sizes (32 / 64 / 128 modes), which is picked up by the existing codspeed CI job. https://claude.ai/code/session_013szAhdyfQpAKcDhcKAGUKS * Test all four standard encodings in ensemble decode unit test Extends test_decode_ensemble_matches_single_decode to iterate over Jordan-Wigner, Parity, Bravyi-Kitaev and JKMN, covering all 16 four-mode states for each encoding. https://claude.ai/code/session_013szAhdyfQpAKcDhcKAGUKS * Fix rustfmt formatting https://claude.ai/code/session_013szAhdyfQpAKcDhcKAGUKS --------- Co-authored-by: Claude <noreply@anthropic.com>
main
5 days ago

Latest Branches

CodSpeed Performance Gauge
-5%
Seperate core module and pyo3 bindings#169
17 hours ago
80f05aa
seperate-core
CodSpeed Performance Gauge
0%
5 days ago
d9fda54
claude/batch-zbasis-decoding-7pVQC
CodSpeed Performance Gauge
0%
Add decode_zbasis_state to MajoranaEncoding#167
5 days ago
9a20cc3
claude/add-zbasis-decoder-2HBfC
© 2026 CodSpeed Technology
Home Terms Privacy Docs