Skip to main content

Crate numeris

Crate numeris 

Source
Expand description

§numeris

Pure-Rust numerical algorithms library — high performance with SIMD support (NEON, SSE2, AVX, AVX-512) while also supporting no-std for embedded and WASM targets. Similar in scope to SciPy.

Documentation & examples: https://numeris-rs.dev/

§Quick start

use numeris::{Matrix, Vector};

// Solve a linear system Ax = b
let a = Matrix::new([
    [2.0_f64, 1.0, -1.0],
    [-3.0, -1.0, 2.0],
    [-2.0, 1.0, 2.0],
]);
let b = Vector::from_array([8.0, -11.0, -3.0]);
let x = a.solve(&b).unwrap(); // x = [2, 3, -1]

§Modules

§Complex matrices

Enable the complex feature to use decompositions with Complex<f32> / Complex<f64>. Cholesky generalizes to Hermitian (A = LL^H), QR uses complex Householder reflections, and norms return real values. Zero overhead for real-only code paths.

§Cargo features

FeatureDefaultDescription
stdyesImplies alloc. Hardware FPU via system libm
allocvia stdDynMatrix / DynVector (heap-allocated, runtime-sized)
odeyesODE integration (RK4, adaptive solvers)
optimnoOptimization (root finding, BFGS, Gauss-Newton, LM)
controlnoDigital IIR filters, PID, lead/lag compensators, PID tuning
estimatenoState estimation (EKF, UKF). Implies alloc
interpnoInterpolation (linear, Hermite, Lagrange, cubic spline, bilinear 2D)
imageprocno2D image processing: filters, morphology, integral image, thresholding, Canny, corners, DoG, pyramid, geometric. Implies alloc
quadnoNumerical quadrature (Gauss-Legendre, adaptive Simpson, composite rules)
specialnoSpecial functions (gamma, beta, erf, incomplete gamma/beta)
statsnoStatistical distributions (Normal, Gamma, etc.) with sampling. Implies special
libmbaselinePure-Rust software float fallback
complexnoComplex<f32> / Complex<f64> support via num-complex
nalgebranoConversions between numeris and nalgebra types
serdenoSerialize/deserialize all types via serde
rayonnoMulti-threaded parallelism on runtime-sized paths (e.g. dynamic finite-difference Jacobians, most imageproc filters). Implies std
allnoAll features

§Parallelism

SIMD is always-on and parallelizes within a core; the optional rayon feature parallelizes across cores, and the two compose. It is opt-in (rayon needs std, so it is never part of the no-std baseline) and purely additive — builds without it are unchanged. Only heap-backed, runtime-sized paths with independent, disjoint output columns are parallelized: dynamic finite-difference Jacobians (the separate _par routines optim::finite_difference_jacobian_dyn_par, optim::finite_difference_gradient_dyn_par) and most imageproc filters (convolution/blur, rank & median, morphology, resize, local statistics). Small fixed-size Matrix operations and order-sensitive reductions are never parallelized. Each routine gates on total work (so small inputs stay sequential) and writes to disjoint slices, so results are identical regardless of thread count. Speedups run ~2.5–4× on large images.

The feature is purely additive — it never changes an existing signature (the parallel optim routines are new _par functions; the sequential ones keep their FnMut bound).

Re-exports§

pub use dynmatrix::DynMatrix;
pub use dynmatrix::DynMatrixf32;
pub use dynmatrix::DynMatrixf64;
pub use dynmatrix::DynMatrixi32;
pub use dynmatrix::DynMatrixi64;
pub use dynmatrix::DynMatrixu32;
pub use dynmatrix::DynMatrixu64;
pub use dynmatrix::DynVector;
pub use dynmatrix::DynVectorf32;
pub use dynmatrix::DynVectorf64;
pub use dynmatrix::DynVectori32;
pub use dynmatrix::DynVectori64;
pub use dynmatrix::DynVectoru32;
pub use dynmatrix::DynVectoru64;
pub use dynmatrix::DynMatrixz32;
pub use dynmatrix::DynMatrixz64;
pub use dynmatrix::DynVectorz32;
pub use dynmatrix::DynVectorz64;
pub use matrix::aliases::Matrix1;
pub use matrix::aliases::Matrix1x2;
pub use matrix::aliases::Matrix1x3;
pub use matrix::aliases::Matrix1x4;
pub use matrix::aliases::Matrix1x5;
pub use matrix::aliases::Matrix1x6;
pub use matrix::aliases::Matrix2;
pub use matrix::aliases::Matrix2x1;
pub use matrix::aliases::Matrix2x3;
pub use matrix::aliases::Matrix2x4;
pub use matrix::aliases::Matrix2x5;
pub use matrix::aliases::Matrix2x6;
pub use matrix::aliases::Matrix3;
pub use matrix::aliases::Matrix3x1;
pub use matrix::aliases::Matrix3x2;
pub use matrix::aliases::Matrix3x4;
pub use matrix::aliases::Matrix3x5;
pub use matrix::aliases::Matrix3x6;
pub use matrix::aliases::Matrix4;
pub use matrix::aliases::Matrix4x1;
pub use matrix::aliases::Matrix4x2;
pub use matrix::aliases::Matrix4x3;
pub use matrix::aliases::Matrix4x5;
pub use matrix::aliases::Matrix4x6;
pub use matrix::aliases::Matrix5;
pub use matrix::aliases::Matrix5x1;
pub use matrix::aliases::Matrix5x2;
pub use matrix::aliases::Matrix5x3;
pub use matrix::aliases::Matrix5x4;
pub use matrix::aliases::Matrix5x6;
pub use matrix::aliases::Matrix6;
pub use matrix::aliases::Matrix6x1;
pub use matrix::aliases::Matrix6x2;
pub use matrix::aliases::Matrix6x3;
pub use matrix::aliases::Matrix6x4;
pub use matrix::aliases::Matrix6x5;
pub use matrix::aliases::Vector1;
pub use matrix::aliases::Vector2;
pub use matrix::aliases::Vector4;
pub use matrix::aliases::Vector5;
pub use matrix::aliases::Vector6;
pub use matrix::vector::Vector;
pub use matrix::vector::Vector3;
pub use matrix::Matrix;
pub use quaternion::Quaternion;
pub use traits::FloatScalar;
pub use traits::LinalgScalar;
pub use traits::MatrixMut;
pub use traits::MatrixRef;
pub use traits::Scalar;

Modules§

control
Digital control: IIR filters, PID controller, compensator design, and tuning.
dynmatrix
estimate
State estimation: EKF, UKF, SR-UKF, CKF, RTS smoother, batch least-squares.
imageproc
Image processing: 2D convolution, Gaussian/box blur, Sobel gradients, and kernel generators.
interp
Interpolation: linear, Hermite, barycentric Lagrange, natural cubic spline, and bilinear (2D).
linalg
matrix
ode
ODE integration — fixed-step, adaptive, and stiff solvers.
optim
Optimization: root finding, unconstrained minimization, nonlinear least squares.
prelude
Convenience re-exports for common types and traits.
quad
Numerical quadrature (integration).
quaternion
special
Special mathematical functions.
stats
Statistical distributions: continuous and discrete.
traits

Macros§

matrix
Construct a Matrix using MATLAB-like syntax.
vector
Construct a column Vector (N×1 matrix).

Structs§

Complex
A complex number in Cartesian form.