Skip to main content

Module remove_power

Module remove_power 

Source
Expand description

RemovePower and RemovePowerAssign, traits for dividing out the largest power of a factor.

§remove_power

use malachite_base::num::factorization::traits::RemovePower;

assert_eq!(12u32.remove_power(2), (3, 2));
// the factor need not be prime
assert_eq!(1000u32.remove_power(10), (1, 3));
// a factor that does not divide at all is removed zero times
assert_eq!(7u32.remove_power(3), (7, 0));
// zero is left alone
assert_eq!(0u32.remove_power(3), (0, 0));

// for signed types the quotient is the exact division by the signed power
assert_eq!((-12i32).remove_power(2), (-3, 2));
assert_eq!((-8i32).remove_power(-2), (1, 3));

§remove_power_assign

use malachite_base::num::factorization::traits::RemovePowerAssign;

let mut x = 12u32;
assert_eq!(x.remove_power_assign(2), 2);
assert_eq!(x, 3);

let mut x = -8i32;
assert_eq!(x.remove_power_assign(-2), 3);
assert_eq!(x, 1);