Module malachite_nz::natural::arithmetic::mod_shl
source · [−]Expand description
Implementations of ModShl
and
ModShlAssign
, traits for
left-shifting a number modulo another number.
mod_shl
extern crate malachite_base;
use std::str::FromStr;
use malachite_base::num::arithmetic::traits::ModShl;
use malachite_nz::natural::Natural;
assert_eq!(Natural::from(8u32).mod_shl(2u16, Natural::from(10u32)), 2);
assert_eq!(
Natural::from(123456u32).mod_shl(100u64, Natural::from_str("12345678987654321").unwrap()),
7436663564915145u64
);
assert_eq!(Natural::from(8u32).mod_shl(2u16, &Natural::from(10u32)), 2);
assert_eq!(
Natural::from(123456u32).mod_shl(100u64, &Natural::from_str("12345678987654321").unwrap()),
7436663564915145u64
);
assert_eq!((&Natural::from(8u32)).mod_shl(2u16, Natural::from(10u32)), 2);
assert_eq!(
(&Natural::from(123456u32)).mod_shl(
100u64,
Natural::from_str("12345678987654321").unwrap()
),
7436663564915145u64
);
assert_eq!((&Natural::from(8u32)).mod_shl(2u16, &Natural::from(10u32)), 2);
assert_eq!(
(&Natural::from(123456u32)).mod_shl(
100u64,
&Natural::from_str("12345678987654321").unwrap()
),
7436663564915145u64
);
assert_eq!(Natural::from(8u32).mod_shl(2i8, Natural::from(10u32)), 2);
assert_eq!(Natural::from(10u32).mod_shl(-100i32, Natural::from(10u32)), 0);
assert_eq!(
Natural::from(123456u32).mod_shl(100i64, Natural::from_str("12345678987654321").unwrap()),
7436663564915145u64
);
assert_eq!(Natural::from(8u32).mod_shl(2i8, &Natural::from(10u32)), 2);
assert_eq!(Natural::from(10u32).mod_shl(-100i32, &Natural::from(10u32)), 0);
assert_eq!(
Natural::from(123456u32).mod_shl(
100i64,
&Natural::from_str("12345678987654321").unwrap()
),
7436663564915145u64
);
assert_eq!((&Natural::from(8u32)).mod_shl(2i8, Natural::from(10u32)), 2);
assert_eq!((&Natural::from(10u32)).mod_shl(-100i32, Natural::from(10u32)), 0);
assert_eq!(
(&Natural::from(123456u32)).mod_shl(
100i64,
Natural::from_str("12345678987654321").unwrap()
),
7436663564915145u64
);
assert_eq!((&Natural::from(8u32)).mod_shl(2i8, &Natural::from(10u32)), 2);
assert_eq!((&Natural::from(10u32)).mod_shl(-100i32, &Natural::from(10u32)), 0);
assert_eq!(
(&Natural::from(123456u32)).mod_shl(
100i64,
&Natural::from_str("12345678987654321").unwrap()
),
7436663564915145u64
);
mod_shl_assign
extern crate malachite_base;
use std::str::FromStr;
use malachite_base::num::arithmetic::traits::ModShlAssign;
use malachite_nz::natural::Natural;
let mut x = Natural::from(8u32);
x.mod_shl_assign(2u16, Natural::from(10u32));
assert_eq!(x, 2);
let mut x = Natural::from(123456u32);
x.mod_shl_assign(100u64, Natural::from_str("12345678987654321").unwrap());
assert_eq!(x, 7436663564915145u64);
let mut x = Natural::from(8u32);
x.mod_shl_assign(2u16, &Natural::from(10u32));
assert_eq!(x, 2);
let mut x = Natural::from(123456u32);
x.mod_shl_assign(100u64, &Natural::from_str("12345678987654321").unwrap());
assert_eq!(x, 7436663564915145u64);
let mut x = Natural::from(8u32);
x.mod_shl_assign(2i8, Natural::from(10u32));
assert_eq!(x, 2);
let mut x = Natural::from(10u32);
x.mod_shl_assign(-100i32, Natural::from(10u32));
assert_eq!(x, 0);
let mut x = Natural::from(123456u32);
x.mod_shl_assign(100i64, Natural::from_str("12345678987654321").unwrap());
assert_eq!(x, 7436663564915145u64);
let mut x = Natural::from(8u32);
x.mod_shl_assign(2i8, &Natural::from(10u32));
assert_eq!(x, 2);
let mut x = Natural::from(10u32);
x.mod_shl_assign(-100i32, &Natural::from(10u32));
assert_eq!(x, 0);
let mut x = Natural::from(123456u32);
x.mod_shl_assign(100i64, &Natural::from_str("12345678987654321").unwrap());
assert_eq!(x, 7436663564915145u64);