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