Skip to main content

Format

Struct Format 

Source
pub struct Format {
    pub p: u32,
    pub width: u32,
    pub bias: i32,
}
Expand description

The parameters of an IEEE-754 binary interchange format.

Held as data rather than as a type parameter so that one implementation serves both precisions. A second copy of this logic specialized per format is exactly how the two diverge.

Fields§

§p: u32

Significand bits including the implicit leading one (24 / 53).

§width: u32

Total width in bits (32 / 64).

§bias: i32

Exponent bias (127 / 1023).

Implementations§

Source§

impl Format

Source

pub const fn man_bits(self) -> u32

Stored mantissa bits — one fewer than Format::p, the implicit bit not being stored.

Source

pub const fn max_biased(self) -> u32

The all-ones exponent field, which encodes infinity and NaN.

Source

pub const fn min_lsb_exp(self) -> i32

The exponent of the least significant bit of the smallest subnormal — -149 for f32, -1074 for f64.

This is the floor the rounding step clamps to, and it is what makes a result subnormal rather than merely small.

Source

pub const fn max_finite(self) -> u64

The largest finite value’s encoding, magnitude only.

Source

pub const fn infinity(self) -> u64

Positive infinity, magnitude only.

Source

pub const fn default_nan(self) -> u64

The NaN the VR4300 delivers as the result of an invalid operation.

0x7FBF_FFFF / 0x7FF7_FFFF_FFFF_FFFF — the significand’s MSB is clear, which by IEEE-754:2008 would make the result of every invalid operation a signaling NaN, absurdly re-trapping on first use.

It is not absurd, because the VR4300 uses the legacy MIPS convention, where MSB set means signaling. Under its own rules this is an ordinary quiet NaN. See fpu::is_snan_f32 and accuracy ledger C-12; this value is the corroboration that the convention really is inverted rather than the tests being odd.

Trait Implementations§

Source§

impl Clone for Format

Source§

fn clone(&self) -> Format

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 Format

Source§

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

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

impl<'de> Deserialize<'de> for Format

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Format

Source§

fn eq(&self, other: &Format) -> 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 Serialize for Format

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for Format

Source§

impl Eq for Format

Source§

impl StructuralPartialEq for Format

Auto Trait Implementations§

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> 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, 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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,