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.

§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)
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
allnoAll features

Re-exports§

pub use matrix::vector::ColumnVector;
pub use matrix::vector::ColumnVector3;
pub use matrix::vector::Vector;
pub use matrix::vector::Vector3;
pub use matrix::Matrix;
pub use matrix::aliases::Matrix1;
pub use matrix::aliases::Matrix2;
pub use matrix::aliases::Matrix3;
pub use matrix::aliases::Matrix4;
pub use matrix::aliases::Matrix5;
pub use matrix::aliases::Matrix6;
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::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::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::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::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::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::aliases::ColumnVector1;
pub use matrix::aliases::ColumnVector2;
pub use matrix::aliases::ColumnVector4;
pub use matrix::aliases::ColumnVector5;
pub use matrix::aliases::ColumnVector6;
pub use dynmatrix::DynMatrix;
pub use dynmatrix::DynVector;
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::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 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.
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.
quad
Numerical quadrature (integration).
quaternion
special
Special mathematical functions.
stats
Statistical distributions: continuous and discrete.
traits

Structs§

Complex
A complex number in Cartesian form.