Skip to content

Commit f48d2f5

Browse files
authored
Preserve bandwidth in multiplication (#132)
* preserve bandwidth in multiplication * Add test for NormalizedJacobi * Fix for Fun in normalized space * tests for banded operator * version bump to v0.5.11
1 parent 27444b7 commit f48d2f5

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
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.5.10"
3+
version = "0.5.11"
44

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

src/Spaces/PolynomialSpace.jl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,11 @@ hasconversion(a::NormalizedPolynomialSpace,b::NormalizedPolynomialSpace) = hasco
421421

422422

423423
function Multiplication(f::Fun{U},sp::NormalizedPolynomialSpace) where U <: PolynomialSpace
424-
csp = space(f)
425-
MultiplicationWrapper(f,Conversion(csp,sp)*Multiplication(f,csp)*Conversion(sp,csp))
424+
fsp = space(f)
425+
unnorm_sp = sp.space
426+
O = Conversion(unnorm_sp,sp) *
427+
Multiplication(f,unnorm_sp) * Conversion(sp, unnorm_sp)
428+
MultiplicationWrapper(f, O)
426429
end
427430

428431
function Multiplication(f::Fun{U},sp::PolynomialSpace) where U <: NormalizedPolynomialSpace
@@ -432,5 +435,5 @@ end
432435
function Multiplication(f::Fun{U},sp::NormalizedPolynomialSpace) where U <: NormalizedPolynomialSpace
433436
csp = canonicalspace(f)
434437
fc = Conversion(space(f), csp)*f
435-
MultiplicationWrapper(f,Conversion(csp,sp)*Multiplication(fc,csp)*Conversion(sp,csp))
438+
Multiplication(fc, sp)
436439
end

test/JacobiTest.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,18 @@ import ApproxFunOrthogonalPolynomials: jacobip
377377
end
378378
end
379379
end
380+
381+
@testset "Multiplication" begin
382+
xJ = Fun(NormalizedJacobi(1,1))
383+
xC = Fun()
384+
xNC = Fun(NormalizedChebyshev())
385+
@test (Multiplication(xC) * xJ)(0.4) (0.4)^2
386+
@test (Multiplication(xNC) * xJ)(0.4) (0.4)^2
387+
@test ApproxFunBase.isbanded(Multiplication(xC, NormalizedLegendre()))
388+
@test ApproxFunBase.isbanded(Multiplication(xNC, NormalizedLegendre()))
389+
@test ApproxFunBase.isbanded(Multiplication(xC, NormalizedJacobi(1,1)))
390+
@test ApproxFunBase.isbanded(Multiplication(xNC, NormalizedJacobi(1,1)))
391+
end
380392
end
381393

382394
@testset "casting bug ApproxFun.jl#770" begin

0 commit comments

Comments
 (0)