This crate provides 2 types:
F8E4M3: Sign + 4-bit exponent + 3-bit mantissa. More precise but less dynamic range.F8E5M2: Sign + 5-bit exponent + 2-bit mantissa. Less precise but more dynamic range (same exponent asf16).
Generally, this crate is modelled after the half crate, so it can be
used alongside and with minimal code changes.
- This crate provides
no_stdsupport - Requires Rust 1.70 or greater
std- Enable features that depend on the Rust standard library.serde- Add support for theserdecrate withSerializeandDeserializetraits.num-traits- Implement traits fromnum-traitssuch asToPrimitive,FromPrimitive,AsPrimitive,Num,Float,FloatCore, andBounded.bytemuck- Implement traits frombytemuckincludingZeroableandPodzerocopy- Implement traits fromzerocopyincludingAsBytesandFromBytesrand_distr- Implement traits fromrand_distrincludingDistributionand othersrkyv- Enable zero-copy deserialization withrkyv.
- Good introduction: https://en.wikipedia.org/wiki/Minifloat
- Paper: https://arxiv.org/pdf/2209.05433