Skip to main content

malachite_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/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
81/// (a trait for comparing the absolute values of numbers by order) for [`Float`](crate::Float)s and
82/// [`Integer`](malachite_nz::integer::Integer)s.
83pub mod partial_cmp_abs_integer;
84/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
85/// (a trait for comparing the absolute values of numbers by order) for [`Float`](crate::Float)s and
86/// [`Natural`](malachite_nz::natural::Natural)s.
87pub mod partial_cmp_abs_natural;
88/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
89/// (a trait for comparing the absolute values of numbers by order) for [`Float`](crate::Float)s and
90/// primitive floats.
91///
92/// # partial_cmp_abs
93/// ```
94/// use malachite_base::num::basic::traits::OneHalf;
95/// use malachite_base::num::comparison::traits::{EqAbs, PartialOrdAbs};
96/// use malachite_float::Float;
97///
98/// assert!(Float::ONE_HALF.gt_abs(&0.4));
99/// assert!(Float::ONE_HALF.lt_abs(&0.6));
100/// assert!(Float::ONE_HALF.eq_abs(&-0.5));
101///
102/// assert!(0.4.lt_abs(&Float::ONE_HALF));
103/// assert!(0.6.gt_abs(&Float::ONE_HALF));
104/// assert!((-0.5).eq_abs(&Float::ONE_HALF));
105/// ```
106pub mod partial_cmp_abs_primitive_float;
107/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
108/// (a trait for comparing the absolute values of numbers by order) for [`Float`](crate::Float)s and
109/// primitive integers.
110///
111/// # partial_cmp_abs
112/// ```
113/// use malachite_base::num::basic::traits::{Infinity, NegativeInfinity};
114/// use malachite_base::num::comparison::traits::PartialOrdAbs;
115/// use malachite_float::Float;
116///
117/// assert!(Float::from(80).lt_abs(&100u64));
118/// assert!(Float::INFINITY.gt_abs(&100u64));
119/// assert!(Float::NEGATIVE_INFINITY.gt_abs(&100u64));
120///
121/// assert!(100u64.gt_abs(&Float::from(80)));
122/// assert!(100u64.lt_abs(&Float::INFINITY));
123/// assert!(100u64.lt_abs(&Float::NEGATIVE_INFINITY));
124///
125/// assert!(Float::from(80).lt_abs(&100i64));
126/// assert!(Float::from(-80).lt_abs(&-100i64));
127/// assert!(Float::INFINITY.gt_abs(&100i64));
128/// assert!(Float::NEGATIVE_INFINITY.gt_abs(&-100i64));
129///
130/// assert!(100i64.gt_abs(&Float::from(80)));
131/// assert!(100i64.lt_abs(&Float::INFINITY));
132/// assert!((-100i64).lt_abs(&Float::INFINITY));
133/// assert!((-100i64).lt_abs(&Float::NEGATIVE_INFINITY));
134/// ```
135pub mod partial_cmp_abs_primitive_int;
136/// Implementations of [`PartialOrdAbs`](`malachite_base::num::comparison::traits::PartialOrdAbs`)
137/// (a trait for comparing the absolute values of numbers by order) for [`Float`](crate::Float)s and
138/// [`Rational`](malachite_q::Rational)s.
139pub mod partial_cmp_abs_rational;
140/// Comparison of [`Float`](crate::Float)s and [`Integer`](malachite_nz::integer::Integer)s.
141pub mod partial_cmp_integer;
142/// Comparison of [`Float`](crate::Float)s and [`Natural`](malachite_nz::natural::Natural)s.
143pub mod partial_cmp_natural;
144/// Comparison of [`Float`](crate::Float)s and primitive floats.
145///
146/// # partial_cmp
147/// ```
148/// use malachite_base::num::basic::traits::OneHalf;
149/// use malachite_float::Float;
150///
151/// assert!(Float::ONE_HALF > 0.4);
152/// assert!(Float::ONE_HALF < 0.6);
153/// assert!(Float::ONE_HALF > -0.5);
154///
155/// assert!(0.4 < Float::ONE_HALF);
156/// assert!(0.6 > Float::ONE_HALF);
157/// assert!(-0.5 < Float::ONE_HALF);
158/// ```
159pub mod partial_cmp_primitive_float;
160/// Comparison of [`Float`](crate::Float)s and primitive integers.
161///
162/// # partial_cmp
163/// ```
164/// use malachite_base::num::basic::traits::{Infinity, NegativeInfinity};
165/// use malachite_float::Float;
166///
167/// assert!(Float::from(80) < 100u64);
168/// assert!(Float::INFINITY > 100u64);
169/// assert!(Float::NEGATIVE_INFINITY < 100u64);
170///
171/// assert!(100u64 > Float::from(80));
172/// assert!(100u64 < Float::INFINITY);
173/// assert!(100u64 > Float::NEGATIVE_INFINITY);
174///
175/// assert!(Float::from(80) < 100i64);
176/// assert!(Float::from(-80) > -100i64);
177/// assert!(Float::INFINITY > 100i64);
178/// assert!(Float::NEGATIVE_INFINITY < -100i64);
179///
180/// assert!(100i64 > Float::from(80));
181/// assert!(-100i64 < Float::from(-80));
182/// assert!(-100i64 < Float::INFINITY);
183/// assert!(-100i64 > Float::NEGATIVE_INFINITY);
184/// ```
185pub mod partial_cmp_primitive_int;
186/// Comparison of [`Float`](crate::Float)s and [`Rational`](malachite_q::Rational)s.
187pub mod partial_cmp_rational;
188/// Equality of [`Float`](crate::Float)s and [`Integer`](malachite_nz::integer::Integer)s.
189pub mod partial_eq_integer;
190/// Equality of [`Float`](crate::Float)s and [`Natural`](malachite_nz::natural::Natural)s.
191pub mod partial_eq_natural;
192/// Equality of [`Float`](crate::Float)s and primitive floats.
193///
194/// # partial_eq
195/// ```
196/// use malachite_base::num::basic::traits::OneHalf;
197/// use malachite_float::Float;
198///
199/// assert!(Float::from(123) == 123.0);
200/// assert!(Float::ONE_HALF == 0.5);
201/// assert!(Float::ONE_HALF != -0.5);
202/// assert!(Float::ONE_HALF != 0.4);
203///
204/// assert!(123.0 == Float::from(123));
205/// assert!(0.5 == Float::ONE_HALF);
206/// assert!(-0.5 != Float::ONE_HALF);
207/// assert!(0.4 != Float::ONE_HALF);
208/// ```
209pub mod partial_eq_primitive_float;
210/// Equality of [`Float`](crate::Float)s and primitive integers.
211///
212/// # partial_eq
213/// ```
214/// use malachite_base::num::basic::traits::OneHalf;
215/// use malachite_float::Float;
216///
217/// assert!(Float::from(123) == 123u64);
218/// assert!(Float::ONE_HALF != 1u64);
219///
220/// assert!(Float::from(123) == 123i64);
221/// assert!(Float::from(-123) == -123i64);
222/// assert!(Float::ONE_HALF != -1i64);
223///
224/// assert!(123u64 == Float::from(123));
225/// assert!(1u64 != Float::ONE_HALF);
226///
227/// assert!(123i64 == Float::from(123));
228/// assert!(-123i64 == Float::from(-123));
229/// assert!(-1i64 != Float::ONE_HALF);
230/// ```
231pub mod partial_eq_primitive_int;
232/// Equality of [`Float`](crate::Float)s and [`Rational`](malachite_q::Rational)s.
233pub mod partial_eq_rational;