The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
serialize_as_f32
and serialize_as_string
functions when serde
cargo feature is enabled. They allowing customizing the serialization by using #[serde(serialize_with="f16::serialize_as_f32")]
attribute in serde derive macros. Closes #60.f32
, f64
, and string values in addition to its previous default deserialization. Closes #60.#[inline]
on fallback functions, which improved conversion execution on non-nightly rust by up to 50%. By @Shnatsel.spirv
. Some traits and functions are unavailble on this architecture. By @charles-r-earp.total_cmp
method to both float types. Closes #55, by @joseluis.std
is now enabled as a default cargo feature. Disable default features to continue using no_std
support.#[must_use]
attributes to functions, as appropriate.slice::as_ptr
not correctly using mutable reference. By @Nilstrieb.const
conversion methods to both f16
and bf16
. These methods never use hardware intrinsics, unlike the current conversion methods, which is why they are separated into new methods. The following const
methods were added:from_f32_const
from_f64_const
to_f32_const
to_f64_const
Neg
trait support for borrowed values &f16
and &bf16
. By @pthariensflame.AsPrimitive
implementations from and to self, usize
, and isize
. By @kali.serialize
cargo feature has been removed. Use serde
cargo feature instead.consts
module has been removed. Use associated constants on f16
instead.f16::as_bits
slice::from_bits_mut
slice::to_bits_mut
slice::from_bits
slice::to_bits
vec::from_bits
vec::to_bits
Not recommended due to introducing compilation error in Rust versions that worked with 1.8.0.
std
feature on optional dependencies.std
feature is not enabled and num-traits
is enabled under new resolver. Now properly uses libm
num-traits feature.Add
, Div
, Mul
, Neg
, Rem
, and Sub
traits. Previously, these were only implemented under the num-traits
feature. Keep in mind they still convert to f32
and back in the implementation.f16
and bf16
are now const
:to_le_bytes
to_be_bytes
to_ne_bytes
from_le_bytes
from_be_bytes
from_ne_bytes
is_normal
classify
signum
zerocopy
traits AsBytes
and FromBytes
under zerocopy
cargo feature. By @samcrow.core::iter::Product
and core::iter::Sum
traits, with the same caveat as above about converting to f32
and back under the hood.NEG_ONE
to both f16
and bf16
.f16
and bf16
:copysign
max
min
clamp
bytemuck
and num-traits
optional features.bytemuck
traits Zeroable
and Pod
under bytemuck
cargo feature. By @charles-r-earp.num-traits
traits ToPrimitive
and FromPrimitive
under num-traits
cargo feature. By @charles-r-earp.Binary
, Octal
, LowerHex
, and UpperHex
string format traits to format raw f16
/bf16
bytes to string.Debug
trait implementation now formats f16
/bf16
as float instead of raw bytes hex. Use newly implemented formatting traits to format in hex instead of Debug
. Fixes #37.LOG2_10
and LOG10_2
constants to both f16
and bf16
, which were added to f32
and f64
in the standard library in 1.43.0. By @tspiteri.to_le/be/ne_bytes
and from_le/be/ne_bytes
to both f16
and bf16
, which were added to the standard library in 1.40.0. By @bzm3r.alloc
feature to support the alloc
crate in no_std
environments. By @zserik. The vec
module is now available with either alloc
or std
feature.#[repr(transparent)]
to f16
/bf16
to remove undefined behavior. By @jfrimmel.bf16
type implementing the alternative bfloat16
16-bit floating point format. By @tspiteri.f16::from_bits
, f16::to_bits
, f16::is_nan
, f16::is_infinite
, f16::is_finite
, f16::is_sign_positive
, and f16::is_sign_negative
are now const
fns.slice::HalfBitsSliceExt
and slice::HalfBitsSliceExt
extension traits have been added for performing efficient reinterpret casts and conversions of slices to and from [f16]
and [bf16]
. These traits will use hardware SIMD conversion instructions when available and the use-intrinsics
cargo feature is enabled.vec::HalfBitsVecExt
and vec::HalfFloatVecExt
extension traits have been added for performing efficient reinterpret casts to and from Vec<f16>
and Vec<bf16>
. These traits are only available with the std
cargo feature.prelude
has been added, for easy importing of most common functionality. Currently the prelude imports f16
, bf16
, and the new slice and vec extension traits.f16
type to replace deprecated consts
module.use-intrinsics
feature) now matches hardware rounding by rounding to nearest, ties to even. Fixes #24, by @tspiteri.f32
to f64
conversions, retaining sign. Fixes #23, by @tspiteri.std
and use-intrinsics
features are enabled and the compile target host does not support required features.use-intrinsics
feature is enabled, will now always compile and run without error correctly regardless of compile target options.consts
module and all its constants have been deprecated; use the associated constants on f16
instead.slice::from_bits
has been deprecated; use slice::HalfBitsSliceExt::reinterpret_cast
instead.slice::from_bits_mut
has been deprecated; use slice::HalfBitsSliceExt::reinterpret_cast_mut
instead.slice::to_bits
has been deprecated; use slice::HalfFloatSliceExt::reinterpret_cast
instead.slice::to_bits_mut
has been deprecated; use slice::HalfFloatSliceExt::reinterpret_cast_mut
instead.vec::from_bits
has been deprecated; use vec::HalfBitsVecExt::reinterpret_into
instead.vec::to_bits
has been deprecated; use vec::HalfFloatVecExt::reinterpret_into
instead.EPSILON
, MAX_10_EXP
, MAX_EXP
, MIN_10_EXP
, and MIN_EXP
in consts
module, as well as setting consts::NAN
to match value of f32::NAN
converted to f16
. By @tspiteri.slice::from_bits_mut
and slice::to_bits_mut
for conversion between mutable u16
and f16
slices. Fixes #16, by @johannesvollmer.slice
and optional vec
(only included with std
feature) modules for conversions between u16
and f16
buffers. Fixes #14, by @johannesvollmer.to_bits
added to replace as_bits
. Fixes #12, by @tspiteri.serde
optional dependency no longer uses its default std
feature.as_bits
has been deprecated; use to_bits
instead.serialize
cargo feature is deprecated; use serde
instead.Not recommended due to introducing compilation error on rustc versions prior to 1.27.
use-intrinsics
is not enabled. By @Moongoodboy-K.is_sign_positive
and is_sign_negative
to match the IEEE754 conforming behavior of the standard library since Rust 1.20.0. Fixes #3, by @tspiteri.is_nan
and is_infinite
from @tspiteri.f16
and f32
to f16
, and case where f64
NaN could be converted to f16
infinity instead of NaN. Fixes #5, by @tspiteri.serde
dependency updated to 1.0 stable.serde
0.9 and stable Rust 1.15 for serialize
feature.serde
support under new serialize
feature.no_std
for crate by default.f16
type.