A pure Rust linear algebra library focusing on portability, correctness, and performance with both low-level routines and high-level wrappers.
faer is a linear algebra library for the Rust programming language that provides both low-level numerical routines and high-level wrapper abstractions. It solves the need for a pure Rust implementation of linear algebra operations with focus on portability, correctness, and performance, offering an alternative to binding to C/Fortran libraries.
Rust developers working on scientific computing, machine learning, graphics, or any application requiring linear algebra operations who value portability and Rust's safety guarantees.
Developers choose faer because it's implemented entirely in Rust (no external C/Fortran dependencies), offers both high-level convenience and low-level control, and prioritizes correctness while maintaining competitive performance with established numerical libraries.
Linear algebra foundation for the Rust programming language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implemented entirely in Rust with no external C/Fortran dependencies, ensuring portability and leveraging Rust's safety guarantees, as emphasized in the README for correctness and reliability.
Designed to compete with established numerical libraries, with benchmarks available on the official website, showing a focus on competitive computational speed.
Prioritizes numerical stability and reliable results, with correctness as a core philosophy, making it suitable for scientific applications where accuracy is critical.
Offers both high-level abstractions for ease of use and low-level control for specialized optimizations, providing versatility for different development needs.
As a newer library, it lacks the extensive community support, proven reliability, and tooling integrations of older alternatives like BLAS or ndarray, which might hinder adoption in complex projects.
While optimized, pure Rust implementations may not always match the hand-tuned assembly or decades of optimization in legacy C/Fortran libraries for all linear algebra operations, especially in edge cases.
The dual high-level and low-level APIs require developers to understand both abstraction layers to use faer effectively, which can increase initial setup time and complexity compared to simpler libraries.