Embedded Rust math library featuring fast, safe floating point approximations for common arithmetic operations, 2D and 3D vector types, and statistical analysis.
- Algebraic vector types:
- Statistical analysis:
Comparisons with other Rust crates
The libm crate contains a port of MUSL's libm to Rust, providing high-precision implementations of common arithmetic functions.
micromath trades precision for performance, instead using the best-available
approximations of the same functions, implemented using safe conversions
The approximations are generally calculated using a combination of bit
twiddling and magic constants, as opposed to the FPU-heavy approaches used by
libm. These approaches are culled from recent academic research papers as
well as older approaches which have been commonly used in games and other
performance critical use cases where approximations are adequate.
The vek crate provides a rich library for 2D and 3D vector types.
Unfortunately, due to a number of issues
including a transitive
std dependency through the approx crate,
vek does not support
no_std. According to the crate's author, the potential
fixes are nontrivial (and involve addressing problems such as transcendantal
functions causing overflow panics).
micromath has been written from the ground up to support
no_std use cases.
In fact, it doesn't even have a
Code of Conduct
We abide by the Contributor Covenant and ask that you do as well.
For more information, please see CODE_OF_CONDUCT.md.
Copyright © 2019 NeoBirth Developers
Dual licensed under your choice of either of:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Incorporates some tests from the libm crate, which is Copyright © 2018 Jorge Aparicio and also dual licensed under the Apache 2.0 and MIT licenses.