Module malachite_nz::natural::arithmetic::mod_shr

source ·
Expand description

Implementations of ModShr and ModShrAssign, traits for right-shifting a number modulo another number.

§mod_shr

use core::str::FromStr;
use malachite_base::num::arithmetic::traits::ModShr;
use malachite_nz::natural::Natural;

assert_eq!(Natural::from(8u32).mod_shr(-2i8, Natural::from(10u32)), 2);
assert_eq!(Natural::from(5u32).mod_shr(100i32, Natural::from(10u32)), 0);
assert_eq!(
    Natural::from(123456u32).mod_shr(-100i64, Natural::from_str("12345678987654321").unwrap()),
    7436663564915145u64
);
assert_eq!(Natural::from(8u32).mod_shr(-2i8, &Natural::from(10u32)), 2);
assert_eq!(
    Natural::from(5u32).mod_shr(100i32, &Natural::from(10u32)),
    0
);
assert_eq!(
    Natural::from(123456u32).mod_shr(-100i64, &Natural::from_str("12345678987654321").unwrap()),
    7436663564915145u64
);
assert_eq!(
    (&Natural::from(8u32)).mod_shr(-2i8, Natural::from(10u32)),
    2
);
assert_eq!(
    (&Natural::from(5u32)).mod_shr(100i32, Natural::from(10u32)),
    0
);
assert_eq!(
    (&Natural::from(123456u32))
        .mod_shr(-100i64, Natural::from_str("12345678987654321").unwrap()),
    7436663564915145u64
);
assert_eq!(
    (&Natural::from(8u32)).mod_shr(-2i8, &Natural::from(10u32)),
    2
);
assert_eq!(
    (&Natural::from(5u32)).mod_shr(100i32, &Natural::from(10u32)),
    0
);
assert_eq!(
    (&Natural::from(123456u32))
        .mod_shr(-100i64, &Natural::from_str("12345678987654321").unwrap()),
    7436663564915145u64
);

§mod_shr_assign

use core::str::FromStr;
use malachite_base::num::arithmetic::traits::ModShrAssign;
use malachite_nz::natural::Natural;

let mut x = Natural::from(8u32);
x.mod_shr_assign(-2i8, Natural::from(10u32));
assert_eq!(x, 2);

let mut x = Natural::from(5u32);
x.mod_shr_assign(100i32, Natural::from(10u32));
assert_eq!(x, 0);

let mut x = Natural::from(123456u32);
x.mod_shr_assign(-100i64, Natural::from_str("12345678987654321").unwrap());
assert_eq!(x, 7436663564915145u64);

let mut x = Natural::from(8u32);
x.mod_shr_assign(-2i8, &Natural::from(10u32));
assert_eq!(x, 2);

let mut x = Natural::from(5u32);
x.mod_shr_assign(100i32, &Natural::from(10u32));
assert_eq!(x, 0);

let mut x = Natural::from(123456u32);
x.mod_shr_assign(-100i64, &Natural::from_str("12345678987654321").unwrap());
assert_eq!(x, 7436663564915145u64);