Skip to main content

Float

Struct Float 

Source
pub struct Float { /* private fields */ }
Expand description

A floating point number in a given format.

A finite value is significand * 2^(exponent - precision + 1). A normal number has its leading significand bit set, a subnormal does not and has the format’s minimum exponent.

Implementations§

Source§

impl Float

Source

pub const fn zero(format: Format, sign: bool) -> Float

A zero of the given sign.

Source

pub const fn infinity(format: Format, sign: bool) -> Float

An infinity of the given sign.

Source

pub const fn format(self) -> Format

The format this number is in.

Source

pub const fn is_negative(self) -> bool

Whether the number is negative, which a zero can be.

Source

pub const fn is_zero(self) -> bool

Whether the number is a zero.

Source

pub const fn is_infinite(self) -> bool

Whether the number is an infinity.

Source

pub const fn is_finite(self) -> bool

Whether the number is finite, which a zero is.

Source

pub fn parse(text: &str, format: Format) -> Result<(Float, Status), ParseError>

Converts a decimal or hexadecimal spelling into the nearest number in format, rounding to nearest with ties to even.

The spelling is the number alone: no suffix, because the suffix is what chose the format, and no infinity or nan, because C has no spelling for those. A sign is accepted even though a C constant never has one, since the value the constant evaluator folds does. C23 digit separators are stripped here.

§Errors

ParseError, for a spelling that is not a number at all.

Source

pub fn to_bits(self) -> u128

The bits of the encoding, in the low Format::width bits.

The x87 format keeps its leading significand bit, so its eightieth bit is the sign and its sixty fourth is the one every other format leaves implied.

Source

pub fn from_bits(format: Format, bits: u128) -> Float

Reads a number back out of its encoding, which is what makes Float::to_bits testable and what a constant folded in the IR is stored as.

A signalling or quiet nan comes back as an infinity, because nothing here makes one and nothing here has anywhere to put the payload yet.

Trait Implementations§

Source§

impl Clone for Float

Source§

fn clone(&self) -> Float

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Float

Source§

impl Debug for Float

Source§

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

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

impl Eq for Float

Source§

impl PartialEq for Float

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Float

Auto Trait Implementations§

§

impl Freeze for Float

§

impl RefUnwindSafe for Float

§

impl Send for Float

§

impl Sync for Float

§

impl Unpin for Float

§

impl UnsafeUnpin for Float

§

impl UnwindSafe for Float

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 = !

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.