This library provides a comprehensive collection of digital signal processing (DSP), control algorithms, filters, optimizers, and estimators designed for robust and efficient signal analysis, manipulation, and system control. Developed to address complex technical challenges, the library offers a flexible and extensible framework for engineers, researchers, and developers working in signal processing, control systems, and related domains.
Refer to the documentation to quickly integrate and utilize the library's signal processing and control algorithms in your projects.
| Category | Description |
|---|---|
| Analysis | FFT, Real-Input FFT (RFFT), Power Spectral Density, DCT, Discrete Wavelet Transform (Haar/Daubechies), Window Functions, Signal Detectors, Convolution & Correlation, Goertzel Algorithm, Decibels, Hilbert Transform / Analytic Signal |
| Control Analysis | Frequency Response, Root Locus, Controllability/Observability Matrices & Gramians, Continuous-to-Discrete, Transfer Function ↔ State Space |
| Controllers | Bang-Bang/Hysteresis, PID, LQR, LQI (Integral/Servo State Feedback), MPC, Saturation, Rate Limiter, Slew-Limited Saturation, Feedforward/2-DOF, Gain-Scheduled Controller, Lead-Lag Compensator, Luenberger Observer |
| Estimators | Linear Regression, Polynomial Fitting, Yule-Walker (offline), Recursive Least Squares, LMS / NLMS Adaptive Filter (online), Consistency Metrics / NEES / NIS |
| Filters | Kalman, Extended Kalman, Unscented Kalman, Alpha-Beta/Alpha-Beta-Gamma, FIR, IIR, Exponential Moving Average, Moving Average, Complementary, Median Filter, CIC (Cascaded Integrator-Comb), Notch/Comb Filter, Savitzky-Golay Filter, Biquad/Second-Order-Section Cascade, Madgwick/Mahony AHRS |
| Neural Network | Layers, activations, losses, model |
| Optimization | Gradient Descent |
| Regularization | L1 (Lasso), L2 (Ridge) |
| Math | CORDIC, Quaternion, MatrixNorms, Step Response Metrics, MatrixExponential |
| Solvers | Gaussian Elimination, Levinson-Durbin, Durand-Kerner, Cholesky, DARE, Runge-Kutta ODE Integrators (RK4 + Dormand-Prince), Spectral Radius & Discrete Stability Margin, QR Decomposition (Householder / Givens), LU Decomposition with Partial Pivoting |
| Robust Control | Active Disturbance Rejection Control (ADRC + ESO), Sliding Mode Control (SMC), Disturbance Observer (DOB) |
| Performance Optimization | Compiler optimizations, SIMD |
Each category page lists its algorithms with a brief description and links to the detailed documentation.
The entire documentation set is also published as a single book — read it online as a
GitHub Pages site or download the latest
PDF from the Releases page. Both are generated automatically from doc/
(cover, Summary/table of contents, one chapter per category, consolidated references, back cover).
Build it locally with Pandoc + XeLaTeX installed:
python scripts/build-booklet.py --format all # writes build/booklet/{NumericalToolbox.pdf,index.html}The simulator/ directory contains interactive Qt-based GUI applications for visualizing and experimenting with the library's algorithms. These are desktop tools intended for development and exploration, separate from the core embedded-targeted library.
The simulator requires Qt6 and is disabled by default. Enable it with:
cmake --preset host # host preset enables it automatically
# or manually:
cmake -DNUMERICAL_TOOLBOX_BUILD_SIMULATOR=ON ...Prerequisites: qt6-base-dev and libgl1-mesa-dev (Ubuntu/Debian).
The simulator includes a Qt-based GUI for real-time visualization. Since the development environment runs inside a Dev Container, an X server on the host machine is required to display the GUI.
- Install VcXsrv (free) or X410 from the Microsoft Store.
- Launch VcXsrv with the following settings:
- Multiple windows
- Start no client
- Disable access control (checked)
- Open the project in VS Code and reopen in the Dev Container.
- Allow Docker containers to access your X server:
xhost +local:docker- Open the project in VS Code and reopen in the Dev Container.
Note: The Dev Container sets
DISPLAY=host.docker.internal:0.0to forward GUI windows over TCP. On Linux, if you prefer Unix socket forwarding, you can overrideDISPLAYto:0inside the container and add a bind mount for/tmp/.X11-unix.
Planned algorithms and components are tracked in ROADMAP.md — a prioritized backlog of DSP filters, controllers, estimators, and solvers ordered by implementation difficulty.
Every algorithm is validated against the mathematical invariants of its family — not golden
output. A low-pass filter must attenuate above cutoff, an ODE integrator must reproduce a known
analytic solution to its order, a Kalman filter's covariance must stay positive-definite. Tests are
TEST_F on float, no heap, one behaviour per test, asserted against independent reference values.
The per-family metric strategy — which properties to assert for each algorithm type (accuracy, frequency/transient response, stability, boundaries, invariants, convergence, statistical consistency, conditioning) — is documented in TESTING.md. Mechanics and framework rules live in .github/instructions/testing.instructions.md.
Contributions, issues, and feature requests are welcome. Please check the contributing guidelines before submitting pull requests.
[Specify your license here - e.g., MIT, Apache 2.0]