Numerical Algorithms Library
March 25, 2026 ยท View on GitHub
Numerical Algorithms Library
Overview
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.
Getting Started
Refer to the documentation to quickly integrate and utilize the library's signal processing and control algorithms in your projects.
Documentation
| Category | Description |
|---|---|
| Analysis | FFT, Power Spectral Density, DCT, Window Functions |
| Control Analysis | Frequency Response, Root Locus |
| Controllers | PID, LQR, MPC |
| Dynamics | Euler-Lagrange, Newton-Euler, Recursive Newton-Euler, ABA |
| Estimators | Linear Regression, Yule-Walker (offline), Recursive Least Squares (online) |
| Filters | Kalman, Extended Kalman, Unscented Kalman, FIR, IIR |
| Kinematics | Forward Kinematics |
| Neural Network | Layers, activations, losses, model |
| Optimization | Gradient Descent |
| Regularization | L1 (Lasso), L2 (Ridge) |
| Solvers | Gaussian Elimination, Levinson-Durbin, Durand-Kerner, Cholesky, DARE |
| Performance Optimization | Compiler optimizations, SIMD |
Each category page lists its algorithms with a brief description and links to the detailed documentation.
Simulator
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.
Building the Simulator
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).
How to Run the Simulator
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.
Host Setup
Windows
- 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.
Linux
- 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.
Contributing
Contributions, issues, and feature requests are welcome. Please check the contributing guidelines before submitting pull requests.
License
[Specify your license here - e.g., MIT, Apache 2.0]