Expand description
Embedded-friendly (i.e. #![no_std]) math library featuring fast, safe
floating point approximations for common arithmetic operations, as well as
2D and 3D vector types, statistical analysis functions, and quaternions.
Floating point approximations: F32 and F32Ext
micromath supports approximating many arithmetic operations on f32
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 defined on the F32 newtype wrapper.
F32Ext extension trait
Floating point approximations can used via the the F32Ext trait which
is impl’d for f32, providing a drop-in std-compatible API.
use micromath::F32Ext;
let n = 2.0.sqrt();
assert_eq!(n, 1.5); // close enoughSince the F32Ext trait provides methods which are already defined in
std, in cases where your crate links std the F32Ext versions of
the same methods will not be used, in which case you will get an unused
import warning for F32Ext.
If you encounter this, add an #[allow(unused_imports)] above the import.
#[allow(unused_imports)]
use micromath::F32Ext;Vector types
See the [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:
| Rust | 2D | 3D |
|---|---|---|
i8 | I8x2 | I8x3 |
i16 | I16x2 | I16x3 |
i32 | I32x2 | I32x3 |
u8 | U8x2 | U8x3 |
u16 | U16x2 | U16x3 |
u32 | U32x2 | U32x3 |
f32 | F32x2 | F32x3 |
Statistical analysis
See the [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][statistics::Mean] - compute arithmetic mean with themean()method. - [
StdDev][statistics::StdDev] - compute standard deviation with thestddev()method. - [
Trim][statistics::Trim] - cull outliers from a sample slice with thetrim()method. - [
Variance][statistics::Variance] - compute variance with thevariance()method.
Structs
- 32-bit floating point wrapper which implements fast approximation-based operations.
Traits
f32extension providing various arithmetic approximations and polyfills forstdfunctionality.