Skip to main content

F16

Struct F16 

Source
pub struct F16(pub u16);
Expand description

IEEE 754 binary16 half-precision float.

Stored as u16. All arithmetic is performed by promoting to f64, computing, then narrowing back. This ensures deterministic behavior regardless of platform, since the f64 path is well-defined.

Tuple Fields§

§0: u16

Implementations§

Source§

impl F16

Source

pub const ZERO: F16

Positive zero.

Source

pub const NEG_ZERO: F16

Negative zero.

Source

pub const INFINITY: F16

Positive infinity.

Source

pub const NEG_INFINITY: F16

Negative infinity.

Source

pub const NAN: F16

Canonical NaN.

Source

pub const MAX: F16

Maximum finite value: 65504.0.

Source

pub const MIN_POSITIVE_SUBNORMAL: F16

Minimum positive subnormal.

Source

pub fn to_f64(self) -> f64

Convert f16 to f64.

Handles normals, subnormals, zeros, infinities, and NaNs.

Source

pub fn from_f64(value: f64) -> Self

Convert f64 to f16 (round-to-nearest-even).

Handles overflow to infinity, underflow to zero, and subnormals.

Source

pub fn from_f32(value: f32) -> Self

Convert f32 to f16.

Source

pub fn to_f32(self) -> f32

Convert f16 to f32.

Source

pub fn is_nan(self) -> bool

Check if this is NaN.

Source

pub fn is_infinite(self) -> bool

Check if this is infinite.

Source

pub fn is_finite(self) -> bool

Check if this is finite (not NaN or Inf).

Source

pub fn is_subnormal(self) -> bool

Check if this is subnormal (exponent == 0, mantissa != 0).

Source

pub fn add(self, rhs: Self) -> Self

Add two f16 values. Promotes both to f64, adds, then narrows back.

Source

pub fn sub(self, rhs: Self) -> Self

Subtract rhs from self. Promotes both to f64, subtracts, then narrows back.

Source

pub fn mul(self, rhs: Self) -> Self

Multiply two f16 values. Promotes both to f64, multiplies, then narrows back.

Source

pub fn div(self, rhs: Self) -> Self

Divide self by rhs. Promotes both to f64, divides, then narrows back.

Source

pub fn neg(self) -> Self

Negate by toggling the sign bit. Does not promote to f64.

Trait Implementations§

Source§

impl Clone for F16

Source§

fn clone(&self) -> F16

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for F16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for F16

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for F16

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for F16

Source§

fn eq(&self, other: &F16) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for F16

Source§

impl Eq for F16

Source§

impl StructuralPartialEq for F16

Auto Trait Implementations§

§

impl Freeze for F16

§

impl RefUnwindSafe for F16

§

impl Send for F16

§

impl Sync for F16

§

impl Unpin for F16

§

impl UnsafeUnpin for F16

§

impl UnwindSafe for F16

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.