Skip to content

Commit fd97768

Browse files
authored
union for various spaces (#88)
* union for various spaces * don't import union
1 parent 051a6f1 commit fd97768

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ApproxFunFourier"
22
uuid = "59844689-9c9d-51bf-9583-5b794ec66d30"
3-
version = "0.3.18"
3+
version = "0.3.19"
44

55
[deps]
66
AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c"

src/ApproxFunFourier.jl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ import DomainSets: Domain, indomain, UnionDomain, Point, Interval,
4545

4646
import Base: convert, getindex, *, +, -, ==, /, eltype,
4747
show, sum, conj, issubset, first, last, rand, setdiff,
48-
union, angle, isempty, one, promote_rule, real, imag
48+
angle, isempty, one, promote_rule, real, imag
4949

5050
import LinearAlgebra: norm, mul!, isdiag
5151

@@ -567,13 +567,15 @@ function domainsscaled(A::Domain, B::Domain)
567567
return nothing
568568
end
569569
domainsscaled(A::Space, B::Space) = domainsscaled(map(domain, (A,B))...)
570-
function union(A::Fourier, B::Fourier)
571-
dA, dB = map(domain, (A,B))
572-
AB = domainsmultiple(dA, dB)
573-
isnothing(AB) || return Fourier(max(dA, dB))
574-
scale = domainsscaled(dA, dB)
575-
isnothing(scale) || return Fourier(max(dA, dB) * denominator(scale))
576-
SumSpace(A, B)
570+
for S in [:CosSpace, :SinSpace, :Fourier, :Laurent]
571+
@eval function union_rule(A::$S{<:PeriodicSegment}, B::$S{<:PeriodicSegment})
572+
dA, dB = map(domain, (A,B))
573+
AB = domainsmultiple(dA, dB)
574+
isnothing(AB) || return $S(max(dA, dB))
575+
scale = domainsscaled(dA, dB)
576+
isnothing(scale) || return $S(max(dA, dB) * denominator(scale))
577+
SumSpace(A, B)
578+
end
577579
end
578580
_ind(i, n) = 2n * div(i, 2) + isodd(i)
579581
_invind(i, n) = 2div(i - isodd(i), 2n) + isodd(i)

test/runtests.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ end
220220
g = f1 + f2
221221
pts = [0:5;]*pi
222222
@test g.(pts) f1.(pts) .+ f2.(pts)
223+
224+
@testset "other spaces" begin
225+
for S in Any[CosSpace, SinSpace, Fourier, Laurent]
226+
@test union(S(0..pi), S(0..2pi)) == S(0..2pi)
227+
@test union(S(0..2pi), S(0..3pi)) == S(0..6pi)
228+
end
229+
end
223230
end
224231

225232
@testset "coeff conversion" begin

0 commit comments

Comments
 (0)