@@ -11,7 +11,7 @@ import Base: @_inline_meta, axes, getindex, unsafe_getindex, convert, prod, *, /
11
11
IndexStyle, IndexLinear, == , OneTo, tail, similar, copyto!, copy, setindex,
12
12
first, last, Slice, size, length, axes, IdentityUnitRange, sum, _sum, cumsum,
13
13
to_indices, tail, getproperty, inv, show, isapprox, summary,
14
- findall, searchsortedfirst
14
+ findall, searchsortedfirst, diff
15
15
import Base. Broadcast: materialize, BroadcastStyle, broadcasted, Broadcasted
16
16
import LazyArrays: MemoryLayout, Applied, ApplyStyle, flatten, _flatten, adjointlayout,
17
17
sub_materialize, arguments, sub_paddeddata, paddeddata, PaddedLayout, resizedata!, LazyVector, ApplyLayout, call,
@@ -30,15 +30,15 @@ import QuasiArrays: cardinality, checkindex, QuasiAdjoint, QuasiTranspose, Inclu
30
30
ApplyQuasiArray, ApplyQuasiMatrix, LazyQuasiArrayApplyStyle, AbstractQuasiArrayApplyStyle,
31
31
LazyQuasiArray, LazyQuasiVector, LazyQuasiMatrix, LazyLayout, LazyQuasiArrayStyle,
32
32
_getindex, layout_getindex, _factorize, AbstractQuasiArray, AbstractQuasiMatrix, AbstractQuasiVector,
33
- AbstractQuasiFill, _dot, _equals, QuasiArrayLayout, PolynomialLayout
33
+ AbstractQuasiFill, _equals, QuasiArrayLayout, PolynomialLayout, diff_layout
34
34
35
35
import InfiniteArrays: OneToInf, InfAxes, Infinity, AbstractInfUnitRange, InfiniteCardinal, InfRanges
36
36
import InfiniteLinearAlgebra: chop!, chop, pad, choplength, compatible_resize!
37
37
import ContinuumArrays: Basis, Weight, basis_axes, @simplify , Identity, AbstractAffineQuasiVector, ProjectionFactorization,
38
38
grid, plotgrid, _plotgrid, _grid, transform_ldiv, TransformFactorization, QInfAxes, broadcastbasis, ExpansionLayout, basismap,
39
- AffineQuasiVector, AffineMap, WeightLayout , AbstractWeightedBasisLayout, WeightedBasisLayout, WeightedBasisLayouts, demap, AbstractBasisLayout, BasisLayout,
39
+ AffineQuasiVector, AffineMap, AbstractWeightLayout , AbstractWeightedBasisLayout, WeightedBasisLayout, WeightedBasisLayouts, demap, AbstractBasisLayout, BasisLayout,
40
40
checkpoints, weight, unweighted, MappedBasisLayouts, sum_layout, invmap, plan_ldiv, layout_broadcasted, MappedBasisLayout, SubBasisLayout, _broadcastbasis,
41
- plan_transform, plan_grid_transform, MAX_PLOT_POINTS, MulPlan
41
+ plan_transform, plan_grid_transform, MAX_PLOT_POINTS, MulPlan, grammatrix, AdjointBasisLayout, grammatrix_layout
42
42
import FastTransforms: Λ, forwardrecurrence, forwardrecurrence!, _forwardrecurrence!, clenshaw, clenshaw!,
43
43
_forwardrecurrence_next, _clenshaw_next, check_clenshaw_recurrences, ChebyshevGrid, chebyshevpoints, Plan, ScaledPlan, th_cheb2leg
44
44
160
160
gives the singularity structure of an expansion, e.g.,
161
161
`JacobiWeight`.
162
162
"""
163
- singularities (:: WeightLayout , w) = w
163
+ singularities (:: AbstractWeightLayout , w) = w
164
164
singularities (lay:: BroadcastLayout , a:: AbstractQuasiVector ) = singularitiesbroadcast (call (a), map (singularities, arguments (lay, a))... )
165
165
singularities (:: WeightedBasisLayouts , a) = singularities (BroadcastLayout {typeof(*)} (), a)
166
166
singularities (:: WeightedOPLayout , a) = singularities (weight (a))
@@ -182,17 +182,22 @@ singularities(r::Base.RefValue) = r[] # pass through
182
182
orthogonalityweight (P:: SubQuasiArray{<:Any,2,<:Any,<:Tuple{AbstractAffineQuasiVector,Slice}} ) =
183
183
orthogonalityweight (parent (P))[parentindices (P)[1 ]]
184
184
185
- function massmatrix (P:: SubQuasiArray{<:Any,2,<:Any,<:Tuple{AbstractAffineQuasiVector,Slice}} )
185
+
186
+ weighted (P:: AbstractQuasiMatrix ) = Weighted (P)
187
+
188
+ weightedgrammatrix (P) = weightedgrammatrix_layout (MemoryLayout (P), P)
189
+ function weightedgrammatrix_layout (:: MappedOPLayout , P)
186
190
Q = parent (P)
187
191
kr,jr = parentindices (P)
188
- massmatrix (Q)/ kr. A
192
+ @assert kr isa AbstractAffineQuasiVector
193
+ weightedgrammatrix (Q)/ kr. A
189
194
end
190
195
191
- weighted (P :: AbstractQuasiMatrix ) = Weighted ( P)
196
+ grammatrix_layout ( :: MappedOPLayout , P ) = grammatrix_layout ( MappedBasisLayout (), P)
192
197
193
198
OrthogonalPolynomial (w:: Weight ) = error (" Override for $(typeof (w)) " )
194
199
195
- @simplify * (B:: Identity , C:: OrthogonalPolynomial ) = C * jacobimatrix (C)
200
+ @simplify * (B:: Identity , C:: OrthogonalPolynomial ) = ApplyQuasiMatrix ( * , C, jacobimatrix (C) )
196
201
197
202
function layout_broadcasted (:: Tuple{PolynomialLayout,AbstractOPLayout} , :: typeof (* ), x:: Inclusion , C)
198
203
x == axes (C,1 ) || throw (DimensionMismatch ())
0 commit comments