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
extern crate malachite_base;
use std::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(10u32).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(10u32).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(10u32)).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(10u32)).mod_shr(100i32, &Natural::from(10u32)), 0);
assert_eq!(
(&Natural::from(123456u32)).mod_shr(
-100i64,
&Natural::from_str("12345678987654321").unwrap()
),
7436663564915145u64
);
mod_shr_assign
extern crate malachite_base;
use std::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(10u32);
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(10u32);
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);