This crate implements a half-precision floating point f16
type for Rust implementing the IEEE 754-2008 binary16
type.
The f16
type provides all the same operations as a normal Rust float type, but since it is primarily leveraged for
minimal floating point storage and no major hardware implements them, all math operations are done as an f32
type.
f16
by default provides no_std
support so can easily be used in embedded code where a smaller float is most useful.
Requries Rust 1.10 or greater.
See the crate documentation for more details.
-
serde
- ImplementSerialize
andDeserialize
traits forf16
. This adds a dependency on theserde
crate. Requires Rust >= 1.15. -
use-intrinsics
- Use hardware intrinsics forf16
conversions if available on the compiler host target. By default, without this feature, conversions are done only in software, which will be the fallback if the host target does not have hardware support. Available only on Rust nightly channel. -
std
- Use Ruststd
library. This enables thevec
module, which contains zero-copy conversions for theVec
type. This allows fast conversion between rawVec<u16>
bits andVec<f16>
arrays, and vice versa.
This library is distributed under the terms of either of:
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.