malachite_nz/integer/comparison/mod.rs
1// Copyright © 2025 Mikhail Hogrefe
2//
3// This file is part of Malachite.
4//
5// Malachite is free software: you can redistribute it and/or modify it under the terms of the GNU
6// Lesser General Public License (LGPL) as published by the Free Software Foundation; either version
7// 3 of the License, or (at your option) any later version. See <https://www.gnu.org/licenses/>.
8
9/// Comparison of [`Integer`](crate::integer::Integer)s.
10pub mod cmp;
11/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
12/// and [`OrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`) (traits for comparing
13/// the absolute values of numbers by order) for [`Integer`](crate::integer::Integer)s.
14pub mod cmp_abs;
15/// Equality of the absolute values of two [`Integer`](crate::integer::Integer)s.
16pub mod eq_abs;
17/// Equality of the absolute values of an [`Integer`](crate::integer::Integer) and a
18/// [`Natural`](crate::integer::Natural).
19pub mod eq_abs_natural;
20/// Equality of the absolute values of an [`Integer`](crate::integer::Integer) and a primitive
21/// float.
22///
23/// # eq_abs
24/// ```
25/// use malachite_base::num::basic::traits::{NegativeInfinity, Zero};
26/// use malachite_base::num::comparison::traits::EqAbs;
27/// use malachite_nz::integer::Integer;
28///
29/// assert_eq!(Integer::from(123).eq_abs(&123.0), true);
30/// assert_eq!(Integer::from(123).eq_abs(&5.0), false);
31/// assert_eq!(Integer::from(123).eq_abs(&-123.0), true);
32/// assert_eq!(Integer::from(123).eq_abs(&-5.0), false);
33/// assert_eq!(Integer::from(-123).eq_abs(&123.0), true);
34/// assert_eq!(Integer::from(-123).eq_abs(&5.0), false);
35/// assert_eq!(Integer::from(-123).eq_abs(&-123.0), true);
36/// assert_eq!(Integer::from(-123).eq_abs(&-5.0), false);
37/// assert_eq!(Integer::ZERO.eq_abs(&0.0), true);
38/// assert_eq!(Integer::ZERO.eq_abs(&-0.0), true);
39/// assert_eq!(Integer::ZERO.eq_abs(&f64::NAN), false);
40/// assert_eq!(Integer::ZERO.eq_abs(&f64::INFINITY), false);
41/// assert_eq!(Integer::ZERO.eq_abs(&f64::NEGATIVE_INFINITY), false);
42///
43/// assert_eq!(123.0.eq_abs(&Integer::from(123)), true);
44/// assert_eq!(5.0.eq_abs(&Integer::from(123)), false);
45/// assert_eq!((-123.0).eq_abs(&Integer::from(123)), true);
46/// assert_eq!((-5.0).eq_abs(&Integer::from(123)), false);
47/// assert_eq!(123.0.eq_abs(&Integer::from(-123)), true);
48/// assert_eq!(5.0.eq_abs(&Integer::from(-123)), false);
49/// assert_eq!((-123.0).eq_abs(&Integer::from(-123)), true);
50/// assert_eq!((-5.0).eq_abs(&Integer::from(-123)), false);
51/// assert_eq!(0.0.eq_abs(&Integer::ZERO), true);
52/// assert_eq!((-0.0).eq_abs(&Integer::ZERO), true);
53/// assert_eq!(f64::NAN.eq_abs(&Integer::ZERO), false);
54/// assert_eq!(f64::INFINITY.eq_abs(&Integer::ZERO), false);
55/// assert_eq!(f64::NEGATIVE_INFINITY.eq_abs(&Integer::ZERO), false);
56/// ```
57pub mod eq_abs_primitive_float;
58/// Equality of the absolute values of an [`Integer`](crate::integer::Integer) and a primitive
59/// integer.
60///
61/// # eq_abs
62/// ```
63/// use malachite_base::num::comparison::traits::EqAbs;
64/// use malachite_nz::integer::Integer;
65///
66/// assert_eq!(Integer::from(123).eq_abs(&123u32), true);
67/// assert_eq!(Integer::from(-123).eq_abs(&123u32), true);
68/// assert_eq!(Integer::from(123).eq_abs(&5u32), false);
69/// assert_eq!(Integer::from(-123).eq_abs(&5u32), false);
70///
71/// assert_eq!(Integer::from(123).eq_abs(&123u64), true);
72/// assert_eq!(Integer::from(-123).eq_abs(&123u64), true);
73/// assert_eq!(Integer::from(123).eq_abs(&5u64), false);
74/// assert_eq!(Integer::from(-123).eq_abs(&5u64), false);
75///
76/// assert_eq!(Integer::from(123).eq_abs(&123i64), true);
77/// assert_eq!(Integer::from(-123).eq_abs(&123i64), true);
78/// assert_eq!(Integer::from(123).eq_abs(&-123i64), true);
79/// assert_eq!(Integer::from(-123).eq_abs(&-123i64), true);
80///
81/// assert_eq!(123u8.eq_abs(&Integer::from(123)), true);
82/// assert_eq!(123u8.eq_abs(&Integer::from(-123)), true);
83/// assert_eq!(5u8.eq_abs(&Integer::from(123)), false);
84/// assert_eq!(5u8.eq_abs(&Integer::from(-123)), false);
85///
86/// assert_eq!(123u64.eq_abs(&Integer::from(123)), true);
87/// assert_eq!(123u64.eq_abs(&Integer::from(-123)), true);
88/// assert_eq!(5u64.eq_abs(&Integer::from(123)), false);
89/// assert_eq!(5u64.eq_abs(&Integer::from(-123)), false);
90///
91/// assert_eq!(123i64.eq_abs(&Integer::from(123)), true);
92/// assert_eq!(123i64.eq_abs(&Integer::from(-123)), true);
93/// assert_eq!((-123i64).eq_abs(&Integer::from(123)), true);
94/// assert_eq!((-123i64).eq_abs(&Integer::from(-123)), true);
95/// ```
96pub mod eq_abs_primitive_int;
97/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
98/// (a trait for comparing the absolute values of numbers by order) for
99/// [`Integer`](crate::integer::Integer)s and [`Natural`](crate::natural::Natural)s.
100pub mod partial_cmp_abs_natural;
101/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
102/// (a trait for comparing the absolute values of numbers by order) for
103/// [`Integer`](crate::integer::Integer)s and primitive floats.
104///
105/// # partial_cmp_abs
106/// ```
107/// use malachite_base::num::basic::traits::NegativeInfinity;
108/// use malachite_base::num::comparison::traits::PartialOrdAbs;
109/// use malachite_nz::integer::Integer;
110///
111/// assert!(Integer::from(-123).gt_abs(&-122.5f32));
112/// assert!(Integer::from(123).lt_abs(&f32::NEGATIVE_INFINITY));
113///
114/// assert!((-122.5f32).lt_abs(&Integer::from(-123)));
115/// assert!(f32::NEGATIVE_INFINITY.gt_abs(&Integer::from(123)));
116/// ```
117pub mod partial_cmp_abs_primitive_float;
118/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
119/// (a trait for comparing the absolute values of numbers by order) for
120/// [`Integer`](crate::integer::Integer)s and primitive integers.
121///
122/// # partial_cmp_abs
123/// ```
124/// use malachite_base::num::arithmetic::traits::Pow;
125/// use malachite_base::num::comparison::traits::PartialOrdAbs;
126/// use malachite_nz::integer::Integer;
127///
128/// assert!(Integer::from(-122).lt_abs(&123u64));
129/// assert!(Integer::from(-122).le_abs(&123u64));
130/// assert!(Integer::from(-123).lt_abs(&124u64));
131/// assert!(Integer::from(-123).le_abs(&124u64));
132/// assert!(Integer::from(10u32).pow(12).gt_abs(&123u64));
133/// assert!(Integer::from(10u32).pow(12).ge_abs(&123u64));
134/// assert!((-Integer::from(10u32).pow(12)).gt_abs(&123u64));
135/// assert!((-Integer::from(10u32).pow(12)).ge_abs(&123u64));
136///
137/// assert!(Integer::from(-122).lt_abs(&-123i64));
138/// assert!(Integer::from(-122).le_abs(&-123i64));
139/// assert!(Integer::from(-124).gt_abs(&-123i64));
140/// assert!(Integer::from(-124).ge_abs(&-123i64));
141/// assert!(Integer::from(10u32).pow(12).gt_abs(&123i64));
142/// assert!(Integer::from(10u32).pow(12).ge_abs(&123i64));
143/// assert!((-Integer::from(10u32).pow(12)).gt_abs(&123i64));
144/// assert!((-Integer::from(10u32).pow(12)).ge_abs(&123i64));
145///
146/// assert!(123u64.gt_abs(&Integer::from(-122)));
147/// assert!(123u64.ge_abs(&Integer::from(-122)));
148/// assert!(124u64.gt_abs(&Integer::from(-123)));
149/// assert!(124u64.ge_abs(&Integer::from(-123)));
150/// assert!(123u64.lt_abs(&Integer::from(10u32).pow(12)));
151/// assert!(123u64.le_abs(&Integer::from(10u32).pow(12)));
152/// assert!(123u64.lt_abs(&-Integer::from(10u32).pow(12)));
153/// assert!(123u64.le_abs(&-Integer::from(10u32).pow(12)));
154///
155/// assert!((-123i64).gt_abs(&Integer::from(-122)));
156/// assert!((-123i64).ge_abs(&Integer::from(-122)));
157/// assert!((-123i64).lt_abs(&Integer::from(-124)));
158/// assert!((-123i64).le_abs(&Integer::from(-124)));
159/// assert!(123i64.lt_abs(&Integer::from(10u32).pow(12)));
160/// assert!(123i64.le_abs(&Integer::from(10u32).pow(12)));
161/// assert!(123i64.lt_abs(&-Integer::from(10u32).pow(12)));
162/// assert!(123i64.le_abs(&-Integer::from(10u32).pow(12)));
163/// ```
164pub mod partial_cmp_abs_primitive_int;
165/// Comparison of [`Integer`](crate::integer::Integer)s and [`Natural`](crate::natural::Natural)s.
166pub mod partial_cmp_natural;
167/// Comparison of [`Integer`](crate::integer::Integer)s and primitive floats.
168///
169/// # partial_cmp
170/// ```
171/// use malachite_nz::integer::Integer;
172///
173/// assert!(Integer::from(-123) < -122.5f32);
174/// assert!(Integer::from(123) < f32::INFINITY);
175/// assert!(-122.5f32 > Integer::from(-123));
176/// assert!(f32::INFINITY > Integer::from(123));
177/// ```
178pub mod partial_cmp_primitive_float;
179/// Comparison of [`Integer`](crate::integer::Integer)s and primitive integers.
180///
181/// # partial_cmp
182/// ```
183/// use malachite_base::num::arithmetic::traits::Pow;
184/// use malachite_nz::integer::Integer;
185///
186/// assert!(Integer::from(-123) < 122u64);
187/// assert!(Integer::from(-123) <= 122u64);
188/// assert!(Integer::from(-123) < 124u64);
189/// assert!(Integer::from(-123) <= 124u64);
190/// assert!(Integer::from(10u32).pow(12) > 123u64);
191/// assert!(Integer::from(10u32).pow(12) >= 123u64);
192/// assert!(-Integer::from(10u32).pow(12) < 123u64);
193/// assert!(-Integer::from(10u32).pow(12) <= 123u64);
194///
195/// assert!(Integer::from(-123) < -122i64);
196/// assert!(Integer::from(-123) <= -122i64);
197/// assert!(Integer::from(-123) > -124i64);
198/// assert!(Integer::from(-123) >= -124i64);
199/// assert!(Integer::from(10u32).pow(12) > 123i64);
200/// assert!(Integer::from(10u32).pow(12) >= 123i64);
201/// assert!(-Integer::from(10u32).pow(12) < 123i64);
202/// assert!(-Integer::from(10u32).pow(12) <= 123i64);
203///
204/// assert!(122u64 > Integer::from(-123));
205/// assert!(122u64 >= Integer::from(-123));
206/// assert!(124u64 > Integer::from(-123));
207/// assert!(124u64 >= Integer::from(-123));
208/// assert!(123u64 < Integer::from(10u32).pow(12));
209/// assert!(123u64 <= Integer::from(10u32).pow(12));
210/// assert!(123u64 > -Integer::from(10u32).pow(12));
211/// assert!(123u64 >= -Integer::from(10u32).pow(12));
212///
213/// assert!(-122i64 > Integer::from(-123));
214/// assert!(-122i64 >= Integer::from(-123));
215/// assert!(-124i64 < Integer::from(-123));
216/// assert!(-124i64 <= Integer::from(-123));
217/// assert!(123i64 < Integer::from(10u32).pow(12));
218/// assert!(123i64 <= Integer::from(10u32).pow(12));
219/// assert!(123i64 > -Integer::from(10u32).pow(12));
220/// assert!(123i64 >= -Integer::from(10u32).pow(12));
221/// ```
222pub mod partial_cmp_primitive_int;
223/// Equality of [`Integer`](crate::integer::Integer)s and [`Natural`](crate::natural::Natural)s.
224pub mod partial_eq_natural;
225/// Equality of [`Integer`](crate::integer::Integer)s and primitive floats.
226///
227/// # partial_eq
228/// ```
229/// use malachite_nz::integer::Integer;
230///
231/// assert!(Integer::from(123u32) == 123.0f32);
232/// assert!(Integer::from(123u32) != -5.0f32);
233///
234/// assert!(123.0f32 == Integer::from(123u32));
235/// assert!(-5.0f32 != Integer::from(123u32));
236/// ```
237pub mod partial_eq_primitive_float;
238/// Equality of [`Integer`](crate::integer::Integer)s and primitive integers.
239///
240/// # partial_eq
241/// ```
242/// use malachite_nz::integer::Integer;
243///
244/// assert!(Integer::from(123) == 123u64);
245/// assert!(Integer::from(-123) != 123u64);
246///
247/// assert!(123u64 == Integer::from(123));
248/// assert!(123u64 != Integer::from(-123));
249///
250/// assert!(123u64 == Integer::from(123));
251/// assert!(123u64 != Integer::from(-123));
252///
253/// assert!(23i64 != Integer::from(123));
254/// assert!(-123i64 == Integer::from(-123));
255/// ```
256pub mod partial_eq_primitive_int;