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