Expand description

Right-shifting an Integer (dividing it by a power of 2).

shr

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(492) >> 2u16, 123);
assert_eq!(-Integer::from(10u32).pow(12) >> 10u32, -976562500);
assert_eq!(&Integer::ZERO >> 10u8, 0);
assert_eq!(&Integer::from(492) >> 2u16, 123);
assert_eq!(&-Integer::from(10u32).pow(12) >> 10u32, -976562500);

assert_eq!(Integer::ZERO >> 10i8, 0);
assert_eq!(Integer::from(492) >> 2i16, 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 >> 10i8, 0);
assert_eq!(&Integer::from(492) >> 2i16, 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");

shr_assign

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

let mut x = Integer::from(1024);
x >>= 1u8;
x >>= 2u16;
x >>= 3u32;
x >>= 4u64;
assert_eq!(x, 1);

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

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);