Skip to content

Commit 2d3239f

Browse files
authored
DefiniteIntegral and Multiplication in NormalizedPolynomialSpace (#64)
* DefiniteIntegral and Multiplication in NormalizedPolynomialSpace * explicit test for DefiniteIntegral * tests for isapproxhalfoddinteger
1 parent 24efebd commit 2d3239f

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

src/ApproxFunSingularities.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ isapproxhalfoddinteger(::Integer) = false
5454
isequalminhalf(x) = x == -0.5
5555
isequalminhalf(::Integer) = false
5656

57+
const MaybeNormalizedPolynomialSpace{S<:PolynomialSpace} = Union{S, NormalizedPolynomialSpace{S}}
58+
5759
include("divide_singularity.jl")
5860
include("JacobiWeight.jl")
5961
include("JacobiWeightOperators.jl")

src/JacobiWeightOperators.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ for (Func,Len) in ((:(Base.sum),:complexlength), (:linesum,:arclength))
4040
return 0.5*$Len(d)*dotu(f.coefficients,c)
4141
end
4242
end
43-
$Func(f::Fun{<:JacobiWeight{<:PolynomialSpace}}) =
43+
$Func(f::Fun{<:JacobiWeight{<:MaybeNormalizedPolynomialSpace}}) =
4444
$Func(Fun(f,JacobiWeight(space(f).β, space(f).α, Chebyshev(domain(f)))))
4545
end
4646
end
@@ -219,7 +219,7 @@ function Multiplication(f::Fun, S::JacobiWeight)
219219
MultiplicationWrapper(f,SpaceOperator(M,S,rsp))
220220
end
221221

222-
function Multiplication(f::Fun{<:JacobiWeight},S::PolynomialSpace)
222+
function Multiplication(f::Fun{<:JacobiWeight},S::MaybeNormalizedPolynomialSpace)
223223
M=Multiplication(Fun(space(f).space,f.coefficients),S)
224224
rsp=JacobiWeight(space(f).β,space(f).α,rangespace(M))
225225
MultiplicationWrapper(f,SpaceOperator(M,S,rsp))

test/runtests.jl

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ using ApproxFunBaseTest: testbandedoperator, testtransforms, testfunctional,
99
using ApproxFunOrthogonalPolynomials
1010
using ApproxFunOrthogonalPolynomials: order
1111
using ApproxFunSingularities
12-
using LinearAlgebra
12+
using HalfIntegers
1313
using IntervalSets
14+
using LinearAlgebra
15+
using OddEvenIntegers
1416
using SpecialFunctions
1517
using Test
1618

@@ -23,6 +25,13 @@ using Aqua
2325
project_toml_formatting = VERSION >= v"1.9")
2426
end
2527

28+
@testset "utility function" begin
29+
@test ApproxFunSingularities.isapproxhalfoddinteger(0.5)
30+
@test ApproxFunSingularities.isapproxhalfoddinteger(half(1))
31+
@test ApproxFunSingularities.isapproxhalfoddinteger(half(Odd(1)))
32+
@test !ApproxFunSingularities.isapproxhalfoddinteger(1)
33+
end
34+
2635
@testset "Sqrt" begin
2736
x=Fun(identity);
2837
@time @test sqrt(cos/2*x))(.1) sqrt(cos(.1π/2))
@@ -95,6 +104,10 @@ end
95104
x = Fun()
96105
M = Multiplication(x, JacobiWeight(0,0,Chebyshev()))
97106
@test exp(M).f == Multiplication(exp(x), Chebyshev()).f
107+
108+
g = Fun(x->(1-x^2), JacobiWeight(0.5, 0.5, Jacobi(1,1)))
109+
xg = Fun(x->x*√(1-x^2), JacobiWeight(0.5, 0.5, Jacobi(1,1)))
110+
@test Multiplication(g) * Fun(NormalizedLegendre()) xg
98111
end
99112

100113
@testset "Derivative" begin
@@ -492,6 +505,11 @@ end
492505
f = Fun(exp, S)
493506
@test convert(Number, B*f) sum(Fun(exp,domain(S)))
494507
end
508+
509+
f = Fun(x->(1-x^2), JacobiWeight(0.5, 0.5, NormalizedJacobi(1,1)))
510+
g = Fun(x->(1-x^2), JacobiWeight(0.5, 0.5, Jacobi(1,1)))
511+
@test sum(f) sum(g) π/2
512+
@test DefiniteIntegral() * f DefiniteIntegral() * g π/2
495513
end
496514
end
497515

0 commit comments

Comments
 (0)