Trait num_integer::Integer[][src]

pub trait Integer: Sized + Num + PartialOrd + Ord + Eq {
Show 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 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.

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.

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 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.

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.

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 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.

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.

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 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.

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.

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 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.

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.

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 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.

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.

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