add {div,rem}_euclid to Wrapping
This commit is contained in:
parent
bf7c2024e1
commit
f6f4b9d174
|
@ -523,6 +523,48 @@ impl<F: Fixed> Wrapping<F> {
|
||||||
pub fn rotate_right(self, n: u32) -> Wrapping<F> {
|
pub fn rotate_right(self, n: u32) -> Wrapping<F> {
|
||||||
Wrapping(self.0.rotate_right(n))
|
Wrapping(self.0.rotate_right(n))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Euclidean division.
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// Panics if the divisor is zero.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use fixed::{types::I16F16, Wrapping};
|
||||||
|
/// let num = Wrapping(I16F16::from_num(7.5));
|
||||||
|
/// let den = Wrapping(I16F16::from_num(2));
|
||||||
|
/// assert_eq!(num.div_euclid(den), Wrapping(I16F16::from_num(3)));
|
||||||
|
/// let quarter = Wrapping(I16F16::from_num(0.25));
|
||||||
|
/// let check = (Wrapping::max_value() * 4i32).round_to_zero();
|
||||||
|
/// assert_eq!(Wrapping::max_value().div_euclid(quarter), check);
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
pub fn div_euclid(self, divisor: Wrapping<F>) -> Wrapping<F> {
|
||||||
|
Wrapping(self.0.wrapping_div_euclid(divisor.0))
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Remainder for Euclidean division.
|
||||||
|
///
|
||||||
|
/// # Panics
|
||||||
|
///
|
||||||
|
/// Panics if the divisor is zero.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use fixed::{types::I16F16, Wrapping};
|
||||||
|
/// let num = Wrapping(I16F16::from_num(7.5));
|
||||||
|
/// let den = Wrapping(I16F16::from_num(2));
|
||||||
|
/// assert_eq!(num.rem_euclid(den), Wrapping(I16F16::from_num(1.5)));
|
||||||
|
/// assert_eq!((-num).rem_euclid(den), Wrapping(I16F16::from_num(0.5)));
|
||||||
|
/// ```
|
||||||
|
#[inline]
|
||||||
|
pub fn rem_euclid(self, divisor: Wrapping<F>) -> Wrapping<F> {
|
||||||
|
Wrapping(self.0.rem_euclid(divisor.0))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<F: FixedSigned> Wrapping<F> {
|
impl<F: FixedSigned> Wrapping<F> {
|
||||||
|
|
Loading…
Reference in New Issue