A Rust numeric library for linear algebra, numerical analysis, statistics, and machine learning with high performance and syntax inspired by R, MATLAB, and Python.
Peroxide is a Rust library for numerical computing that provides tools for linear algebra, numerical analysis, statistics, and machine learning. It solves the problem of performing high-performance scientific computations in Rust while offering a syntax similar to R, MATLAB, and Python to ease the learning curve.
Rust developers working on scientific computing, data analysis, or machine learning projects who need performant numerical tools with familiar syntax.
Developers choose Peroxide for its combination of Rust's safety and performance, extensive feature set, and user-friendly syntax that reduces the barrier to entry for numerical computing in Rust.
Rust numeric library with high performance and friendly syntax
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
BLAS integration ensures fast matrix operations, with the O3 feature leveraging optimized routines for decompositions like QR, SVD, and Cholesky, as noted in the README's performance section.
Macros and constructors mimic R, MATLAB, NumPy, and Julia, reducing the learning curve for users from those ecosystems, exemplified by ml_matrix and c! macros in the examples.
Includes linear algebra, ODE solvers, automatic differentiation, statistics, and DataFrame support, making it a batteries-included library for scientific computing in Rust.
Optional features like plot, parallel, and complex allow users to tailor the library to their needs without bloating dependencies, as highlighted in the 'Customize features' section.
The O3 feature requires OpenBLAS installation, which the README admits is 'little bit hard to set-up,' adding deployment complexity compared to pure Rust alternatives.
Two coding styles (prelude for simplicity, fuga for explicit control) can fragment user experience and increase cognitive load, especially for newcomers deciding between them.
Plotting relies on Python and matplotlib via pyo3, introducing cross-language overhead and potential compatibility issues, limiting pure Rust workflows.
Machine learning and sparse structures are labeled as beta in the module structure, indicating incomplete features and potential instability for advanced use cases.