Skip to content

Commit 489b68b

Browse files
authored
Comparisons of InfiniteCardinal with BigInt/BigFloat (#45)
* Comparisons of InfiniteCardinal with BigInt/BigFloat * Tests against infinity
1 parent fd411a5 commit 489b68b

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "Infinities"
22
uuid = "e1ba4f0e-776d-440f-acd9-e1d2e9742647"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.1.6"
4+
version = "0.1.7"
55

66
[compat]
77
Aqua = "0.6"

src/cardinality.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ end
5757
==(::InfiniteCardinal, y::Real) === y
5858
==(x::Real, ::InfiniteCardinal) = x ==
5959

60+
==(::BigInt, ::InfiniteCardinal) = false
61+
==(::InfiniteCardinal, ::BigInt) = false
62+
==(x::BigFloat, ::InfiniteCardinal) = x ==
63+
==(::InfiniteCardinal, x::BigFloat) = x ==
64+
6065
@generated isless(::InfiniteCardinal{N}, ::InfiniteCardinal{M}) where {N,M} = :($(isless(N, M)))
6166
isless(::InfiniteCardinal{0}, ::InfiniteCardinal{0}) = false
6267
isless(x::Real, ::InfiniteCardinal{0}) = isfinite(x)
@@ -83,6 +88,18 @@ isless(x::InfiniteCardinal, y::AbstractFloat) = false
8388
(::InfiniteCardinal, x::RealInfinity) = false
8489
<(::InfiniteCardinal, x::RealInfinity) = false
8590

91+
for T in (:InfiniteCardinal, :(InfiniteCardinal{0}))
92+
@eval begin
93+
(::BigInt, ::$T) = true
94+
<(::BigInt, ::$T) = true
95+
(::$T, ::BigInt) = false
96+
<(::$T, ::BigInt) = false
97+
(x::BigFloat, ::$T) = true
98+
<(x::BigFloat, ::$T) = x <
99+
(::$T, x::BigFloat) = x
100+
<(::$T, x::BigFloat) = false
101+
end
102+
end
86103

87104
<(::Infinity, ::InfiniteCardinal{0}) = false
88105
<(::Infinity, ::InfiniteCardinal) = true

test/test_cardinality.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,28 @@ using Infinities, Base64, Base.Checked, Test
6868
@test !(ℵ₀ < 5) && !(ℵ₀ 5)
6969
@test ℵ₀ > 5 && ℵ₀ 5
7070
@test !(5 > ℵ₀) && !(5 ℵ₀)
71+
72+
@testset "BigInt/BigFloat" begin
73+
for x in (big(2), big(2.0))
74+
@test !(x == ℵ₀)
75+
@test !(ℵ₀ == x)
76+
@test x < ℵ₀
77+
@test !(ℵ₀ < x)
78+
@test x <= ℵ₀
79+
@test !(ℵ₀ <= x)
80+
@test x < InfiniteCardinal{1}()
81+
@test !(InfiniteCardinal{1}() < x)
82+
@test x <= InfiniteCardinal{1}()
83+
@test !(InfiniteCardinal{1}() <= x)
84+
end
85+
@test (ℵ₀ == big(Inf)) == (ℵ₀ == Inf)
86+
@test (big(Inf) == ℵ₀) == (Inf == ℵ₀)
87+
@test (ℵ₀ < big(Inf)) == (ℵ₀ < Inf)
88+
@test (big(Inf) < ℵ₀) == (Inf < ℵ₀)
89+
@test (ℵ₀ <= big(Inf)) == (ℵ₀ <= Inf)
90+
@test (big(Inf) <= ℵ₀) == (Inf <= ℵ₀)
91+
end
92+
7193
end
7294

7395
@testset "min/max" begin

0 commit comments

Comments
 (0)