@@ -57,7 +57,7 @@ associated(::ChebyshevT{T}) where T = ChebyshevU{T}()
57
57
associated (:: ChebyshevU{T} ) where T = ChebyshevU {T} ()
58
58
59
59
60
- const StieltjesPoint{T,V,D} = BroadcastQuasiMatrix{T,typeof (inv),Tuple{BroadcastQuasiMatrix{T,typeof (- ),Tuple{T ,QuasiAdjoint{V,Inclusion{V,D}}}}}}
60
+ const StieltjesPoint{T,W <: Number , V,D} = BroadcastQuasiMatrix{T,typeof (inv),Tuple{BroadcastQuasiMatrix{T,typeof (- ),Tuple{W ,QuasiAdjoint{V,Inclusion{V,D}}}}}}
61
61
const ConvKernel{T,D1,D2} = BroadcastQuasiMatrix{T,typeof (- ),Tuple{D1,QuasiAdjoint{T,D2}}}
62
62
const Hilbert{T,D1,D2} = BroadcastQuasiMatrix{T,typeof (inv),Tuple{ConvKernel{T,Inclusion{T,D1},Inclusion{T,D2}}}}
63
63
const LogKernel{T,D1,D2} = BroadcastQuasiMatrix{T,typeof (log),Tuple{BroadcastQuasiMatrix{T,typeof (abs),Tuple{ConvKernel{T,Inclusion{T,D1},Inclusion{T,D2}}}}}}
203
203
P = wP. P
204
204
w = orthogonalityweight (P)
205
205
X = jacobimatrix (P)
206
- z, x = parent (S). args[1 ]. args
207
- z in axes (P,1 ) && transpose ((inv .(x .- x ' ) * wP)[ z,:] )
206
+ z, xc = parent (S). args[1 ]. args
207
+ z in axes (P,1 ) && return transpose (view (inv .(xc ' .- xc ) * wP, z,:) )
208
208
transpose ((X' - z* I) \ [- sum (w)* _p0 (P); zeros (∞)])
209
209
end
210
210
@@ -213,8 +213,8 @@ sqrtx2(x::Real) = sign(x)*sqrt(x^2-1)
213
213
214
214
@simplify function * (S:: StieltjesPoint , wP:: Weighted{<:Any,<:ChebyshevU} )
215
215
T = promote_type (eltype (S), eltype (wP))
216
- z, x = parent (S). args[1 ]. args
217
- z in axes (wP,1 ) && transpose (( inv .(x .- x ' ) * wP )[z,:])
216
+ z, xc = parent (S). args[1 ]. args
217
+ z in axes (wP,1 ) && return ( convert (T,π) * ChebyshevT ( )[z,2 : end ]) '
218
218
ξ = inv (z + sqrtx2 (z))
219
219
transpose (convert (T,π) * ξ.^ oneto (∞))
220
220
end
@@ -231,7 +231,7 @@ mutable struct HilbertVandermonde{T,MM} <: AbstractCachedMatrix{T}
231
231
colsupport:: Vector{Int}
232
232
end
233
233
234
- HilbertVandermonde (M, data:: Matrix ) = HilbertVandermonde (M, data, size (data), Int[] )
234
+ HilbertVandermonde (M, data:: Matrix ) = HilbertVandermonde (M, data, size (data), fill ( size (data, 1 ), size (data, 2 )) )
235
235
size (H:: HilbertVandermonde ) = (ℵ₀,ℵ₀)
236
236
function colsupport (H:: HilbertVandermonde , j)
237
237
resizedata! (H, H. datasize[1 ], maximum (j))
256
256
@simplify function * (H:: Hilbert{<:Any,<:Any,<:ChebyshevInterval} , W:: Weighted{<:Any,<:ChebyshevU} )
257
257
x = axes (H,1 )
258
258
T̃ = chebyshevt (x)
259
- ψ_1 = T̃ \ inv .(x .+ sqrtx2 .(x))
259
+ ψ_1 = T̃ \ inv .(x .+ sqrtx2 .(x)) # same ψ_1 = x .- sqrt(x^2 - 1) but with relative accuracy as x -> ∞
260
260
data = convert (eltype (H),π) * Matrix (reshape (paddeddata (ψ_1),:,1 ))
261
+ # Operator has columns π * ψ_1^k
261
262
T̃ * HilbertVandermonde (Clenshaw (T̃ * ψ_1, T̃), data)
262
263
end
263
264
0 commit comments