@@ -45,7 +45,7 @@ import DomainSets: Domain, indomain, UnionDomain, Point, Interval,
45
45
46
46
import Base: convert, getindex, * , + , - , == , / , eltype,
47
47
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
49
49
50
50
import LinearAlgebra: norm, mul!, isdiag
51
51
@@ -567,13 +567,15 @@ function domainsscaled(A::Domain, B::Domain)
567
567
return nothing
568
568
end
569
569
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
577
579
end
578
580
_ind (i, n) = 2 n * div (i, 2 ) + isodd (i)
579
581
_invind (i, n) = 2 div (i - isodd (i), 2 n) + isodd (i)
0 commit comments