[][src]Trait fixed::sealed::Float

pub trait Float: SealedFloat {
    fn from_fixed<F>(val: F) -> Self
    where
        F: Fixed
, { ... }
fn to_fixed<F>(self) -> F
    where
        F: Fixed
, { ... }
fn checked_to_fixed<F>(self) -> Option<F>
    where
        F: Fixed
, { ... }
fn saturating_to_fixed<F>(self) -> F
    where
        F: Fixed
, { ... }
fn wrapping_to_fixed<F>(self) -> F
    where
        F: Fixed
, { ... }
fn overflowing_to_fixed<F>(self) -> (F, bool)
    where
        F: Fixed
, { ... } }

This trait is implemented for the primitive floating-point types, and for f16 if the f16 feature is enabled.

This trait is sealed and cannot be implemented for more types; it is implemented for f32 and f64, and for f16 if the f16 feature is enabled.

Provided methods

fn from_fixed<F>(val: F) -> Self where
    F: Fixed

Converts from a fixed-point number.

This method rounds to the nearest, with ties rounding to even.

Examples

use fixed::sealed::Float;
type Fix = fixed::FixedI16<fixed::frac::U8>;
// 1.625 is 1.101 in binary
let fix = Fix::from_bits(0b1101 << (8 - 3));
assert_eq!(f32::from_fixed(fix), 1.625);

fn to_fixed<F>(self) -> F where
    F: Fixed

Converts to a fixed-point number.

This method rounds to the nearest, with ties rounding to even.

Panics

Panics if the value is not finite.

When debug assertions are enabled, also panics if the value does not fit. When debug assertions are not enabled, the wrapped value can be returned, but it is not considered a breaking change if in the future it panics; if wrapping is required use wrapping_to_fixed instead.

Examples

use fixed::sealed::Float;
type Fix = fixed::FixedI16<fixed::frac::U8>;
// 1.625 is 1.101 in binary
let fix: Fix = 1.625.to_fixed();
assert_eq!(fix, Fix::from_bits(0b1101 << (8 - 3)));

fn checked_to_fixed<F>(self) -> Option<F> where
    F: Fixed

Converts to a fixed-point number if it fits, otherwise returns None.

Examples

use fixed::sealed::Float;
type Fix = fixed::FixedI16<fixed::frac::U8>;
// 1.625 is 1.101 in binary
let checked_fix: Option<Fix> = 1.625f32.checked_to_fixed();
let one_point_625 = Fix::from_bits(0b1101 << (8 - 3));
assert_eq!(checked_fix, Some(one_point_625));
assert!(1000f32.checked_to_fixed::<Fix>().is_none());
assert!(std::f64::NAN.checked_to_fixed::<Fix>().is_none());

fn saturating_to_fixed<F>(self) -> F where
    F: Fixed

Converts to a fixed-point number, saturating if it does not fit.

Panics

This method panics if the value is NaN.

Examples

use fixed::sealed::Float;
type Fix = fixed::FixedI16<fixed::frac::U8>;
// 1.625 is 1.101 in binary
let fix: Fix = 1.625f32.saturating_to_fixed();
assert_eq!(fix, Fix::from_bits(0b1101 << (8 - 3)));
let neg_inf_to_fixed: Fix = std::f64::NEG_INFINITY.saturating_to_fixed();
assert_eq!(neg_inf_to_fixed, Fix::min_value());

fn wrapping_to_fixed<F>(self) -> F where
    F: Fixed

Converts to a fixed-point number, wrapping if it does not fit.

Panics

This method panics if the value is not finite.

Examples

use fixed::sealed::Float;
type Fix = fixed::FixedU16<fixed::frac::U8>;
// 6.5 is 110.1 in binary
let six_point_5 = Fix::from_bits(0b1101 << (8 - 1));
assert_eq!(6.5f32.wrapping_to_fixed::<Fix>(), six_point_5);
// 1030.5 = 1024 + 6.5, 1024 is a power of 2 that will be wrapped
assert_eq!(1030.5f64.wrapping_to_fixed::<Fix>(), six_point_5);

fn overflowing_to_fixed<F>(self) -> (F, bool) where
    F: Fixed

Converts to a fixed-point number.

Returns a tuple of the fixed-point number and a bool indicating whether an overflow has occurred. On overflow, the wrapped value is returned.

Panics

This method panics if the value is not finite.

Examples

use fixed::sealed::Float;
type Fix = fixed::FixedU16<fixed::frac::U8>;
// 6.5 is 110.1 in binary
let six_point_5 = Fix::from_bits(0b1101 << (8 - 1));
assert_eq!(6.5f32.overflowing_to_fixed::<Fix>(), (six_point_5, false));
// 1030.5 = 1024 + 6.5, 1024 is a power of 2 that will be wrapped
assert_eq!(1030.5f64.overflowing_to_fixed::<Fix>(), (six_point_5, true));
Loading content...

Implementations on Foreign Types

impl Float for f16[src]

fn from_fixed<F>(val: F) -> Self where
    F: Fixed
[src]

fn to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn checked_to_fixed<F>(self) -> Option<F> where
    F: Fixed
[src]

fn saturating_to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn wrapping_to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn overflowing_to_fixed<F>(self) -> (F, bool) where
    F: Fixed
[src]

Loading content...

Implementors

impl Float for f32[src]

fn from_fixed<F>(val: F) -> Self where
    F: Fixed
[src]

fn to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn checked_to_fixed<F>(self) -> Option<F> where
    F: Fixed
[src]

fn saturating_to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn wrapping_to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn overflowing_to_fixed<F>(self) -> (F, bool) where
    F: Fixed
[src]

impl Float for f64[src]

fn from_fixed<F>(val: F) -> Self where
    F: Fixed
[src]

fn to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn checked_to_fixed<F>(self) -> Option<F> where
    F: Fixed
[src]

fn saturating_to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn wrapping_to_fixed<F>(self) -> F where
    F: Fixed
[src]

fn overflowing_to_fixed<F>(self) -> (F, bool) where
    F: Fixed
[src]

Loading content...