Skip to content

Commit a21a0b8

Browse files
committed
Support Jacobi(-1,0)\Ultraspherical(-1/2)
1 parent 15d5f64 commit a21a0b8

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ClassicalOrthogonalPolynomials"
22
uuid = "b30e2e7b-c4ee-47da-9d5f-2c5c27239acd"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.15.3"
4+
version = "0.15.4"
55

66

77
[deps]

src/classical/ultraspherical.jl

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,16 @@ function \(A::Ultraspherical, B::Jacobi)
199199
Diagonal(Ã[1,:]./A[1,:]) * (Ã\B)
200200
end
201201
function \(A::Jacobi, B::Ultraspherical)
202-
= Jacobi(B)
203-
(A\B̃)*Diagonal(B[1,:]./B̃[1,:])
202+
if isone(-2B.λ) && (A.a, A.b) == (-1, 0)
203+
T = promote_type(eltype(A), eltype(B))
204+
n = -2one(T) ./ (2 .* (2:∞) .- one(T))
205+
dv = Vcat(one(T), -2one(T), n)
206+
ev = Vcat(-one(T), n)
207+
LazyBandedMatrices.Bidiagonal(dv, ev, :U)
208+
else
209+
= Jacobi(B)
210+
(A\B̃)*Diagonal(B[1,:]./B̃[1,:])
211+
end
204212
end
205213

206214
function \(wA::Weighted{<:Any,<:Ultraspherical}, wB::Weighted{<:Any,<:Jacobi})

test/test_ultraspherical.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,14 @@ using ClassicalOrthogonalPolynomials: grammatrix
207207
@testset "ChebyshevInterval constructior" begin
208208
@test ultraspherical(2,ChebyshevInterval()) Ultraspherical(2)
209209
end
210+
end
211+
212+
@testset "Jacobi(-1, 0) \ Ultraspherical(-1/2)" begin
213+
A = Jacobi(-1, 0)
214+
B = Ultraspherical(-1/2)
215+
R = A \ B
216+
AR = A * R
217+
lhs = AR[0.3918, 1:100]
218+
rhs = B[0.3918, 1:100]
219+
@test lhs rhs
210220
end

0 commit comments

Comments
 (0)