f16

Primitive Type f16 

🔬This is a nightly-only experimental API. (f16 #116909)
Expand description

A 16-bit floating-point type (specifically, the “binary16” type defined in IEEE 754-2008).

This type is very similar to f32 but has decreased precision because it uses half as many bits. Please see the documentation for f32 or Wikipedia on half-precision values for more information.

Note that most common platforms will not support f16 in hardware without enabling extra target features, with the notable exception of Apple Silicon (also known as M1, M2, etc.) processors. Hardware support on x86/x86-64 requires the avx512fp16 or avx10.1 features, while RISC-V requires Zfh, and Arm/AArch64 requires FEAT_FP16. Usually the fallback implementation will be to use f32 hardware if it exists, and convert between f16 and f32 when performing math.

See also the std::f16::consts module.

Trait Implementations§

1.0.0 (const: unstable) · Source§

impl Add<&f16> for &f16

Source§

type Output = <f16 as Add>::Output

The resulting type after applying the + operator.
Source§

fn add(self, other: &f16) -> <f16 as Add<f16>>::Output

Performs the + operation. Read more
1.0.0 (const: unstable) · Source§

impl Add<&f16> for f16

Source§

type Output = <f16 as Add>::Output

The resulting type after applying the + operator.
Source§

fn add(self, other: &f16) -> <f16 as Add<f16>>::Output

Performs the + operation. Read more
1.0.0 (const: unstable) · Source§

impl Add<f16> for &f16

Source§

type Output = <f16 as Add>::Output

The resulting type after applying the + operator.
Source§

fn add(self, other: f16) -> <f16 as Add<f16>>::Output

Performs the + operation. Read more
1.0.0 (const: unstable) · Source§

impl Add for f16

Source§

type Output = f16

The resulting type after applying the + operator.
Source§

fn add(self, other: f16) -> f16

Performs the + operation. Read more
1.22.0 (const: unstable) · Source§

impl AddAssign<&f16> for f16

Source§

fn add_assign(&mut self, other: &f16)

Performs the += operation. Read more
1.8.0 (const: unstable) · Source§

impl AddAssign for f16

Source§

fn add_assign(&mut self, other: f16)

Performs the += operation. Read more
1.0.0 (const: unstable) · Source§

impl Clone for f16

Source§

fn clone(&self) -> Self

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

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

Performs copy-assignment from source. Read more
1.0.0 (const: unstable) · Source§

impl Default for f16

Source§

fn default() -> f16

Returns the default value of 0.0

1.0.0 (const: unstable) · Source§

impl Div<&f16> for &f16

Source§

type Output = <f16 as Div>::Output

The resulting type after applying the / operator.
Source§

fn div(self, other: &f16) -> <f16 as Div<f16>>::Output

Performs the / operation. Read more
1.0.0 (const: unstable) · Source§

impl Div<&f16> for f16

Source§

type Output = <f16 as Div>::Output

The resulting type after applying the / operator.
Source§

fn div(self, other: &f16) -> <f16 as Div<f16>>::Output

Performs the / operation. Read more
1.0.0 (const: unstable) · Source§

impl Div<f16> for &f16

Source§

type Output = <f16 as Div>::Output

The resulting type after applying the / operator.
Source§

fn div(self, other: f16) -> <f16 as Div<f16>>::Output

Performs the / operation. Read more
1.0.0 (const: unstable) · Source§

impl Div for f16

Source§

type Output = f16

The resulting type after applying the / operator.
Source§

fn div(self, other: f16) -> f16

Performs the / operation. Read more
1.22.0 (const: unstable) · Source§

impl DivAssign<&f16> for f16

Source§

fn div_assign(&mut self, other: &f16)

Performs the /= operation. Read more
1.8.0 (const: unstable) · Source§

impl DivAssign for f16

Source§

fn div_assign(&mut self, other: f16)

Performs the /= operation. Read more
1.0.0 (const: unstable) · Source§

impl Mul<&f16> for &f16

Source§

type Output = <f16 as Mul>::Output

The resulting type after applying the * operator.
Source§

fn mul(self, other: &f16) -> <f16 as Mul<f16>>::Output

Performs the * operation. Read more
1.0.0 (const: unstable) · Source§

impl Mul<&f16> for f16

Source§

type Output = <f16 as Mul>::Output

The resulting type after applying the * operator.
Source§

fn mul(self, other: &f16) -> <f16 as Mul<f16>>::Output

Performs the * operation. Read more
1.0.0 (const: unstable) · Source§

impl Mul<f16> for &f16

Source§

type Output = <f16 as Mul>::Output

The resulting type after applying the * operator.
Source§

fn mul(self, other: f16) -> <f16 as Mul<f16>>::Output

Performs the * operation. Read more
1.0.0 (const: unstable) · Source§

impl Mul for f16

Source§

type Output = f16

The resulting type after applying the * operator.
Source§

fn mul(self, other: f16) -> f16

Performs the * operation. Read more
1.22.0 (const: unstable) · Source§

impl MulAssign<&f16> for f16

Source§

fn mul_assign(&mut self, other: &f16)

Performs the *= operation. Read more
1.8.0 (const: unstable) · Source§

impl MulAssign for f16

Source§

fn mul_assign(&mut self, other: f16)

Performs the *= operation. Read more
1.0.0 (const: unstable) · Source§

impl Neg for &f16

Source§

type Output = <f16 as Neg>::Output

The resulting type after applying the - operator.
Source§

fn neg(self) -> <f16 as Neg>::Output

Performs the unary - operation. Read more
1.0.0 (const: unstable) · Source§

impl Neg for f16

Source§

type Output = f16

The resulting type after applying the - operator.
Source§

fn neg(self) -> f16

Performs the unary - operation. Read more
1.0.0 (const: unstable) · Source§

impl PartialEq for f16

Source§

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

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

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
1.0.0 (const: unstable) · Source§

impl PartialOrd for f16

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
Source§

fn lt(&self, other: &Self) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
Source§

fn le(&self, other: &Self) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
Source§

fn gt(&self, other: &Self) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
Source§

fn ge(&self, other: &Self) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
1.0.0 (const: unstable) · Source§

impl Rem<&f16> for &f16

Source§

type Output = <f16 as Rem>::Output

The resulting type after applying the % operator.
Source§

fn rem(self, other: &f16) -> <f16 as Rem<f16>>::Output

Performs the % operation. Read more
1.0.0 (const: unstable) · Source§

impl Rem<&f16> for f16

Source§

type Output = <f16 as Rem>::Output

The resulting type after applying the % operator.
Source§

fn rem(self, other: &f16) -> <f16 as Rem<f16>>::Output

Performs the % operation. Read more
1.0.0 (const: unstable) · Source§

impl Rem<f16> for &f16

Source§

type Output = <f16 as Rem>::Output

The resulting type after applying the % operator.
Source§

fn rem(self, other: f16) -> <f16 as Rem<f16>>::Output

Performs the % operation. Read more
1.0.0 (const: unstable) · Source§

impl Rem for f16

The remainder from the division of two floats.

The remainder has the same sign as the dividend and is computed as: x - (x / y).trunc() * y.

§Examples

let x: f32 = 50.50;
let y: f32 = 8.125;
let remainder = x - (x / y).trunc() * y;

// The answer to both operations is 1.75
assert_eq!(x % y, remainder);
Source§

type Output = f16

The resulting type after applying the % operator.
Source§

fn rem(self, other: f16) -> f16

Performs the % operation. Read more
1.22.0 (const: unstable) · Source§

impl RemAssign<&f16> for f16

Source§

fn rem_assign(&mut self, other: &f16)

Performs the %= operation. Read more
1.8.0 (const: unstable) · Source§

impl RemAssign for f16

Source§

fn rem_assign(&mut self, other: f16)

Performs the %= operation. Read more
1.0.0 (const: unstable) · Source§

impl Sub<&f16> for &f16

Source§

type Output = <f16 as Sub>::Output

The resulting type after applying the - operator.
Source§

fn sub(self, other: &f16) -> <f16 as Sub<f16>>::Output

Performs the - operation. Read more
1.0.0 (const: unstable) · Source§

impl Sub<&f16> for f16

Source§

type Output = <f16 as Sub>::Output

The resulting type after applying the - operator.
Source§

fn sub(self, other: &f16) -> <f16 as Sub<f16>>::Output

Performs the - operation. Read more
1.0.0 (const: unstable) · Source§

impl Sub<f16> for &f16

Source§

type Output = <f16 as Sub>::Output

The resulting type after applying the - operator.
Source§

fn sub(self, other: f16) -> <f16 as Sub<f16>>::Output

Performs the - operation. Read more
1.0.0 (const: unstable) · Source§

impl Sub for f16

Source§

type Output = f16

The resulting type after applying the - operator.
Source§

fn sub(self, other: f16) -> f16

Performs the - operation. Read more
1.22.0 (const: unstable) · Source§

impl SubAssign<&f16> for f16

Source§

fn sub_assign(&mut self, other: &f16)

Performs the -= operation. Read more
1.8.0 (const: unstable) · Source§

impl SubAssign for f16

Source§

fn sub_assign(&mut self, other: f16)

Performs the -= operation. Read more
1.0.0 · Source§

impl Copy for f16