Expand description

Left-shifting an Integer (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::integer::Integer;

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

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

§shl_assign

use malachite_base::num::basic::traits::{NegativeOne, One};
use malachite_nz::integer::Integer;

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

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

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