Module malachite_nz::natural::arithmetic::shl

source ·
Expand description

Left-shifting a Natural (multiplying it by a power of 2).

§shl

use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::basic::traits::Zero;
use malachite_nz::natural::Natural;

assert_eq!((Natural::ZERO << 10u8), 0);
assert_eq!((Natural::from(123u32) << 2u16), 492);
assert_eq!((Natural::from(123u32) << 100u64).to_string(), "155921023828072216384094494261248");
assert_eq!((&Natural::ZERO << 10u8), 0);
assert_eq!((&Natural::from(123u32) << 2u16), 492);
assert_eq!(
    (&Natural::from(123u32) << 100u64).to_string(),
    "155921023828072216384094494261248"
);

assert_eq!((Natural::ZERO << 10i8), 0);
assert_eq!((Natural::from(123u32) << 2i16), 492);
assert_eq!((Natural::from(123u32) << 100i32).to_string(), "155921023828072216384094494261248");
assert_eq!((Natural::ZERO << -10i64), 0);
assert_eq!((Natural::from(10u32).pow(12) << -10i16), 976562500);
assert_eq!((&Natural::ZERO << 10i8), 0);
assert_eq!((&Natural::from(123u32) << 2i16), 492);
assert_eq!(
    (&Natural::from(123u32) << 100i32).to_string(),
    "155921023828072216384094494261248"
);
assert_eq!((&Natural::ZERO << -10i64), 0);
assert_eq!((&Natural::from(492u32) << -2i8), 123);
assert_eq!((&Natural::from(10u32).pow(12) << -10i16), 976562500);

§shl_assign

use malachite_base::num::basic::traits::One;
use malachite_nz::natural::Natural;

let mut x = Natural::ONE;
x <<= 1u8;
x <<= 2u16;
x <<= 3u32;
x <<= 4u64;
assert_eq!(x, 1024);

let mut x = Natural::ONE;
x <<= 1i8;
x <<= 2i16;
x <<= 3i32;
x <<= 4i64;
assert_eq!(x, 1024);

let mut x = Natural::from(1024u32);
x <<= -1i8;
x <<= -2i16;
x <<= -3i32;
x <<= -4i64;
assert_eq!(x, 1);