Trait num_integer::Integer [−][src]
pub trait Integer: Sized + Num + PartialOrd + Ord + Eq {
Show 16 methods
fn div_floor(&self, other: &Self) -> Self;
fn mod_floor(&self, other: &Self) -> Self;
fn gcd(&self, other: &Self) -> Self;
fn lcm(&self, other: &Self) -> Self;
fn divides(&self, other: &Self) -> bool;
fn is_multiple_of(&self, other: &Self) -> bool;
fn is_even(&self) -> bool;
fn is_odd(&self) -> bool;
fn div_rem(&self, other: &Self) -> (Self, Self);
fn div_ceil(&self, other: &Self) -> Self { ... }
fn gcd_lcm(&self, other: &Self) -> (Self, Self) { ... }
fn extended_gcd(&self, other: &Self) -> ExtendedGcd<Self>
where
Self: Clone,
{ ... }
fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)
where
Self: Clone + Signed,
{ ... }
fn div_mod_floor(&self, other: &Self) -> (Self, Self) { ... }
fn next_multiple_of(&self, other: &Self) -> Self
where
Self: Clone,
{ ... }
fn prev_multiple_of(&self, other: &Self) -> Self
where
Self: Clone,
{ ... }
}Required methods
Floored integer division.
Examples
assert!(( 8).div_floor(& 3) == 2);
assert!(( 8).div_floor(&-3) == -3);
assert!((-8).div_floor(& 3) == -3);
assert!((-8).div_floor(&-3) == 2);
assert!(( 1).div_floor(& 2) == 0);
assert!(( 1).div_floor(&-2) == -1);
assert!((-1).div_floor(& 2) == -1);
assert!((-1).div_floor(&-2) == 0);Floored integer modulo, satisfying:
assert!(n.div_floor(&d) * d + n.mod_floor(&d) == n)Examples
assert!(( 8).mod_floor(& 3) == 2);
assert!(( 8).mod_floor(&-3) == -1);
assert!((-8).mod_floor(& 3) == 1);
assert!((-8).mod_floor(&-3) == -2);
assert!(( 1).mod_floor(& 2) == 1);
assert!(( 1).mod_floor(&-2) == -1);
assert!((-1).mod_floor(& 2) == 1);
assert!((-1).mod_floor(&-2) == -1);Lowest Common Multiple (LCM).
Examples
assert_eq!(7.lcm(&3), 21);
assert_eq!(2.lcm(&4), 4);
assert_eq!(0.lcm(&0), 0);fn is_multiple_of(&self, other: &Self) -> bool
fn is_multiple_of(&self, other: &Self) -> bool
Returns true if self is a multiple of other.
Examples
assert_eq!(9.is_multiple_of(&3), true);
assert_eq!(3.is_multiple_of(&9), false);Returns true if the number is even.
Examples
assert_eq!(3.is_even(), false);
assert_eq!(4.is_even(), true);Returns true if the number is odd.
Examples
assert_eq!(3.is_odd(), true);
assert_eq!(4.is_odd(), false);Simultaneous truncated integer division and modulus.
Returns (quotient, remainder).
Examples
assert_eq!(( 8).div_rem( &3), ( 2, 2));
assert_eq!(( 8).div_rem(&-3), (-2, 2));
assert_eq!((-8).div_rem( &3), (-2, -2));
assert_eq!((-8).div_rem(&-3), ( 2, -2));
assert_eq!(( 1).div_rem( &2), ( 0, 1));
assert_eq!(( 1).div_rem(&-2), ( 0, 1));
assert_eq!((-1).div_rem( &2), ( 0, -1));
assert_eq!((-1).div_rem(&-2), ( 0, -1));Provided methods
Ceiled integer division.
Examples
assert_eq!(( 8).div_ceil( &3), 3);
assert_eq!(( 8).div_ceil(&-3), -2);
assert_eq!((-8).div_ceil( &3), -2);
assert_eq!((-8).div_ceil(&-3), 3);
assert_eq!(( 1).div_ceil( &2), 1);
assert_eq!(( 1).div_ceil(&-2), 0);
assert_eq!((-1).div_ceil( &2), 0);
assert_eq!((-1).div_ceil(&-2), 1);Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) together.
Potentially more efficient than calling gcd and lcm
individually for identical inputs.
Examples
assert_eq!(10.gcd_lcm(&4), (2, 20));
assert_eq!(8.gcd_lcm(&9), (1, 72));fn extended_gcd(&self, other: &Self) -> ExtendedGcd<Self> where
Self: Clone,
fn extended_gcd(&self, other: &Self) -> ExtendedGcd<Self> where
Self: Clone,
Greatest common divisor and Bézout coefficients.
Examples
fn check<A: Copy + Integer + NumAssign>(a: A, b: A) -> bool {
let ExtendedGcd { gcd, x, y, .. } = a.extended_gcd(&b);
gcd == x * a + y * b
}
assert!(check(10isize, 4isize));
assert!(check(8isize, 9isize));fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self) where
Self: Clone + Signed,
fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self) where
Self: Clone + Signed,
Greatest common divisor, least common multiple, and Bézout coefficients.
fn div_mod_floor(&self, other: &Self) -> (Self, Self)
fn div_mod_floor(&self, other: &Self) -> (Self, Self)
Simultaneous floored integer division and modulus.
Returns (quotient, remainder).
Examples
assert_eq!(( 8).div_mod_floor( &3), ( 2, 2));
assert_eq!(( 8).div_mod_floor(&-3), (-3, -1));
assert_eq!((-8).div_mod_floor( &3), (-3, 1));
assert_eq!((-8).div_mod_floor(&-3), ( 2, -2));
assert_eq!(( 1).div_mod_floor( &2), ( 0, 1));
assert_eq!(( 1).div_mod_floor(&-2), (-1, -1));
assert_eq!((-1).div_mod_floor( &2), (-1, 1));
assert_eq!((-1).div_mod_floor(&-2), ( 0, -1));fn next_multiple_of(&self, other: &Self) -> Self where
Self: Clone,
fn next_multiple_of(&self, other: &Self) -> Self where
Self: Clone,
Rounds up to nearest multiple of argument.
Notes
For signed types, a.next_multiple_of(b) = a.prev_multiple_of(b.neg()).
Examples
assert_eq!(( 16).next_multiple_of(& 8), 16);
assert_eq!(( 23).next_multiple_of(& 8), 24);
assert_eq!(( 16).next_multiple_of(&-8), 16);
assert_eq!(( 23).next_multiple_of(&-8), 16);
assert_eq!((-16).next_multiple_of(& 8), -16);
assert_eq!((-23).next_multiple_of(& 8), -16);
assert_eq!((-16).next_multiple_of(&-8), -16);
assert_eq!((-23).next_multiple_of(&-8), -24);fn prev_multiple_of(&self, other: &Self) -> Self where
Self: Clone,
fn prev_multiple_of(&self, other: &Self) -> Self where
Self: Clone,
Rounds down to nearest multiple of argument.
Notes
For signed types, a.prev_multiple_of(b) = a.next_multiple_of(b.neg()).
Examples
assert_eq!(( 16).prev_multiple_of(& 8), 16);
assert_eq!(( 23).prev_multiple_of(& 8), 16);
assert_eq!(( 16).prev_multiple_of(&-8), 16);
assert_eq!(( 23).prev_multiple_of(&-8), 24);
assert_eq!((-16).prev_multiple_of(& 8), -16);
assert_eq!((-23).prev_multiple_of(& 8), -24);
assert_eq!((-16).prev_multiple_of(&-8), -16);
assert_eq!((-23).prev_multiple_of(&-8), -16);Implementations on Foreign Types
Calculates div_floor and mod_floor simultaneously
Calculates the Greatest Common Divisor (GCD) of the number and
other. The result is always positive.
Calculates the Lowest Common Multiple (LCM) of the number and
other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Calculates div_floor and mod_floor simultaneously
Calculates the Greatest Common Divisor (GCD) of the number and
other. The result is always positive.
Calculates the Lowest Common Multiple (LCM) of the number and
other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Calculates div_floor and mod_floor simultaneously
Calculates the Greatest Common Divisor (GCD) of the number and
other. The result is always positive.
Calculates the Lowest Common Multiple (LCM) of the number and
other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Calculates div_floor and mod_floor simultaneously
Calculates the Greatest Common Divisor (GCD) of the number and
other. The result is always positive.
Calculates the Lowest Common Multiple (LCM) of the number and
other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Calculates div_floor and mod_floor simultaneously
Calculates the Greatest Common Divisor (GCD) of the number and
other. The result is always positive.
Calculates the Lowest Common Multiple (LCM) of the number and
other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Calculates div_floor and mod_floor simultaneously
Calculates the Greatest Common Divisor (GCD) of the number and
other. The result is always positive.
Calculates the Lowest Common Multiple (LCM) of the number and
other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Unsigned integer division. Returns the same result as div (/).
Unsigned integer modulo operation. Returns the same result as rem (%).
Calculates the Greatest Common Divisor (GCD) of the number and other
Calculates the Lowest Common Multiple (LCM) of the number and other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Unsigned integer division. Returns the same result as div (/).
Unsigned integer modulo operation. Returns the same result as rem (%).
Calculates the Greatest Common Divisor (GCD) of the number and other
Calculates the Lowest Common Multiple (LCM) of the number and other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Unsigned integer division. Returns the same result as div (/).
Unsigned integer modulo operation. Returns the same result as rem (%).
Calculates the Greatest Common Divisor (GCD) of the number and other
Calculates the Lowest Common Multiple (LCM) of the number and other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Unsigned integer division. Returns the same result as div (/).
Unsigned integer modulo operation. Returns the same result as rem (%).
Calculates the Greatest Common Divisor (GCD) of the number and other
Calculates the Lowest Common Multiple (LCM) of the number and other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Unsigned integer division. Returns the same result as div (/).
Unsigned integer modulo operation. Returns the same result as rem (%).
Calculates the Greatest Common Divisor (GCD) of the number and other
Calculates the Lowest Common Multiple (LCM) of the number and other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.
Unsigned integer division. Returns the same result as div (/).
Unsigned integer modulo operation. Returns the same result as rem (%).
Calculates the Greatest Common Divisor (GCD) of the number and other
Calculates the Lowest Common Multiple (LCM) of the number and other.
Calculates the Greatest Common Divisor (GCD) and
Lowest Common Multiple (LCM) of the number and other.
Returns true if the number is a multiple of other.
Simultaneous truncated integer division and modulus.