Skip to content

Commit fa98e6b

Browse files
authored
Multiplication of Fun{<:ContinuousSpace} (#86)
* improve inference in PiecewiseSpace * undo type assertion * version bump to v0.4.14
1 parent 07e9504 commit fa98e6b

File tree

4 files changed

+11
-5
lines changed

4 files changed

+11
-5
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "ApproxFunOrthogonalPolynomials"
22
uuid = "b70543e2-c0d9-56b8-a290-0d4d6d4de211"
3-
version = "0.4.13"
3+
version = "0.4.14"
44

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

src/Spaces/Ultraspherical/ContinuousSpace.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ function *(P::TransformPlan{T,SS,false},vals::AbstractVector{T}) where {T,SS<:Co
9494
end
9595
end
9696

97-
components(S::ContinuousSpace) = map(ChebyshevDirichlet{1,1},components(domain(S)))
97+
components(S::ContinuousSpace) = map(ChebyshevDirichlet{1,1}, components(domain(S)))
9898
canonicalspace(S::ContinuousSpace) = PiecewiseSpace(components(S))
9999
convert(::Type{PiecewiseSpace}, S::ContinuousSpace) = canonicalspace(S)
100100

@@ -105,11 +105,11 @@ block(C::ContinuousSpace,k) = Block((k-1)÷ncomponents(C.domain)+1)
105105

106106
## components
107107

108-
components(f::Fun{CS},j::Integer) where {CS<:ContinuousSpace} = components(Fun(f,canonicalspace(f)),j)
109-
components(f::Fun{CS}) where {CS<:ContinuousSpace} = components(Fun(f,canonicalspace(space(f))))
108+
components(f::Fun{<:ContinuousSpace},j::Integer) = components(Fun(f,canonicalspace(f)),j)
109+
components(f::Fun{<:ContinuousSpace}) = components(Fun(f,canonicalspace(space(f))))
110110

111111

112-
function points(f::Fun{CS}) where {CS<:ContinuousSpace}
112+
function points(f::Fun{<:ContinuousSpace})
113113
n=ncoefficients(f)
114114
d=domain(f)
115115
K=ncomponents(d)

src/specialfunctions.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
^(f::Fun{S},c::Integer) where {S<:ContinuousSpace} = Fun(map(f->f^c,components(f)),PiecewiseSpace)
88
^(f::Fun{S},c::Number) where {S<:ContinuousSpace} = Fun(map(f->f^c,components(f)),PiecewiseSpace)
99

10+
function *(f::Fun{<:ContinuousSpace}, g::Fun{<:ContinuousSpace})
11+
@assert components(domain(f)) == components(domain(g))
12+
Fun(map(*, components(f), components(g)), PiecewiseSpace)
13+
end
1014

1115
^(f::Fun{<:PolynomialSpace},k::Integer) = intpow(f,k)
1216

test/SpacesTest.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ import ApproxFunBase: space, SpaceOperator,
6060
c=Fun(cos,-2..2)|>abs
6161
sc=Fun(x -> abs(sin(x))+abs(cos(x)), ContinuousSpace(PiecewiseSegment([-2,(-π/2),0/2,2])))
6262
@test norm(sc-(c+s))<100eps()
63+
64+
@test sc * sc == sc^2
6365
end
6466

6567
@testset "max/min creates breakpoints" begin

0 commit comments

Comments
 (0)