Skip to main content

Module remove_power

Module remove_power 

Source
Expand description

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

§remove_power

use malachite_base::num::basic::traits::Two;
use malachite_base::num::factorization::traits::RemovePower;
use malachite_nz::integer::Integer;

let (q, k) = Integer::from(-12).remove_power(Integer::TWO);
assert_eq!(q, -3);
assert_eq!(k, 2);

// a negative factor raised to an odd power flips the sign
let (q, k) = Integer::from(-8).remove_power(Integer::from(-2));
assert_eq!(q, 1);
assert_eq!(k, 3);

§remove_power_assign

use malachite_base::num::basic::traits::Two;
use malachite_base::num::factorization::traits::RemovePowerAssign;
use malachite_nz::integer::Integer;

let mut x = Integer::from(-12);
assert_eq!(x.remove_power_assign(Integer::TWO), 2);
assert_eq!(x, -3);