Trait num_integer::Integer

source ·
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);

Greatest Common Divisor (GCD).

Examples
assert_eq!(6.gcd(&8), 2);
assert_eq!(7.gcd(&3), 1);

Lowest Common Multiple (LCM).

Examples
assert_eq!(7.lcm(&3), 21);
assert_eq!(2.lcm(&4), 4);
assert_eq!(0.lcm(&0), 0);

Deprecated, use is_multiple_of instead.

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));

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));

Greatest common divisor, least common multiple, and Bézout coefficients.

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));

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);

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§

Floored integer division

Floored integer modulo

Calculates div_floor and mod_floor simultaneously

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2

Returns true if the number is not divisible by 2

Simultaneous truncated integer division and modulus.

Rounds up to nearest multiple of argument.

Rounds down to nearest multiple of argument.

Floored integer division

Floored integer modulo

Calculates div_floor and mod_floor simultaneously

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2

Returns true if the number is not divisible by 2

Simultaneous truncated integer division and modulus.

Rounds up to nearest multiple of argument.

Rounds down to nearest multiple of argument.

Floored integer division

Floored integer modulo

Calculates div_floor and mod_floor simultaneously

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2

Returns true if the number is not divisible by 2

Simultaneous truncated integer division and modulus.

Rounds up to nearest multiple of argument.

Rounds down to nearest multiple of argument.

Floored integer division

Floored integer modulo

Calculates div_floor and mod_floor simultaneously

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2

Returns true if the number is not divisible by 2

Simultaneous truncated integer division and modulus.

Rounds up to nearest multiple of argument.

Rounds down to nearest multiple of argument.

Floored integer division

Floored integer modulo

Calculates div_floor and mod_floor simultaneously

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2

Returns true if the number is not divisible by 2

Simultaneous truncated integer division and modulus.

Rounds up to nearest multiple of argument.

Rounds down to nearest multiple of argument.

Floored integer division

Floored integer modulo

Calculates div_floor and mod_floor simultaneously

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2

Returns true if the number is not divisible by 2

Simultaneous truncated integer division and modulus.

Rounds up to nearest multiple of argument.

Rounds down to nearest multiple of argument.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2.

Returns true if the number is not divisible by 2.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2.

Returns true if the number is not divisible by 2.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2.

Returns true if the number is not divisible by 2.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2.

Returns true if the number is not divisible by 2.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2.

Returns true if the number is not divisible by 2.

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.

Deprecated, use is_multiple_of instead.

Returns true if the number is a multiple of other.

Returns true if the number is divisible by 2.

Returns true if the number is not divisible by 2.

Simultaneous truncated integer division and modulus.

Implementors§