The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
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.