Half-precision floating point type f16 for Rust.
Clone or download
Latest commit 4714d8b Oct 4, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src elide some lifetimes Oct 3, 2018
.gitattributes
.gitignore
.travis.yml deprecate serialize feature to use serde directly. Fix serde std usage. Sep 3, 2018
CHANGELOG.md
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
README.md
appveyor.yml deprecate serialize feature to use serde directly. Fix serde std usage. Sep 3, 2018

README.md

half: f16 type for Rust

Crates.io docs.rs Build Status Build status

This crate implements a half-precision floating point f16 type for Rust implementing the IEEE 754-2008 binary16 type.

How-to Use

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.

Optional Features

  • serde - Implement Serialize and Deserialize traits for f16. This adds a dependency on the serde crate. Requires Rust >= 1.15.

  • use-intrinsics - Use hardware intrinsics for f16 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 Rust std library. This enables the vec module, which contains zero-copy conversions for the Vec type. This allows fast conversion between raw Vec<u16> bits and Vec<f16> arrays, and vice versa.

More Documentation

License

This library is distributed under the terms of either of:

at your option.

Contributing

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.