Skip to content

Commit 18f7083

Browse files
authored
Faster evaluation in normalized space (#269)
1 parent d727379 commit 18f7083

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
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.6.35"
3+
version = "0.6.36"
44

55
[deps]
66
ApproxFunBase = "fbd15aa5-315a-5a7d-a8a4-24992e37be05"

src/Spaces/PolynomialSpace.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,20 @@ function getindex(C::ConcreteConversion{S,NormalizedPolynomialSpace{S,D,R},T},k:
529529
end
530530
end
531531

532+
function getindex(op::ConcreteEvaluation{<:NormalizedPolynomialSpace}, k::Integer)
533+
S = domainspace(op)
534+
ec = Evaluation(canonicalspace(S), op.x, op.order)[k]
535+
nrm = ConcreteConversion(S, canonicalspace(S))[k,k]
536+
nrm * ec
537+
end
538+
function getindex(op::ConcreteEvaluation{<:NormalizedPolynomialSpace}, kr::AbstractRange)
539+
S = domainspace(op)
540+
ec = Evaluation(canonicalspace(S), op.x, op.order)[kr]
541+
C = ConcreteConversion(S, canonicalspace(S))
542+
nrm = [C[k,k] for k in kr]
543+
nrm .* ec
544+
end
545+
532546
spacescompatible(a::NormalizedPolynomialSpace,b::NormalizedPolynomialSpace) = spacescompatible(a.space,b.space)
533547
hasconversion(a::PolynomialSpace,b::NormalizedPolynomialSpace) = hasconversion(a,b.space)
534548
hasconversion(a::NormalizedPolynomialSpace,b::PolynomialSpace) = hasconversion(a.space,b)

test/UltrasphericalTest.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,14 @@ include("testutils.jl")
168168
end
169169
end
170170
end
171+
172+
@testset "Evaluation" begin
173+
S = NormalizedUltraspherical(1)
174+
E = Evaluation(S, 0.5)
175+
@test reshape(E[1:1, 1:10], 10) [E[1,i] for i in 1:10]
176+
f = Fun(x->x^3, S)
177+
@test Number(E * f) f(0.5)
178+
end
171179
end
172180

173181
@testset "inplace transform" begin

0 commit comments

Comments
 (0)