7272
7373
7474
75- function BandedMatrix (S:: SubOperator {T,ConcreteDerivative{Chebyshev{DD,RR},K ,T},
76- NTuple{2 ,UnitRange{Int}}}) where {T,K,DD,RR }
75+ function BandedMatrix (S:: SubOperator {T,<: ConcreteDerivative{<: Chebyshev,<:Any ,T} ,
76+ NTuple{2 ,UnitRange{Int}}}) where {T}
7777
7878 n,m = size (S)
7979 ret = BandedMatrix {eltype(S)} (undef, (n,m), bandwidths (S))
@@ -98,8 +98,8 @@ function BandedMatrix(S::SubOperator{T,ConcreteDerivative{Chebyshev{DD,RR},K,T},
9898end
9999
100100
101- function BandedMatrix (S:: SubOperator {T,ConcreteDerivative{Ultraspherical{LT,DD,RR},K ,T},
102- NTuple{2 ,UnitRange{Int}}}) where {T,K,DD,RR,LT }
101+ function BandedMatrix (S:: SubOperator {T,<: ConcreteDerivative{<: Ultraspherical,T} ,
102+ NTuple{2 ,UnitRange{Int}}}) where {T}
103103 n,m = size (S)
104104 ret = BandedMatrix {eltype(S)} (undef, (n,m), bandwidths (S))
105105 kr,jr = parentindices (S)
@@ -116,3 +116,18 @@ function BandedMatrix(S::SubOperator{T,ConcreteDerivative{Ultraspherical{LT,DD,R
116116 ret
117117end
118118
119+ function BandedMatrix (S:: SubOperator {T,<: ConcreteDerivative{<:NormalizedPolynomialSpace,<:Any,T} ,
120+ NTuple{2 ,UnitRange{Int}}}) where {T}
121+
122+ D = parent (S)
123+ sp = domainspace (D)
124+ csp = canonicalspace (sp)
125+ ind1, ind2 = parentindices (S)
126+ B = BandedMatrix (view (ConcreteDerivative (csp, D. order), ind1, ind2))
127+ data = BandedMatrices. bandeddata (B)
128+ C = ConcreteConversion (sp, csp)
129+ for (ind, col) in enumerate (ind2)
130+ @views data[:, ind] .*= C[col, col]
131+ end
132+ B
133+ end
0 commit comments