1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
use integer::Integer;
use natural::Natural;
use std::cmp::Ordering;
impl PartialOrd<Natural> for Integer {
/// Compares an [`Integer`] to a [`Natural`].
///
/// # Worst-case complexity
/// $T(n) = O(n)$
///
/// $M(n) = O(1)$
///
/// where n = `min(self.significant_bits(), other.significant_bits())`.
///
/// # Examples
/// ```
/// use malachite_nz::integer::Integer;
/// use malachite_nz::natural::Natural;
///
/// assert!(Integer::from(123) > Natural::from(122u32));
/// assert!(Integer::from(123) >= Natural::from(122u32));
/// assert!(Integer::from(123) < Natural::from(124u32));
/// assert!(Integer::from(123) <= Natural::from(124u32));
/// assert!(Integer::from(-123) < Natural::from(123u32));
/// assert!(Integer::from(-123) <= Natural::from(123u32));
/// ```
fn partial_cmp(&self, other: &Natural) -> Option<Ordering> {
if self.sign {
self.abs.partial_cmp(other)
} else {
Some(Ordering::Less)
}
}
}
impl PartialOrd<Integer> for Natural {
/// Compares a [`Natural`] to an [`Integer`].
///
/// # Worst-case complexity
/// $T(n) = O(n)$
///
/// $M(n) = O(1)$
///
/// where n = `min(self.significant_bits(), other.significant_bits())`.
///
/// # Examples
/// ```
/// use malachite_nz::integer::Integer;
/// use malachite_nz::natural::Natural;
///
/// assert!(Natural::from(123u32) > Integer::from(122));
/// assert!(Natural::from(123u32) >= Integer::from(122));
/// assert!(Natural::from(123u32) < Integer::from(124));
/// assert!(Natural::from(123u32) <= Integer::from(124));
/// assert!(Natural::from(123u32) > Integer::from(-123));
/// assert!(Natural::from(123u32) >= Integer::from(-123));
/// ```
fn partial_cmp(&self, other: &Integer) -> Option<Ordering> {
if other.sign {
self.partial_cmp(&other.abs)
} else {
Some(Ordering::Greater)
}
}
}