@@ -100,6 +100,7 @@ clenshaw(c::AbstractVector,x::AbstractVector,plan::ClenshawPlan{S,V}) where {S<:
100
100
clenshaw (c:: AbstractVector ,x:: Vector ,plan:: ClenshawPlan{<:Chebyshev} ) = chebyshev_clenshaw (c,x,plan)
101
101
102
102
function clenshaw (c:: AbstractMatrix{T} ,x:: T ,plan:: ClenshawPlan{S,T} ) where {S<: Chebyshev ,T<: Number }
103
+ Base. require_one_based_indexing (x, c)
103
104
bk= plan. bk
104
105
bk1= plan. bk1
105
106
bk2= plan. bk2
@@ -130,6 +131,7 @@ function clenshaw(c::AbstractMatrix{T},x::T,plan::ClenshawPlan{S,T}) where {S<:C
130
131
end
131
132
132
133
function clenshaw (c:: AbstractMatrix{T} ,x:: AbstractVector{T} ,plan:: ClenshawPlan{S,T} ) where {S<: Chebyshev ,T<: Number }
134
+ Base. require_one_based_indexing (x, c)
133
135
bk= plan. bk
134
136
bk1= plan. bk1
135
137
bk2= plan. bk2
163
165
# overwrite x
164
166
165
167
function clenshaw! (c:: AbstractVector ,x:: AbstractVector ,plan:: ClenshawPlan{S,V} ) where {S<: Chebyshev ,V}
168
+ Base. require_one_based_indexing (x, c)
166
169
N,n = length (c),length (x)
167
170
168
171
if isempty (c)
@@ -201,11 +204,19 @@ end
201
204
202
205
203
206
# diff T -> U, then convert U -> T
204
- integrate (f:: Fun{Chebyshev{D,R}} ) where {D<: IntervalOrSegment ,R} =
205
- Fun (f. space,fromcanonicalD (f,0 )* ultraint! (ultraconversion (f. coefficients)))
206
- differentiate (f:: Fun{Chebyshev{D,R}} ) where {D<: IntervalOrSegment ,R} =
207
- Fun (f. space,1 / fromcanonicalD (f,0 )* ultraiconversion (ultradiff (f. coefficients)))
208
-
207
+ function integrate (f:: Fun{Chebyshev{D,R}} ) where {D<: IntervalOrSegment ,R}
208
+ cfs = coefficients (f)
209
+ z = fromcanonicalD (f,0 )
210
+ v = z .* float .(cfs)
211
+ ultraint! (ultraconversion! (v))
212
+ Fun (f. space, v)
213
+ end
214
+ function differentiate (f:: Fun{Chebyshev{D,R}} ) where {D<: IntervalOrSegment ,R}
215
+ cfs = coefficients (f)
216
+ z = fromcanonicalD (f,0 )
217
+ v = ultraiconversion (ultradiff (cfs)) ./ z
218
+ Fun (f. space, v)
219
+ end
209
220
210
221
211
222
@@ -220,7 +231,7 @@ function squarepoints(::Type{T}, N) where T
220
231
pts = paduapoints (T, _padua_length (N))
221
232
n = size (pts,1 )
222
233
ret = Array {SVector{2,T}} (undef, n)
223
- @inbounds for k= 1 : n
234
+ @inbounds for k in eachindex (ret)
224
235
ret[k] = SVector {2,T} (pts[k,1 ],pts[k,2 ])
225
236
end
226
237
ret
0 commit comments