Module malachite_q::arithmetic::shl

source ·
Expand description

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

§shl

use malachite_base::num::basic::traits::Zero;
use malachite_q::Rational;

assert_eq!(Rational::ZERO << 10u8, 0);
assert_eq!(Rational::from(123) << 2u16, 492);
assert_eq!((Rational::from_signeds(7, 22) << 2u16).to_string(), "14/11");

assert_eq!(Rational::ZERO << 10i8, 0);
assert_eq!(Rational::from(123) << 2i16, 492);
assert_eq!((Rational::from(123) << -2i16).to_string(), "123/4");
assert_eq!((Rational::from_signeds(7, 22) << 2i16).to_string(), "14/11");
assert_eq!((Rational::from_signeds(22, 7) << -2i16).to_string(), "11/14");

assert_eq!(&Rational::ZERO << 10u8, 0);
assert_eq!(&Rational::from(123) << 2u16, 492);
assert_eq!((&Rational::from_signeds(7, 22) << 2u16).to_string(), "14/11");

assert_eq!(&Rational::ZERO << 10i8, 0);
assert_eq!(&Rational::from(123) << 2i16, 492);
assert_eq!((&Rational::from(123) << -2i16).to_string(), "123/4");
assert_eq!((&Rational::from_signeds(7, 22) << 2i16).to_string(), "14/11");
assert_eq!((&Rational::from_signeds(22, 7) << -2i16).to_string(), "11/14");

§shl_assign

use malachite_base::num::basic::traits::Zero;
use malachite_q::Rational;

let mut x = Rational::ZERO;
x <<= 10u8;
assert_eq!(x, 0);

let mut x = Rational::from(123);
x <<= 2u16;
assert_eq!(x, 492);

let mut x = Rational::from_signeds(7, 22);
x <<= 2u16;
assert_eq!(x.to_string(), "14/11");

let mut x = Rational::ZERO;
x <<= 10i8;
assert_eq!(x, 0);

let mut x = Rational::from(123);
x <<= 2i16;
assert_eq!(x, 492);

let mut x = Rational::from(123);
x <<= -2i16;
assert_eq!(x.to_string(), "123/4");

let mut x = Rational::from_signeds(7, 22);
x <<= 2i16;
assert_eq!(x.to_string(), "14/11");

let mut x = Rational::from_signeds(22, 7);
x <<= -2i16;
assert_eq!(x.to_string(), "11/14");