{"id":51236829,"url":"https://github.com/volkovilia/semiflow","last_synced_at":"2026-07-15T08:00:39.796Z","repository":{"id":366184966,"uuid":"1274700996","full_name":"VolkovIlia/semiflow","owner":"VolkovIlia","description":"Fast no_std Rust library for evolution equations and PDEs via Chernoff approximation of operator semigroups — heat, Schrödinger, diffusion, graph \u0026 manifold operators. Bindings for C, Python, and WebAssembly.","archived":false,"fork":false,"pushed_at":"2026-06-27T18:56:59.000Z","size":5373,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-28T21:22:43.978Z","etag":null,"topics":["automatic-differentiation","chernoff-approximation","computational-mathematics","differential-equations","evolution-equations","ffi","heat-equation","no-std","numerical-analysis","numerical-methods","operator-semigroups","partial-differential-equations","pde","python-bindings","rust","schrodinger-equation","scientific-computing","simulation","tensor-train","webassembly"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VolkovIlia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-19T19:51:59.000Z","updated_at":"2026-06-27T18:57:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/VolkovIlia/semiflow","commit_stats":null,"previous_names":["volkovilia/semiflow"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/VolkovIlia/semiflow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolkovIlia%2Fsemiflow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolkovIlia%2Fsemiflow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolkovIlia%2Fsemiflow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolkovIlia%2Fsemiflow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VolkovIlia","download_url":"https://codeload.github.com/VolkovIlia/semiflow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VolkovIlia%2Fsemiflow/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35496719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automatic-differentiation","chernoff-approximation","computational-mathematics","differential-equations","evolution-equations","ffi","heat-equation","no-std","numerical-analysis","numerical-methods","operator-semigroups","partial-differential-equations","pde","python-bindings","rust","schrodinger-equation","scientific-computing","simulation","tensor-train","webassembly"],"created_at":"2026-06-28T21:02:01.767Z","updated_at":"2026-07-15T08:00:39.790Z","avatar_url":"https://github.com/VolkovIlia.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SemiFlow\n\n[![CI](https://img.shields.io/badge/CI-passing-brightgreen)](https://github.com/VolkovIlia/semiflow/actions)\n[![Docs.rs](https://img.shields.io/badge/docs.rs-semiflow-blue)](https://docs.rs/semiflow)\n[![Crates.io](https://img.shields.io/crates/v/semiflow)](https://crates.io/crates/semiflow)\n[![License](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue)](#license)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.20837851.svg)](https://doi.org/10.5281/zenodo.20837851)\n\n\u003e **Status: active beta.** The API is stabilizing toward 1.0; minor versions may make breaking changes. Bug reports and feedback welcome.\n\n**SemiFlow is a `no_std` Rust library for solving evolution equations and PDEs\n(`∂ₜu = Lu`) by Chernoff approximation of operator semigroups — no matrix\nexponentials, no linear solves, flat memory footprint.**\n\n\u003e **Honest performance note (iter-8, HEAD b923777, 45 families):** SemiFlow's\n\u003e primary measured advantage is **memory frugality** — a flat ~3 MB working\n\u003e set across all 1D/2D/3D families, vs 50–418 MB for heavy frameworks (KIOPS,\n\u003e Dedalus, scipy-mol), with 33/43 head-to-head pairs below the 0.5× memory\n\u003e gate (76.7%). Wallclock is **not a general strength**: SemiFlow is uniformly\n\u003e slower than adaptive ODE solvers and spectral methods for matched-accuracy\n\u003e PDE solving (H-WALL FALSIFIED by iter-8; e.g. 730× slower than\n\u003e SUNDIALS-CVODE at 5e-5 accuracy; 7303× slower than QuantLib FDM-CEV at\n\u003e 1e-2 accuracy). Parallelism pays off only at large 3D grid sizes\n\u003e (eta8=0.908 for 3D fine; eta8≈0.125 for 2D). The library wins in two\n\u003e additional confirmed niches: (1) tail-latency-sensitive HFT pricing —\n\u003e `Diffusion4thChernoff` achieves **41 ns p99.9** vs QuantLib V3 CEV 9573 ns\n\u003e (**233×** clean, **284×** under DRAM stress) at matched accuracy, confirmed\n\u003e on b923777; (2) L1-resident S³ low-rank carriers — TtChernoff 0.0008%\n\u003e L1d-miss, ReverseChernoff 0.0019%, roughly 4 orders of magnitude below a\n\u003e dense 256 KB working set (80.9% L1d-miss). Both are niche results;\n\u003e neither generalizes to \"SemiFlow is fast\" or \"SemiFlow computes in L1.\"\n\nThe method evaluates `e^{tL}f` by iterating an explicit, allocation-free step\noperator `S(τ)`: `(S(t/n))ⁿ f → e^{tL}f`. Each step fits in cache; the working\nset is flat and steady-state evolution is zero-allocation. The core ships as a\npure `no_std + alloc` `rlib` with only 3 runtime dependencies, plus optional C,\nPython, and WebAssembly bindings with near-full engine parity.\n\n\u003e Mathematical foundation: **Theorem 6 of Remizov (2025)**, *Vladikavkaz Math. J.*\n\u003e 27(4), 124–135 ([doi:10.46698/a3908-1212-5385-q](https://doi.org/10.46698/a3908-1212-5385-q)).\n\n## Why SemiFlow\n\n- **65+ evolution-equation engines** — heat, Schrödinger, diffusion, conservative\n  variable-coefficient diffusion (harmonic-mean faces), graph Laplacians,\n  manifold PDEs, hypoelliptic operators, semilinear ETD, and more (see\n  [catalogue](#engine-catalogue)).\n- **`no_std` + only 3 runtime deps** — num-traits, libm, num-complex; suitable\n  for embedded, WASM, and HPC environments.\n- **Up to 8th-order spatial accuracy** via the ζ-ladder (Richardson extrapolation\n  on the Chernoff step); convergence gated in CI against closed-form oracles.\n- **Curse-of-dimensionality escape** via tensor-train (TT) carriers for the\n  Gaussian class: storage `O(d·n·r²)` instead of `O(nᵈ)`. Variable-coefficient\n  separable diagonal diffusion now supported via `VarCoefTt` (fail-loud\n  `VarCoefOutOfClass` for non-separable inputs).\n- **Reverse-mode automatic differentiation** via binomial checkpointing at\n  `O(√n)` memory overhead — compute parameter gradients through the semigroup.\n  Multi-parameter (K\u003e1) sensitivity supported via `RegionMap` (per-region θ).\n- **Native `f32` + f32 SIMD** — all leaf 1D kernels implement `ChernoffFunction\u003cf32\u003e`;\n  a dedicated f32x8 AVX2 / f32x4 NEON kernel is provided with no FMA dependency.\n- **Order-2 Dirichlet boundary** — `DirichletHeat2ndChernoff` with\n  `BoundaryPolicy::OddReflect` (odd-image method, §21.9); order-2 sibling of\n  `ReflectedHeatChernoff`.\n- **Gridless variance / MSE diagnostic** — `MeasureState` now exposes\n  `first_moment`, `variance`, and `variance_per_axis` for particle-ensemble\n  convergence diagnostics (math §38.12).\n- **Depth-independent graph-semigroup action and Fréchet gradient** —\n  `GraphKrylovChernoff` computes `e^{−tL}·v` with matvec count set by `ε` and\n  `t‖L‖`, flat in the depth `t`; `graph_expmv_frechet` returns `∂J/∂w` for all\n  edge weights in one augmented solve — both forward and backward are\n  depth-independent (ADR-0185).\n- **Generic symmetric-operator entry point** — `SymmetricOperator::from_csr`\n  accepts any externally-assembled symmetric PSD sparse matrix (FEM stiffness,\n  anisotropic conductivity); `MassKOperator` handles the generalized `(M,K)`\n  eigenproblem without forming `M⁻¹K` (ADR-0186).\n- **Conservative divergence-form diffusion** — `ConservativeDiffusionChernoff`\n  with harmonic-mean face conductivities handles sharp material interfaces\n  (k-contrast up to 3025:1) where the non-conservative pointwise expansion fails;\n  optional contact resistance `R_c`; separable N-D assembler (ADR-0187).\n- **Stiff multilayer conduction** — `multilayer_evolve` propagates the full\n  re-entry heat-transfer problem in one depth-flat Krylov action (~28000× fewer\n  operator applications than explicit CFL on the Shuttle TPS stack; ADR-0188).\n- **Semilinear ETD** — `phi_action` / `Etdrk4` integrates `∂ₜu = Lu + N(u)` at\n  order 4 without splitting or re-discretizing `L`; `N(u)` is a declarative\n  `Nonlinearity` trait (Allen–Cahn, Burgers, Gray–Scott, KS menus at the PyO3\n  surface; ADR-0189).\n- **Four language surfaces** — Rust core, C ABI (FFI / `cdylib`), Python\n  (PyO3 / maturin wheels, abi3-py310), and WebAssembly (wasm-bindgen / npm),\n  with a lite default WASM bundle and opt-in `full` feature for heavy-grid engines.\n  The three binding surfaces now reach the full operator zoo (see [Bindings](#bindings)).\n- **17,848-symbol codebase, 279 verified execution flows** — every numerical\n  claim tested in CI.\n\n## Who is this for\n\n- **Numerical / applied mathematicians** solving parabolic, Schrödinger,\n  hypoelliptic, or manifold PDEs and wanting a verified, matrix-free integrator.\n- **Quantitative / HFT engineers** pricing diffusion models (CEV, Heston, SABR,\n  rough vol) where low, predictable per-tick latency and small working sets matter.\n- **Researchers** who need a reference implementation of Chernoff-based semigroup\n  approximation with convergence gated against closed-form oracles.\n\n## Install\n\n### Rust\n\n```bash\ncargo add semiflow\n```\n\n`no_std` users: disable default features:\n\n```toml\nsemiflow = { version = \"0.12.0-beta\", default-features = false }\n```\n\nThe `simd` (AVX2 / NEON) and `parallel` features require `std`.\n\n### Other language bindings\n\n| Language | How to install | Distribution |\n|----------|---------------|--------------|\n| Python | `pip install semiflow-pde` — `import semiflow` | PyPI (published per release) |\n| JavaScript / WASM | `npm install semiflow` | npm (published per release) |\n| C / C++ | Download a release artifact; see [`crates/semiflow-ffi/README.md`](crates/semiflow-ffi/README.md) | Header `semiflow.h` |\n\n## Quickstart — heat equation in 30 seconds\n\nSolve `∂ₜu = ½·∂ₓₓu` from `u₀(x) = e^{-x²}` to `t = 1`:\n\n```rust\nuse semiflow_core::{Grid1D, GridFn1D, ShiftChernoff1D, ChernoffSemigroup};\n\n// Uniform grid [-10, 10] with 1000 nodes.\nlet grid = Grid1D::new(-10.0, 10.0, 1000).expect(\"valid grid\");\n\n// Initial condition u₀(x) = exp(-x²).\nlet u0 = GridFn1D::from_fn(grid, |x| (-x * x).exp());\n\n// Operator L = a·∂² + b·∂ + c with a = ½, b = c = 0.\nlet chernoff = ShiftChernoff1D::new(|_| 0.5_f64, |_| 0.0, |_| 0.0, 0.0, grid);\n\n// Iterate (S(t/n))ⁿ with n = 100 steps to t = 1.\nlet semi = ChernoffSemigroup::new(chernoff, 100).expect(\"n \u003e= 1\");\nlet u1 = semi.evolve(1.0, \u0026u0).expect(\"evolve ok\");\n// sup-norm error vs closed-form Gaussian kernel ≈ 3.2e-4 at n=100\n```\n\nA runnable version with the error check lives in\n[`docs/QUICKSTART.md`](docs/QUICKSTART.md). For a use-case-driven tour\n(\"I want to solve …\"), see the [**User Guide**](docs/USER_GUIDE.md).\n\n## Engine catalogue\n\n| Family | Representative types | Notes |\n|--------|----------------------|-------|\n| Diffusion / advection–reaction | `DiffusionChernoff`, `ShiftChernoff1D`, `DriftReactionChernoff` | 1D/2D/3D, variable coefficients |\n| Higher-order accuracy (ζ-ladder) | `Diffusion4thChernoff`, `Diffusion6thZeta6Chernoff`, `Diffusion8thZeta8Chernoff` | 4th–8th order via Richardson |\n| 2D/3D tensor-product splitting | `Strang2D`, `Strang3D`, `NonSeparable2DAnisotropicChernoff` | Palindromic Strang; parallel |\n| Schrödinger | `SchrödingerChernoffComplex` | Native complex carrier |\n| Matrix-valued systems | `MatrixDiffusionChernoff`, `MatrixDiffusionChernoff2D/3D` | Coupled M-component operators |\n| Riemannian manifolds | `ManifoldChernoff` + `Sphere2`, `Hyperbolic2`, `Torus`, `FubiniStudyCp1` | R/12 curvature-corrected |\n| Hypoelliptic / sub-Riemannian | `HypoellipticChernoff` (Kolmogorov, Heisenberg, Engel) | Strang–Hörmander, step-2/3 Carnot |\n| Conservative (divergence-form) diffusion | `ConservativeDiffusionChernoff`, `assemble_conservative_csr_1d`, `assemble_conservative_csr_nd` | Harmonic-mean faces; sharp k-jumps; optional contact resistance; separable N-D |\n| Stiff multilayer conduction | `MultilayerStack`, `multilayer_evolve`, `MassWeightedConservativeChernoff` | Per-layer `(k, ρc)` stack; mass-weighted Krylov; ~28000× fewer matvecs than explicit CFL |\n| Semilinear ETD | `phi_action`, `phi_action_batched`, `Etdrk4`, `Nonlinearity` | `∂ₜu = Lu + N(u)`; order-4 Cox–Matthews; φ-functions via augmented matvec |\n| Generic symmetric-operator entry | `SymmetricOperator`, `MassKOperator`, `EntrySensitivity`, `mass_lumped_evolve` | Externally-assembled PSD CSR; `(M,K)` eigenproblem; entry-wise Fréchet gradient; `path=\"implicit\"` (PCG backward-Euler) for stiff FEM operators (ADR-0190) |\n| Graph and quantum-graph Laplacians | `GraphHeatChernoff`, `GraphKrylovChernoff`, `QuantumGraphHeatChernoff`, `QuantumSchrödingerChernoff` | Kirchhoff vertex conditions; depth-independent Krylov + Fréchet gradient |\n| Boundary conditions | `KillingChernoff`, `ReflectedHeatChernoff`, `DirichletHeat2ndChernoff`, `ObstacleChernoff`, `BoundaryPolicy` | Dirichlet (order-2) / Neumann / Robin / obstacle |\n| Resolvent and nonautonomous | `LaplaceChernoffResolvent`, `HowlandLift` | `(λI−A)⁻¹g`; Howland augmented generator |\n| High-dimensional / sparse-grid | `AnisotropicShiftChernoffND`, `SmolyakGridND` | Gauss-Hermite / Smolyak, d ≥ 5 |\n| Tensor-train (TT) carrier | `TtChernoff`, `TtState`, `VarCoefTt` | Curse-of-dimensionality escape; `O(d·n·r²)`; variable-coef separable diagonal via `VarCoefTt` |\n| Gridless / particle ensemble | `GridlessChernoff` | Particle-ensemble Chernoff, d ≤ ~10 |\n| Reverse-mode AD | `ReverseChernoff`, `CheckpointSchedule` | Binomial checkpointing, `O(√n)` memory |\n| Lévy subordination | `SubordinatedChernoff` | Subordinate any engine to a Lévy process |\n| Adaptive stepping | `AdaptivePI` | PI step-size controller for any `ChernoffFunction` |\n\nSome families are experimental and gated behind cargo features (e.g. `s3-poc`,\n`full` for WASM). See [`crates/semiflow/README.md`](crates/semiflow/README.md)\nfor the full type catalogue, constructor signatures, and feature flags.\n\n## Bindings\n\n| Language | Crate / Package | Key feature |\n|----------|----------------|-------------|\n| Rust | `semiflow` (crates.io) | Full engine catalogue, `no_std + alloc` |\n| C / C++ | `semiflow-ffi` (cdylib; release artifacts) | `extern \"C\"` ABI, `catch_unwind` on every entry point, header `semiflow.h` |\n| Python | `semiflow-pde` (PyPI; maturin wheel) | PyO3, abi3-py310 wheel (Python 3.10–3.13), GIL-release via `py.detach` |\n| JavaScript / WASM | `@semiflow/wasm` (npm; wasm-bindgen) | Lite default bundle; `full` feature for higher-order / 2D / 3D engines |\n\nAll three non-Rust surfaces now expose a curated mirror of the user-facing operator\nzoo, including the S³ carriers (`TtState`, `TtEvolver`, `TtCoupledEvolver`,\n`MeasureState`, `GridlessEvolver`) and recently added engines\n(`DiffusionExpmvChernoff`, `DriftReactionZeta4Chernoff`, `Killing2ndChernoff`,\n`MatrixDiffusionChernoff2D/3D`, `DirichletHeat2ndChernoff`, `VarCoefTt`).\nVariable coefficients cross the binding boundary as pre-sampled arrays, not live\nclosures. The binding surface is a curated mirror of the user-facing operator zoo,\nnot a 1:1 map of internal composition types (e.g. `AxisLift`, `StrangSplit` are\nnot directly exposed). v0.10.0-beta adds `GraphKrylov` (PyO3 pyclass) and `graph_expmv_frechet`\n(PyO3 pyfunction) for depth-independent graph-semigroup actions and edge-weight\nFréchet gradients; `sym_op_evolve`, `mass_k_evolve`, and `sym_op_entry_grad`\nfunctions for generic symmetric operators (ADR-0185/0186). v0.11.0-beta adds\n`SymmetricOperator.from_csr` / `evolve_batched`, `mass_lumped_evolve`, and\n`MassKOperator.evolve` as the Python surface for the generic symmetric-operator path\n(issue #15). The `evolve_batched` and `mass_lumped_evolve` calls accept a `path=`\nkeyword (`\"lanczos\"` / `\"chebyshev\"` explicit — default — or `\"implicit\"` for stiff\noperators; issue #16, ADR-0190):\n\n```python\nimport numpy as np\nimport scipy.sparse as sp\nfrom semiflow import SymmetricOperator\n\n# Stiff 1-D FEM stiffness, λ_max ≈ 1e7 (N=400 nodes)\nn = 400\nA_csr = sp.diags([-1, 2, -1], [-1, 0, 1], shape=(n, n), format='csr') * 1e7\n\nop = SymmetricOperator.from_csr(A_csr.indptr, A_csr.indices, A_csr.data, n)\nv0 = np.random.default_rng(0).standard_normal((n, 4))  # 4 right-hand sides\n\n# Explicit path sub-steps O(λ_max · t) times — times out at this stiffness:\n# u = op.evolve_batched(v0, t=1.0, path=\"lanczos\")\n\n# Implicit backward-Euler PCG: O(Δt) accuracy, cost ~√κ per sub-step\nu = op.evolve_batched(v0, t=1.0, path=\"implicit\", n_steps=100)\n# mass_lumped_evolve and MassKOperator.evolve accept the same path= kwarg\n```\n\n`n_steps` (default 100) controls the backward-Euler sub-step count; accuracy\nis O(t/n_steps). Cost is governed by `√κ` of the Jacobi-preconditioned\n`S = I + Δt·A`, not strictly `λ_max`-independent. IC(0) preconditioning is\ndeferred to a follow-on release (§59.6).\n\nDeferred (bindings label):\nconservative diffusion, multilayer, and ETD PyO3 surfaces; C-ABI for new types.\nThe one remaining PyO3-only deferral is `GraphAdjoint`'s time-dependent Laplacian\nconstructor accepting a live callback — the pre-sampled path\n(`GraphAdjointPresampled` / `smf_graph_adjoint_new_presampled`) covers the common\ncase and is available in all three surfaces.\n\nFor build instructions and cross-language examples see [docs/BINDINGS.md](docs/BINDINGS.md).\n\n## Documentation\n\n| If you want to… | Read |\n|-----------------|------|\n| Get started | [Quickstart](docs/QUICKSTART.md) · [User Guide](docs/USER_GUIDE.md) |\n| Use a binding | [Bindings Guide](docs/BINDINGS.md) (C / Python / WASM) |\n| Browse the API | [docs.rs/semiflow](https://docs.rs/semiflow) |\n| See worked examples | [`examples/`](crates/semiflow/examples) ([index](crates/semiflow/examples/README.md)) |\n| Understand accuracy / precision policy | [precision-policy.md](docs/precision-policy.md) · [api-stability.md](docs/api-stability.md) |\n| Read design decisions | [`docs/adr/`](docs/adr) (Architecture Decision Records) |\n| Contribute | [CONTRIBUTING.md](CONTRIBUTING.md) |\n\n## Accuracy and design\n\nEvery numerical claim is gated in CI against a closed-form or high-order\nreference oracle (convergence-order tests and sup-norm-floor tests). Because\n`GridFnXD\u003cF\u003e` types are `Vec\u003cF\u003e`-backed with reused scratch buffers, steady-state\nevolution is zero-allocation — but treat memory and latency as **measured\nproperties of the concrete grid types, not contractual guarantees of the trait\nAPI**. Reproducible benchmarks are published in the benchmarks repository.\n\nThe current authoritative benchmark is **iter-8** (semiflow HEAD b923777,\n45 families, i7-12700K, 12 reps + 3 warmup). Key verdicts: H-MEM\nPARTIAL_SUPPORT (33/43 pairs RC \u003c competitor; flat ~3 MB vs 50–418 MB for\nheavy frameworks); H-WALL FALSIFIED (RC slower than adaptive/spectral solvers\nat matched accuracy); H-PAR FALSIFIED as universal claim (eta8=0.908 only for\nlarge 3D; ~0.125 for 2D); S³ capabilities (TtChernoff 524288× storage\nadvantage at d=4, ReverseChernoff O(√n) checkpoint slope=0.496, GridlessChernoff\nflat 13.9/22.5 KB at d=1/2) all SUPPORT. Iter-8 addendum (b923777) confirms\ntwo niche advantages: (1) HFT tail-latency 233× p99.9 clean / 284× under DRAM\nstress vs QuantLib V3 CEV; (2) S³ low-rank carriers L1-resident (TtChernoff\n0.0008% L1d-miss, ReverseChernoff 0.0019%). Neither generalizes beyond the\nniche. Source: `remizov-publications/benchmarks/results/aggregate-iter8/`\nand `benchmarks/hft-latency-tail/data/phase-e-summary.md`.\n\nDesign principles: `no_std + alloc` core; only 3 runtime dependencies; SIMD\nhot paths isolated to `src/simd/` (AVX2 on x86_64, NEON on aarch64, scalar\nfallback elsewhere); bit-reproducible parallelism across thread counts (ADR-0018);\nzero unsafe in math kernels.\n\n## Mathematical foundation\n\nThe method is rooted in the Chernoff product formula and specifically implements\n**Theorem 6 of I. D. Remizov (2025)**:\n\n\u003e Remizov, I. D. (2025). *Chernoff Approximations of the Solution of Linear ODE\n\u003e with Variable Coefficients.* Vladikavkaz Mathematical Journal, 27(4), 124–135.\n\u003e [doi:10.46698/a3908-1212-5385-q](https://doi.org/10.46698/a3908-1212-5385-q)\n\n## License\n\nDual-licensed under either of [MIT](LICENSE-MIT) or\n[Apache-2.0](LICENSE-APACHE) at your option.\n\n## Author\n\nSemiFlow is created and maintained by **Ilia Volkov**.\n\n## How to cite\n\nIf you use SemiFlow in academic work, cite both the **software** and the\n**underlying theorem**:\n\n**Software** — use the GitHub \"Cite this repository\" widget (top-right of the\nrepo) which reads [`CITATION.cff`](CITATION.cff), or use this BibTeX entry:\n\n```bibtex\n@software{volkov2026semiflow,\n  author    = {Volkov, Ilia},\n  title     = {{SemiFlow}: {Chernoff} Approximation of Operator Semigroups},\n  year      = {2026},\n  version   = {0.12.0-beta},\n  doi       = {10.5281/zenodo.20837851},\n  url       = {https://doi.org/10.5281/zenodo.20837851}\n}\n```\n\nDOI (concept DOI — always resolves to the latest version):\n**[10.5281/zenodo.20837851](https://doi.org/10.5281/zenodo.20837851)**\nSee [`CITATION.cff`](CITATION.cff) for the full CFF entry.\n\n**Underlying theorem** — always cite this alongside the software:\n\n\u003e Remizov, I. D. (2025). *Chernoff Approximations of the Solution of Linear ODE\n\u003e with Variable Coefficients.* Vladikavkaz Mathematical Journal, 27(4), 124–135.\n\u003e [doi:10.46698/a3908-1212-5385-q](https://doi.org/10.46698/a3908-1212-5385-q)\n\n## Contributing and security\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) and\n[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md). Security reports go to\nilia.volkov@outlook.com per [SECURITY.md](SECURITY.md) — do not open public\nissues for vulnerabilities.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolkovilia%2Fsemiflow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvolkovilia%2Fsemiflow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvolkovilia%2Fsemiflow/lists"}