Embedded math library featuring fast, safe floating point approximations for common arithmetic operations, 2D and 3D vector types, and statistical analysis.
micromath supports approximating many arithmetic operations on
using bitwise operations, providing great performance and small code size
at the cost of precision. For use cases like graphics and signal
processing, these approximations are often sufficient and the performance
gains worth the lost precision.
These approximations are provided by the micromath::F32Ext trait which is
f32, providing a drop-in
std-compatible (sans lost precision) API.
use micromath::F32Ext; let n = 2.0.sqrt(); assert_eq!(n, 1.5); // close enough
F32Ext trait provides methods which are already defined in
std, in cases where your crate links
F32Ext versions of
the same methods will not be used, in which case you will get an unused
import warning for
If you encounter this, add an
#[allow(unused_imports)] above the import.
#[allow(unused_imports)] use micromath::F32Ext;
vector module for more information on vector types.
The following vector types are available, all of which have
pub x and
pub y (and on 3D vectors,
pub z) members:
statistics module for more information on statistical analysis
traits and functionality.
The following traits are available and impl'd for slices and iterators of
f32 (and can be impl'd for other types):
- Mean - compute arithmetic mean with the
- StdDev - compute standard deviation with the
- Trim - cull outliers from a sample slice with the
- Variance - compute variance with the `variance() method
quaternion module for more information.
Quaternions are a number system that extends the complex numbers which can be used for efficiently computing spatial rotations.
Statistical analysis support.
Algebraic vector types generic over a number of axes and a component type.