Skip to content

Commit 52564bf

Browse files
authored
Overloads for Weighted Jacobi (#191)
* Overloads for Weighted Jacobi * Update test_ultraspherical.jl * Update test_ultraspherical.jl
1 parent 6836468 commit 52564bf

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/classical/jacobi.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,9 +377,9 @@ function \(w_A::WeightedJacobi, w_B::WeightedJacobi)
377377

378378
if wA == wB
379379
A \ B
380-
elseif B.a == A.a && B.b == A.b+1 && wB.b == wA.b+1 && wB.a == wA.a
380+
elseif B.a A.a && B.b A.b+1 && wB.b wA.b+1 && wB.a wA.a
381381
Bidiagonal(((2:2:∞) .+ 2A.b)./((2:2:∞) .+ (A.a+A.b)), (2:2:∞)./((2:2:∞) .+ (A.a+A.b)), :L)
382-
elseif B.a == A.a+1 && B.b == A.b && wB.b == wA.b && wB.a == wA.a+1
382+
elseif B.a A.a+1 && B.b A.b && wB.b wA.b && wB.a wA.a+1
383383
Bidiagonal(((2:2:∞) .+ 2A.a)./((2:2:∞) .+ (A.a+A.b)), -(2:2:∞)./((2:2:∞) .+ (A.a+A.b)), :L)
384384
elseif wB.a wA.a+1 && B.a > 0
385385
J = JacobiWeight(wB.a-1,wB.b) .* Jacobi(B.a-1,B.b)
@@ -405,6 +405,7 @@ end
405405
\(w_A::Weighted{<:Any,<:Jacobi}, w_B::WeightedJacobi) = convert(WeightedBasis,w_A) \ w_B
406406
\(A::Jacobi, w_B::Weighted{<:Any,<:Jacobi}) = A \ convert(WeightedBasis,w_B)
407407

408+
\(w_A::Weighted{<:Any,<:Jacobi}, B::Legendre) = w_A \ Weighted(Jacobi(B))
408409
\(A::Legendre, wB::WeightedJacobi) = Jacobi(A) \ wB
409410

410411
##########

src/classical/ultraspherical.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,20 @@ function \(A::Jacobi, B::Ultraspherical)
183183
(A\B̃)*Diagonal(B[1,:]./B̃[1,:])
184184
end
185185

186+
function \(wA::Weighted{<:Any,<:Ultraspherical}, wB::Weighted{<:Any,<:Jacobi})
187+
A = wA.P
188+
= Jacobi(A)
189+
Diagonal(Ã[1,:]./A[1,:]) * (Weighted(Ã)\wB)
190+
end
191+
192+
function \(wA::Weighted{<:Any,<:Jacobi}, wB::Weighted{<:Any,<:Ultraspherical})
193+
B = wB.P
194+
= Jacobi(B)
195+
(wA\Weighted(B̃))*Diagonal(B[1,:]./B̃[1,:])
196+
end
197+
198+
199+
186200
function \(U::Ultraspherical{<:Any,<:Integer}, C::ChebyshevT)
187201
T = promote_type(eltype(U), eltype(C))
188202
(U\Ultraspherical{T}(1)) * (ChebyshevU{T}()\C)

test/test_ultraspherical.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,10 @@ using ClassicalOrthogonalPolynomials: grammatrix
177177
@test P[0.1,1:5] P̃[0.1,1:5]
178178
@test (P \ Weighted(C))[1:10,1:10] (P \ Weighted(Jacobi(1,1)))[1:10,1:10] * (Jacobi(1,1) \ C)[1:10,1:10]
179179
end
180+
@testset "Weighted(Jacobi) and Weighted(Ultraspherical)" begin
181+
L = Weighted(Ultraspherical(1/2)) \ Weighted(Jacobi(1,0))
182+
@test L[1:10,1:10] == (Legendre() \ Weighted(Jacobi(1,0)))[1:10,1:10]
183+
L = Weighted(Jacobi(1,0)) \ Weighted(Ultraspherical(3/2))
184+
@test L[1:10,1:10] == (Weighted(Jacobi(1,0)) \ Weighted(Jacobi(1,1)))[1:10,1:10] * (Jacobi(1,1) \ Ultraspherical(3/2))[1:10,1:10]
185+
end
180186
end

0 commit comments

Comments
 (0)