Skip to content

Commit c84d868

Browse files
committed
Merge branch 'main' into dl/moveoutrecurrence
2 parents 20edaa4 + 56986e2 commit c84d868

File tree

6 files changed

+22
-9
lines changed

6 files changed

+22
-9
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ ContinuumArrays = "0.18.3"
3535
DomainSets = "0.6, 0.7"
3636
FFTW = "1.1"
3737
FastGaussQuadrature = "1"
38-
FastTransforms = "0.15.15, 0.16"
38+
FastTransforms = "0.16.6"
3939
FillArrays = "1"
4040
HypergeometricFunctions = "0.3.4"
4141
InfiniteArrays = " 0.14"

src/ClassicalOrthogonalPolynomials.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,10 +212,13 @@ singularitiesview(w, ::Inclusion) = w # for now just assume it doesn't change
212212
singularitiesview(w, ind) = view(w, ind)
213213
singularities(S::SubQuasiArray) = singularitiesview(singularities(parent(S)), parentindices(S)[1])
214214

215-
basis_axes(::Inclusion{<:Any,<:AbstractInterval}, v) = convert(AbstractQuasiMatrix{eltype(v)}, basis_singularities(singularities(v)))
216-
217215
struct NoSingularities end
218216

217+
basis_singularities(ax, ::NoSingularities) = basis(ax)
218+
basis_singularities(ax, sing) = basis_singularities(sing)
219+
basis_axes(ax::Inclusion{<:Any,<:AbstractInterval}, v) = convert(AbstractQuasiMatrix{eltype(v)}, basis_singularities(ax, singularities(v)))
220+
221+
219222
singularities(::Number) = NoSingularities()
220223
singularities(r::Base.RefValue) = r[] # pass through
221224

src/classical/chebyshev.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ weightedgrammatrix(::ChebyshevU{V}) where V = Diagonal(Fill(convert(V,π)/2,∞)
159159
@simplify *(A::QuasiAdjoint{<:Any,<:Weighted{<:Any,<:ChebyshevU}}, B::ChebyshevU) = weightedgrammatrix(ChebyshevU{promote_type(eltype(A),eltype(B))}())
160160

161161
function grammatrix(A::ChebyshevT{T}) where T
162-
f = (k,j) -> isodd(j-k) ? zero(T) : -(((1 + (-1)^(j + k))*(-1 + j^2 + k^2))/(j^4 + (-1 + k^2)^2 - 2j^2*(1 + k^2)))
162+
f = (k,j) -> isodd(j-k) ? zero(T) : -(T(2)*(-1 + j^2 + k^2))/((-1 + j - k)*(-1 + j + k)*(1 + j - k)*(1 + j + k))
163163
BroadcastMatrix{T}(f, 0:∞, (0:∞)')
164164
end
165165

@@ -170,13 +170,13 @@ end
170170

171171
@simplify function *(A::QuasiAdjoint{<:Any,<:ChebyshevT}, B::ChebyshevU)
172172
T = promote_type(eltype(A), eltype(B))
173-
f = (k,j) -> isodd(j-k) ? zero(T) : ((one(T) + (-1)^(j + k))*(1 + j))/((1 + j - k)*(1 + j + k))
173+
f = (k,j) -> isodd(j-k) ? zero(T) : (T(2)*(1 + j))/((1 + j - k)*(1 + j + k))
174174
BroadcastMatrix{T}(f, 0:∞, (0:∞)')
175175
end
176176

177177

178178
function grammatrix(A::Weighted{T,<:ChebyshevU}) where T
179-
f = (k,j) -> isodd(j-k) ? zero(T) : -((2*(one(T) + (-1)^(j + k))*(1 + j)*(1 + k))/((-1 + j - k)*(1 + j - k)*(1 + j + k)*(3 + j + k)))
179+
f = (k,j) -> isodd(j-k) ? zero(T) : -((T(4)*(1 + j)*(1 + k))/((-1 + j - k)*(1 + j - k)*(1 + j + k)*(3 + j + k)))
180180
BroadcastMatrix{T}(f, 0:∞, (0:∞)')
181181
end
182182

src/classical/jacobi.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,15 @@ hasboundedendpoints(w::AbstractJacobiWeight) = w.a ≥ 0 && w.b ≥ 0
5454
singularities(a::AbstractAffineQuasiVector) = singularities(a.x)
5555

5656

57+
## default is to just assume no singularities
58+
singularitiesbroadcast(_...) = NoSingularities()
59+
5760
for op in (:+, :*)
5861
@eval singularitiesbroadcast(::typeof($op), A, B, C, D...) = singularitiesbroadcast(*, singularitiesbroadcast(*, A, B), C, D...)
5962
end
6063

64+
singularitiesbroadcast(::typeof(*), V::Union{NoSingularities,SubQuasiArray}...) = singularitiesbroadcast(*, map(_parent,V)...)[_parentindices(V...)...]
65+
6166

6267
_parent(::NoSingularities) = NoSingularities()
6368
_parent(a) = parent(a)
@@ -66,7 +71,6 @@ _parentindices(a, b...) = parentindices(a)
6671
# for singularitiesbroadcast(literal_pow), ^, ...)
6772
singularitiesbroadcast(F::Function, G::Function, V::SubQuasiArray, K) = singularitiesbroadcast(F, G, parent(V), K)[parentindices(V)...]
6873
singularitiesbroadcast(F, V::Union{NoSingularities,SubQuasiArray}...) = singularitiesbroadcast(F, map(_parent,V)...)[_parentindices(V...)...]
69-
singularitiesbroadcast(::typeof(*), V::Union{NoSingularities,SubQuasiArray}...) = singularitiesbroadcast(*, map(_parent,V)...)[_parentindices(V...)...]
7074

7175

7276
abstract type AbstractJacobi{T} <: OrthogonalPolynomial{T} end

src/clenshaw.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11

2-
3-
42
# Assume 1 normalization
53
_p0(A) = one(eltype(A))
64

test/test_ultraspherical.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,4 +183,12 @@ using ClassicalOrthogonalPolynomials: grammatrix
183183
L = Weighted(Jacobi(1,0)) \ Weighted(Ultraspherical(3/2))
184184
@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]
185185
end
186+
187+
@testset "expand w/ no singularities" begin
188+
z = 2
189+
P = Legendre()
190+
C = Ultraspherical(-1/2)
191+
x = axes(P,1)
192+
@test sum(@.(ultrasphericalc(1, -1/2, x)/(z-x))) sum(C[:,2] ./ (z .- x))
193+
end
186194
end

0 commit comments

Comments
 (0)