Struct sp_arithmetic::per_things::PerU16 [−][src]
pub struct PerU16(_);
Expand description
A fixed point representation of a number in the range [0, 1].
Parts per 65535
Implementations
From an explicitly defined number of parts per maximum of the type.
Converts a percent into Self
. Equal to x / 100
.
This can be created at compile time.
See PerThing::one
See PerThing::is_one
.
See PerThing::zero
.
See PerThing::is_zero
.
See PerThing::square
.
See PerThing::from_float
.
pub fn from_rational_approximation<N>(p: N, q: N) -> Self where
N: Clone + Ord + TryInto<u16> + TryInto<u32> + Div<N, Output = N> + Rem<N, Output = N> + Add<N, Output = N> + Unsigned,
u16: Into<N>,
👎 Deprecated: Use PerThing::from_rational
instead
pub fn from_rational_approximation<N>(p: N, q: N) -> Self where
N: Clone + Ord + TryInto<u16> + TryInto<u32> + Div<N, Output = N> + Rem<N, Output = N> + Add<N, Output = N> + Unsigned,
u16: Into<N>,
Use PerThing::from_rational
instead
See PerThing::mul_floor
.
See PerThing::mul_ceil
.
pub fn saturating_reciprocal_mul<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<u16> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
u16: Into<N>,
pub fn saturating_reciprocal_mul<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<u16> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
u16: Into<N>,
pub fn saturating_reciprocal_mul_floor<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<u16> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
u16: Into<N>,
pub fn saturating_reciprocal_mul_floor<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<u16> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
u16: Into<N>,
pub fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<u16> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
u16: Into<N>,
pub fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<u16> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
u16: Into<N>,
Converts a percent into Self
. Equal to x / 1000
.
This can be created at compile time.
Trait Implementations
Implementation makes any compact encoding of PerThing::Inner
valid,
when decoding it will saturate up to PerThing::ACCURACY
.
Attempt to deserialise the value from input.
Attempt to skip the encoded value from input. Read more
fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. Read more
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Convert self to a slice and append it to the destination.
Convert self to a slice and then invoke the given closure with it.
fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
Non-overflow multiplication.
This is tailored to be used with a balance type.
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
Consume self and return the number of parts per thing.
Build this type from a number of parts per thing.
NOTE: saturate to 0 or 1 if x is beyond [0, 1]
A data type larger than Self::Inner
, used to avoid overflow in some computations.
It must be able to compute ACCURACY^2
. Read more
Approximate the fraction p/q
into a per-thing fraction. This will never overflow. Read more
Build this type from a percent. Equivalent to Self::from_parts(x * Self::ACCURACY / 100)
but more accurate and can cope with potential type overflows. Read more
Return the part left when self
is saturating-subtracted from Self::one()
.
Multiplication that always rounds down to a whole number. The standard Mul
rounds to the
nearest whole number. Read more
Multiplication that always rounds the result up to a whole number. The standard Mul
rounds to the nearest whole number. Read more
fn saturating_reciprocal_mul<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<Self::Inner> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
Self::Inner: Into<N>,
fn saturating_reciprocal_mul<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<Self::Inner> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
Self::Inner: Into<N>,
Saturating multiplication by the reciprocal of self
. The result is rounded to the
nearest whole number and saturates at the numeric bounds instead of overflowing. Read more
fn saturating_reciprocal_mul_floor<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<Self::Inner> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
Self::Inner: Into<N>,
fn saturating_reciprocal_mul_floor<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<Self::Inner> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
Self::Inner: Into<N>,
Saturating multiplication by the reciprocal of self
. The result is rounded down to the
nearest whole number and saturates at the numeric bounds instead of overflowing. Read more
fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<Self::Inner> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
Self::Inner: Into<N>,
fn saturating_reciprocal_mul_ceil<N>(self, b: N) -> N where
N: Clone + UniqueSaturatedInto<Self::Inner> + Rem<N, Output = N> + Div<N, Output = N> + Mul<N, Output = N> + Add<N, Output = N> + Saturating + Unsigned,
Self::Inner: Into<N>,
Saturating multiplication by the reciprocal of self
. The result is rounded up to the
nearest whole number and saturates at the numeric bounds instead of overflowing. Read more
Use from_rational instead
Same as Self::from_rational
.
Saturating addition. Compute self + rhs
, saturating at the numeric bounds instead of
overflowing. This operation is lossless if it does not saturate.
Saturating subtraction. Compute self - rhs
, saturating at the numeric bounds instead of
overflowing. This operation is lossless if it does not saturate.
Saturating multiply. Compute self * rhs
, saturating at the numeric bounds instead of
overflowing. This operation is lossy.
Saturating exponentiation. Computes self.pow(exp)
, saturating at the numeric
bounds instead of overflowing. This operation is lossy.
Increment self by one, saturating.
Decrement self by one, saturating at zero.
Increment self by some amount
, saturating.
Decrement self by some amount
, saturating at zero.
Auto Trait Implementations
impl RefUnwindSafe for PerU16
impl UnwindSafe for PerU16
Blanket Implementations
Mutably borrows from an owned value. Read more
type Type = Compact<T>
type Type = Compact<T>
The compact type; this can be
Convert from a value of T
into an equivalent instance of Self
.
Consume self to return an equivalent value of T
.
impl<'_, '_, T> EncodeLike<&'_ &'_ T> for T where
T: Encode,
impl<'_, T> EncodeLike<&'_ T> for T where
T: Encode,
impl<'_, T> EncodeLike<&'_ mut T> for T where
T: Encode,
impl<T> EncodeLike<Arc<T>> for T where
T: Encode,
impl<T> EncodeLike<Rc<T>> for T where
T: Encode,