Expand description

Implementations of ModPowerOf2Shl and ModPowerOf2ShlAssign, traits for left-shifting a number modulo $2^k$.

mod_power_of_2_shl

use malachite_base::num::arithmetic::traits::ModPowerOf2Shl;
use malachite_nz::natural::Natural;

assert_eq!(Natural::from(123u32).mod_power_of_2_shl(5u16, 8), 96);
assert_eq!(Natural::from(123u32).mod_power_of_2_shl(100u64, 80), 0);
assert_eq!((&Natural::from(123u32)).mod_power_of_2_shl(5u16, 8), 96);
assert_eq!((&Natural::from(123u32)).mod_power_of_2_shl(100u64, 80), 0);

assert_eq!(Natural::from(123u32).mod_power_of_2_shl(5i16, 8), 96);
assert_eq!(Natural::from(123u32).mod_power_of_2_shl(100i64, 80), 0);
assert_eq!(Natural::from(123u32).mod_power_of_2_shl(-2i8, 8), 30);
assert_eq!((&Natural::from(123u32)).mod_power_of_2_shl(5i16, 8), 96);
assert_eq!((&Natural::from(123u32)).mod_power_of_2_shl(100i64, 80), 0);
assert_eq!((&Natural::from(123u32)).mod_power_of_2_shl(-2i8, 8), 30);

mod_power_of_2_shl_assign

use malachite_base::num::arithmetic::traits::ModPowerOf2ShlAssign;
use malachite_nz::natural::Natural;

let mut n = Natural::from(123u32);
n.mod_power_of_2_shl_assign(5u16, 8);
assert_eq!(n, 96);

let mut n = Natural::from(123u32);
n.mod_power_of_2_shl_assign(100u64, 80);
assert_eq!(n, 0);

let mut n = Natural::from(123u32);
n.mod_power_of_2_shl_assign(5i16, 8);
assert_eq!(n, 96);

let mut n = Natural::from(123u32);
n.mod_power_of_2_shl_assign(100i64, 80);
assert_eq!(n, 0);

let mut n = Natural::from(123u32);
n.mod_power_of_2_shl_assign(-2i8, 8);
assert_eq!(n, 30);