@@ -143,72 +143,88 @@ conversion_rule(b::ChebyshevDirichlet,a::Chebyshev)=b
143143# # Evaluation Functional
144144
145145
146- bandwidths (B:: ConcreteEvaluation{ChebyshevDirichlet{1,0,D,R},typeof(leftendpoint)} ) where {D,R} = 0 ,0
147- bandwidths (B:: ConcreteEvaluation{ChebyshevDirichlet{1,0,D,R},typeof(rightendpoint)} ) where {D,R} = 0 ,ℵ₀
148- bandwidths (B:: ConcreteEvaluation{ChebyshevDirichlet{0,1,D,R},typeof(leftendpoint)} ) where {D,R} = 0 ,ℵ₀
149- bandwidths (B:: ConcreteEvaluation{ChebyshevDirichlet{0,1,D,R},typeof(rightendpoint)} ) where {D,R} = 0 ,0
150- bandwidths (B:: ConcreteEvaluation{ChebyshevDirichlet{1,1,D,R},typeof(leftendpoint)} ) where {D,R} = 0 ,1
151- bandwidths (B:: ConcreteEvaluation{ChebyshevDirichlet{1,1,D,R},typeof(rightendpoint)} ) where {D,R} = 0 ,1
146+ function bandwidths (B:: ConcreteEvaluation{<:ChebyshevDirichlet{1,0},<:SpecialEvalPtType} )
147+ pt = evaluation_point (B)
148+ if isleftendpoint (pt)
149+ 0 ,0
150+ else
151+ 0 ,ℵ₀
152+ end
153+ end
154+ function bandwidths (B:: ConcreteEvaluation{<:ChebyshevDirichlet{0,1},<:SpecialEvalPtType} )
155+ pt = evaluation_point (B)
156+ if isleftendpoint (pt)
157+ 0 ,ℵ₀
158+ else
159+ 0 ,0
160+ end
161+ end
162+ bandwidths (B:: ConcreteEvaluation{<:ChebyshevDirichlet{1,1},<:SpecialEvalPtType} ) = 0 ,1
152163
153- function getindex (B:: ConcreteEvaluation{ChebyshevDirichlet{1,0,D,R},typeof(leftendpoint)} ,kr:: AbstractRange ) where {D,R}
154- d = domain (B)
164+ function getindex (B:: ConcreteEvaluation{<:ChebyshevDirichlet,<:SpecialEvalPtType} , kr:: AbstractRange )
165+ _getindex_eval_endpoints (B, evaluation_point (B), kr)
166+ end
167+
168+ function _getindex_default (B:: ConcreteEvaluation{<:ChebyshevDirichlet} , x, kr)
169+ S = Space (domain (B))
170+ O = Evaluation (S,x,B. order) * Conversion (domainspace (B),S)
171+ O[kr]
172+ end
155173
174+ function _getindex_eval_leftendpoint (B:: ConcreteEvaluation{<:ChebyshevDirichlet{1,0}} , x, kr:: AbstractRange )
156175 if B. order == 0
157176 eltype (B)[k== 1 ? 1.0 : 0.0 for k= kr]
158177 else
159- ( Evaluation (d,B . x,B . order) * Conversion ( domainspace (B)))[kr]
178+ _getindex_default (B, x, kr)
160179 end
161180end
162181
163- function getindex (B:: ConcreteEvaluation{ChebyshevDirichlet{1,0,D,R},typeof(rightendpoint)} ,kr:: AbstractRange ) where {D,R}
164- d = domain (B)
165-
182+ function _getindex_eval_rightendpoint (B:: ConcreteEvaluation{<:ChebyshevDirichlet{1,0}} , x, kr:: AbstractRange )
166183 if B. order == 0
167184 eltype (B)[k== 1 ? 1.0 : 2.0 for k= kr]
168185 else
169- ( Evaluation (d,B . x,B . order) * Conversion ( domainspace (B)))[kr]
186+ _getindex_default (B, x, kr)
170187 end
171188end
172189
173- function getindex (B:: ConcreteEvaluation{ChebyshevDirichlet{0,1,D,R},typeof(leftendpoint)} , kr:: AbstractRange ) where {D,R}
190+ function _getindex_eval_leftendpoint (B:: ConcreteEvaluation{<: ChebyshevDirichlet{0,1}} , x, kr:: AbstractRange )
174191 S = Space (domain (B))
175192
176193 if B. order == 0
177194 eltype (B)[k== 1 ? 1.0 : - (- 1 )^ k* 2.0 for k= kr]
178195 else
179- ( Evaluation (S,B . x,B . order) * Conversion ( domainspace (B),S))[kr]
196+ _getindex_default (B, x, kr)
180197 end
181198end
182199
183- function getindex (B:: ConcreteEvaluation{ChebyshevDirichlet{0,1,D,R},typeof(rightendpoint)} , kr:: AbstractRange ) where {D,R}
200+ function _getindex_eval_rightendpoint (B:: ConcreteEvaluation{<: ChebyshevDirichlet{0,1}} , x, kr:: AbstractRange )
184201 S = Space (domain (B))
185202
186-
187203 if B. order == 0
188204 eltype (B)[k== 1 ? 1.0 : 0.0 for k= kr]
189205 else
190- ( Evaluation (S,B . x,B . order) * Conversion ( domainspace (B),S))[kr]
206+ _getindex_default (B, x, kr)
191207 end
192208end
193209
194210
195- function getindex (B:: ConcreteEvaluation{ChebyshevDirichlet{1,1,D,R},typeof(leftendpoint)} , kr:: AbstractRange ) where {D,R}
211+ function _getindex_eval_leftendpoint (B:: ConcreteEvaluation{<: ChebyshevDirichlet{1,1}} , x, kr:: AbstractRange )
196212 S = Space (domain (B))
197213
198214 if B. order == 0
199215 eltype (B)[k== 1 ? 1.0 : (k== 2 ? - 1.0 : 0.0 ) for k= kr]
200216 else
201- getindex ( Evaluation (S,B . x,B . order) * Conversion ( domainspace (B),S), kr)
217+ _getindex_default (B, x, kr)
202218 end
203219end
204220
205- function getindex (B:: ConcreteEvaluation{ChebyshevDirichlet{1,1,D,R},typeof(rightendpoint)} , kr:: AbstractRange ) where {D,R}
221+ function _getindex_eval_rightendpoint (B:: ConcreteEvaluation{<: ChebyshevDirichlet{1,1}} , x, kr:: AbstractRange )
206222 S = Space (domain (B))
207223
208224 if B. order == 0
209225 eltype (B)[k== 1 || k== 2 ? 1.0 : 0.0 for k= kr]
210226 else
211- getindex ( Evaluation (S,B . x,B . order) * Conversion ( domainspace (B),S), kr)
227+ _getindex_default (B, x, kr)
212228 end
213229end
214230
0 commit comments