malachite_q/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 [`Rational`](crate::Rational)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 [`Rational`](crate::Rational)s.
14pub mod cmp_abs;
15/// Equality of the absolute values of two [`Rational`](crate::Rational)s.
16pub mod eq_abs;
17/// Equality of the absolute values of a [`Rational`](crate::Rational) and an
18/// [`Integer`](malachite_nz::integer::Integer).
19pub mod eq_abs_integer;
20/// Equality of the absolute values of a [`Rational`](crate::Rational) and a
21/// [`Natural`](malachite_nz::natural::Natural).
22pub mod eq_abs_natural;
23/// Equality of the absolute values of a [`Rational`](crate::Rational) and a primitive float.
24///
25/// # eq_abs
26/// ```
27/// use malachite_base::num::basic::traits::{NegativeInfinity, Zero};
28/// use malachite_base::num::comparison::traits::EqAbs;
29/// use malachite_q::Rational;
30///
31/// assert_eq!(Rational::from(123).eq_abs(&123.0), true);
32/// assert_eq!(Rational::from(123).eq_abs(&5.0), false);
33/// assert_eq!(Rational::from(123).eq_abs(&-123.0), true);
34/// assert_eq!(Rational::from(123).eq_abs(&-5.0), false);
35/// assert_eq!(Rational::from(-123).eq_abs(&123.0), true);
36/// assert_eq!(Rational::from(-123).eq_abs(&5.0), false);
37/// assert_eq!(Rational::from(-123).eq_abs(&-123.0), true);
38/// assert_eq!(Rational::from(-123).eq_abs(&-5.0), false);
39/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&123.0), false);
40/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&5.0), false);
41/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&-123.0), false);
42/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&-5.0), false);
43/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&123.0), false);
44/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&5.0), false);
45/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&-123.0), false);
46/// assert_eq!(Rational::from_signeds(22, 7).eq_abs(&-5.0), false);
47/// assert_eq!(Rational::ZERO.eq_abs(&0.0), true);
48/// assert_eq!(Rational::ZERO.eq_abs(&-0.0), true);
49/// assert_eq!(Rational::ZERO.eq_abs(&f64::NAN), false);
50/// assert_eq!(Rational::ZERO.eq_abs(&f64::INFINITY), false);
51/// assert_eq!(Rational::ZERO.eq_abs(&f64::NEGATIVE_INFINITY), false);
52///
53/// assert_eq!(123.0.eq_abs(&Rational::from(123)), true);
54/// assert_eq!(5.0.eq_abs(&Rational::from(123)), false);
55/// assert_eq!((-123.0).eq_abs(&Rational::from(123)), true);
56/// assert_eq!((-5.0).eq_abs(&Rational::from(123)), false);
57/// assert_eq!(123.0.eq_abs(&Rational::from(-123)), true);
58/// assert_eq!(5.0.eq_abs(&Rational::from(-123)), false);
59/// assert_eq!((-123.0).eq_abs(&Rational::from(-123)), true);
60/// assert_eq!((-5.0).eq_abs(&Rational::from(-123)), false);
61/// assert_eq!(123.0.eq_abs(&Rational::from_signeds(22, 7)), false);
62/// assert_eq!(5.0.eq_abs(&Rational::from_signeds(22, 7)), false);
63/// assert_eq!((-123.0).eq_abs(&Rational::from_signeds(22, 7)), false);
64/// assert_eq!((-5.0).eq_abs(&Rational::from_signeds(22, 7)), false);
65/// assert_eq!(123.0.eq_abs(&Rational::from_signeds(22, 7)), false);
66/// assert_eq!(5.0.eq_abs(&Rational::from_signeds(22, 7)), false);
67/// assert_eq!((-123.0).eq_abs(&Rational::from_signeds(22, 7)), false);
68/// assert_eq!((-5.0).eq_abs(&Rational::from_signeds(22, 7)), false);
69/// assert_eq!(0.0.eq_abs(&Rational::ZERO), true);
70/// assert_eq!((-0.0).eq_abs(&Rational::ZERO), true);
71/// assert_eq!(f64::NAN.eq_abs(&Rational::ZERO), false);
72/// assert_eq!(f64::INFINITY.eq_abs(&Rational::ZERO), false);
73/// assert_eq!(f64::NEGATIVE_INFINITY.eq_abs(&Rational::ZERO), false);
74/// ```
75pub mod eq_abs_primitive_float;
76/// Equality of the absolute values of a [`Rational`](crate::Rational) and a primitive integer.
77///
78/// # eq_abs
79/// ```
80/// use malachite_base::num::comparison::traits::EqAbs;
81/// use malachite_q::Rational;
82///
83/// assert!(Rational::from(123).eq_abs(&123u64));
84/// assert!(Rational::from(-123).eq_abs(&123u64));
85/// assert!(Rational::from_signeds(22, 7).ne_abs(&123u64));
86/// assert!(Rational::from_signeds(-22, 7).ne_abs(&123u64));
87///
88/// assert!(Rational::from(123).eq_abs(&123i64));
89/// assert!(Rational::from(123).eq_abs(&-123i64));
90/// assert!(Rational::from_signeds(22, 7).ne_abs(&-123i64));
91/// assert!(Rational::from_signeds(-22, 7).ne_abs(&-123i64));
92///
93/// assert!(123u64.eq_abs(&Rational::from(123)));
94/// assert!(123u64.eq_abs(&Rational::from(-123)));
95/// assert!(123u64.ne_abs(&Rational::from_signeds(22, 7)));
96/// assert!(123u64.ne_abs(&Rational::from_signeds(-22, 7)));
97///
98/// assert!(123i64.eq_abs(&Rational::from(123)));
99/// assert!(123i64.eq_abs(&Rational::from(-123)));
100/// assert!((-123i64).ne_abs(&Rational::from_signeds(22, 7)));
101/// assert!((-123i64).ne_abs(&Rational::from_signeds(-22, 7)));
102/// ```
103pub mod eq_abs_primitive_int;
104/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
105/// (a trait for comparing the absolute values of numbers by order) for
106/// [`Rational`](crate::Rational)s and [`Integer`](malachite_nz::integer::Integer)s.
107pub mod partial_cmp_abs_integer;
108/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
109/// (a trait for comparing the absolute values of numbers by order) for
110/// [`Rational`](crate::Rational)s and [`Natural`](malachite_nz::natural::Natural)s.
111pub mod partial_cmp_abs_natural;
112/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
113/// (a trait for comparing the absolute values of numbers by order) for
114/// [`Rational`](crate::Rational)s and primitive floats.
115///
116/// # partial_cmp_abs
117/// ```
118/// use malachite_base::num::comparison::traits::PartialOrdAbs;
119/// use malachite_q::Rational;
120///
121/// assert!(Rational::from_signeds(1, 3).gt_abs(&-0.33f32));
122/// assert!(Rational::from_signeds(1, 3).lt_abs(&-0.34f32));
123///
124/// assert!((-0.33f32).lt_abs(&Rational::from_signeds(1, 3)));
125/// assert!((-0.34f32).gt_abs(&Rational::from_signeds(1, 3)));
126/// ```
127pub mod partial_cmp_abs_primitive_float;
128/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
129/// (a trait for comparing the absolute values of numbers by order) for
130/// [`Rational`](crate::Rational)s and primitive integers.
131///
132/// # partial_cmp_abs
133/// ```
134/// use malachite_base::num::comparison::traits::PartialOrdAbs;
135/// use malachite_q::Rational;
136///
137/// assert!(Rational::from_signeds(22, 7).gt_abs(&3u32));
138/// assert!(Rational::from_signeds(22, 7).lt_abs(&4u32));
139/// assert!(Rational::from_signeds(-22, 7).gt_abs(&3u32));
140/// assert!(Rational::from_signeds(-22, 7).lt_abs(&4u32));
141///
142/// assert!(Rational::from_signeds(22, 7).gt_abs(&3i32));
143/// assert!(Rational::from_signeds(22, 7).lt_abs(&4i32));
144/// assert!(Rational::from_signeds(-22, 7).gt_abs(&-3i32));
145/// assert!(Rational::from_signeds(-22, 7).lt_abs(&-4i32));
146///
147/// assert!(3u32.lt_abs(&Rational::from_signeds(22, 7)));
148/// assert!(4u32.gt_abs(&Rational::from_signeds(22, 7)));
149/// assert!(3u32.lt_abs(&Rational::from_signeds(-22, 7)));
150/// assert!(4u32.gt_abs(&Rational::from_signeds(-22, 7)));
151///
152/// assert!(3i32.lt_abs(&Rational::from_signeds(22, 7)));
153/// assert!(4i32.gt_abs(&Rational::from_signeds(22, 7)));
154/// assert!((-3i32).lt_abs(&Rational::from_signeds(-22, 7)));
155/// assert!((-4i32).gt_abs(&Rational::from_signeds(-22, 7)));
156/// ```
157pub mod partial_cmp_abs_primitive_int;
158/// Comparison of [`Rational`](crate::Rational)s and [`Integer`](malachite_nz::integer::Integer)s.
159pub mod partial_cmp_integer;
160/// Comparison of [`Rational`](crate::Rational)s and [`Natural`](malachite_nz::natural::Natural)s.
161pub mod partial_cmp_natural;
162/// Comparison of [`Rational`](crate::Rational)s and primitive floats.
163///
164/// # partial_cmp
165/// ```
166/// use malachite_q::Rational;
167///
168/// assert!(Rational::from_signeds(1, 3) > 0.33f32);
169/// assert!(Rational::from_signeds(1, 3) < 0.34f32);
170///
171/// assert!(0.33f32 < Rational::from_signeds(1, 3));
172/// assert!(0.34f32 > Rational::from_signeds(1, 3));
173/// ```
174pub mod partial_cmp_primitive_float;
175/// Comparison of [`Rational`](crate::Rational)s and primitive integers.
176///
177/// # partial_cmp
178/// ```
179/// use malachite_q::Rational;
180///
181/// assert!(Rational::from_signeds(22, 7) > 3u32);
182/// assert!(Rational::from_signeds(22, 7) < 4u32);
183/// assert!(Rational::from_signeds(-22, 7) < 3u32);
184/// assert!(Rational::from_signeds(-22, 7) < 4u32);
185///
186/// assert!(Rational::from_signeds(22, 7) > 3i32);
187/// assert!(Rational::from_signeds(22, 7) < 4i32);
188/// assert!(Rational::from_signeds(-22, 7) < -3i32);
189/// assert!(Rational::from_signeds(-22, 7) > -4i32);
190///
191/// assert!(3u32 < Rational::from_signeds(22, 7));
192/// assert!(4u32 > Rational::from_signeds(22, 7));
193/// assert!(3u32 > Rational::from_signeds(-22, 7));
194/// assert!(4u32 > Rational::from_signeds(-22, 7));
195///
196/// assert!(3i32 < Rational::from_signeds(22, 7));
197/// assert!(4i32 > Rational::from_signeds(22, 7));
198/// assert!(-3i32 > Rational::from_signeds(-22, 7));
199/// assert!(-4i32 < Rational::from_signeds(-22, 7));
200/// ```
201pub mod partial_cmp_primitive_int;
202/// Equality of [`Rational`](crate::Rational)s and [`Integer`](malachite_nz::integer::Integer)s.
203pub mod partial_eq_integer;
204/// Equality of [`Rational`](crate::Rational)s and [`Natural`](malachite_nz::natural::Natural)s.
205pub mod partial_eq_natural;
206/// Equality of [`Rational`](crate::Rational)s and primitive floats.
207///
208/// # partial_eq
209/// ```
210/// use malachite_q::Rational;
211///
212/// assert!(Rational::from_signeds(3, 2) == 1.5f32);
213/// assert!(Rational::from_signeds(3, 2) != 1.4f32);
214///
215/// assert!(1.5f32 == Rational::from_signeds(3, 2));
216/// assert!(1.4f32 != Rational::from_signeds(3, 2));
217/// ```
218pub mod partial_eq_primitive_float;
219/// Equality of [`Rational`](crate::Rational)s and primitive integers.
220///
221/// # partial_eq
222/// ```
223/// use malachite_q::Rational;
224///
225/// assert!(Rational::from(123) == 123u64);
226/// assert!(Rational::from(-123) != 123u64);
227/// assert!(Rational::from_signeds(22, 7) != 123u64);
228/// assert!(Rational::from_signeds(-22, 7) != 123u64);
229///
230/// assert!(Rational::from(123) == 123i64);
231/// assert!(Rational::from(-123) == -123i64);
232/// assert!(Rational::from_signeds(22, 7) != -123i64);
233/// assert!(Rational::from_signeds(-22, 7) != -123i64);
234///
235/// assert!(123u64 == Rational::from(123));
236/// assert!(123u64 != Rational::from(-123));
237/// assert!(123u64 != Rational::from_signeds(22, 7));
238/// assert!(123u64 != Rational::from_signeds(-22, 7));
239///
240/// assert!(123i64 == Rational::from(123));
241/// assert!(-123i64 == Rational::from(-123));
242/// assert!(-123i64 != Rational::from_signeds(22, 7));
243/// assert!(-123i64 != Rational::from_signeds(-22, 7));
244/// ```
245pub mod partial_eq_primitive_int;