Skip to content

Commit 6cdfc10

Browse files
CompatHelper: bump compat for "QuasiArrays" to "0.9" (#55)
* CompatHelper: bump compat for "QuasiArrays" to "0.9" * Update Project.toml * tests pass Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Sheehan Olver <[email protected]>
1 parent 5ffbaae commit 6cdfc10

File tree

3 files changed

+40
-28
lines changed

3 files changed

+40
-28
lines changed

Project.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
1919
[compat]
2020
ArrayLayouts = "0.7"
2121
BandedMatrices = "0.16"
22-
ClassicalOrthogonalPolynomials = "0.4.2"
23-
ContinuumArrays = "0.9"
24-
FillArrays = "0.11.5, 0.12"
22+
ClassicalOrthogonalPolynomials = "0.5"
23+
ContinuumArrays = "0.10"
24+
FillArrays = "0.12"
2525
HypergeometricFunctions = "0.3.4"
2626
InfiniteArrays = "0.12"
2727
LazyArrays = "0.22"
28-
QuasiArrays = "0.8"
28+
QuasiArrays = "0.9"
2929
SpecialFunctions = "1.0"
3030
julia = "1.6"
3131

src/SemiclassicalOrthogonalPolynomials.jl

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ import Base: getindex, axes, size, \, /, *, +, -, summary, ==, copy, sum, unsafe
77

88
import ArrayLayouts: MemoryLayout, ldiv, diagonaldata, subdiagonaldata, supdiagonaldata
99
import BandedMatrices: bandwidths, AbstractBandedMatrix, BandedLayout, _BandedMatrix
10-
import LazyArrays: resizedata!, paddeddata, CachedVector, CachedMatrix, CachedAbstractVector, LazyMatrix, LazyVector, arguments, ApplyLayout, colsupport, AbstractCachedVector, AccumulateAbstractVector, LazyVector, AbstractCachedMatrix
11-
import ClassicalOrthogonalPolynomials: OrthogonalPolynomial, recurrencecoefficients, jacobimatrix, normalize, _p0, UnitInterval, orthogonalityweight, NormalizedBasisLayout,
10+
import LazyArrays: resizedata!, paddeddata, CachedVector, CachedMatrix, CachedAbstractVector, LazyMatrix, LazyVector, arguments, ApplyLayout, colsupport, AbstractCachedVector,
11+
AccumulateAbstractVector, LazyVector, AbstractCachedMatrix, BroadcastLayout
12+
import ClassicalOrthogonalPolynomials: OrthogonalPolynomial, recurrencecoefficients, jacobimatrix, normalize, _p0, UnitInterval, orthogonalityweight, NormalizedOPLayout,
1213
Bidiagonal, Tridiagonal, SymTridiagonal, symtridiagonalize, normalizationconstant, LanczosPolynomial,
13-
OrthogonalPolynomialRatio, Weighted, Expansion, UnionDomain, oneto, Hilbert, WeightedOrthogonalPolynomial, HalfWeighted,
14-
Associated, golubwelsch, associated
14+
OrthogonalPolynomialRatio, Weighted, WeightLayout, UnionDomain, oneto, Hilbert, WeightedBasis, HalfWeighted,
15+
Associated, golubwelsch, associated, AbstractOPLayout, weight
1516
import InfiniteArrays: OneToInf, InfUnitRange
16-
import ContinuumArrays: basis, Weight, @simplify, AbstractBasisLayout, BasisLayout, MappedBasisLayout, grid, plotgrid
17+
import ContinuumArrays: basis, Weight, @simplify, AbstractBasisLayout, BasisLayout, MappedBasisLayout, grid, plotgrid, _equals, ExpansionLayout
1718
import FillArrays: SquareEye
1819
import HypergeometricFunctions: _₂F₁general2
1920

@@ -61,16 +62,16 @@ function ==(A::SemiclassicalJacobiWeight, B::SemiclassicalJacobiWeight)
6162
(A.t == B.t && A.c == B.c))
6263
end
6364

64-
function Expansion(w::SemiclassicalJacobiWeight{T}) where T
65+
function jacobiexpansion(w::SemiclassicalJacobiWeight{T}) where T
6566
t,a,b,c = w.t,w.a,w.b,w.c
6667
P = jacobi(b, a, UnitInterval{T}())
6768
x = axes(P,1)
6869
# TODO: simplify
6970
LanczosPolynomial(@.(x^a * (1-x)^b * (t-x)^c), P).w
7071
end
7172

72-
==(A::SemiclassicalJacobiWeight, B::Expansion) = Expansion(A) == B
73-
==(A::Expansion, B::SemiclassicalJacobiWeight) = A == Expansion(B)
73+
_equals(::WeightLayout, ::ExpansionLayout, A::SemiclassicalJacobiWeight, B) = jacobiexpansion(A) == B
74+
_equals(::ExpansionLayout, ::WeightLayout, A, B::SemiclassicalJacobiWeight) = A == jacobiexpansion(B)
7475

7576

7677
"""
@@ -289,11 +290,11 @@ function semijacobi_ldiv(P::SemiclassicalJacobi, Q)
289290
(P \ R) * _p0(R̃) * (R̃ \ Q)
290291
end
291292

292-
struct SemiclassicalJacobiLayout <: AbstractBasisLayout end
293+
struct SemiclassicalJacobiLayout <: AbstractOPLayout end
293294
MemoryLayout(::Type{<:SemiclassicalJacobi}) = SemiclassicalJacobiLayout()
294295

295-
copy(L::Ldiv{<:NormalizedBasisLayout,SemiclassicalJacobiLayout}) = copy(Ldiv{ApplyLayout{typeof(*)},SemiclassicalJacobiLayout}(L.A, L.B))
296-
copy(L::Ldiv{SemiclassicalJacobiLayout,<:NormalizedBasisLayout}) = copy(Ldiv{SemiclassicalJacobiLayout,ApplyLayout{typeof(*)}}(L.A, L.B))
296+
copy(L::Ldiv{<:NormalizedOPLayout,SemiclassicalJacobiLayout}) = copy(Ldiv{ApplyLayout{typeof(*)},SemiclassicalJacobiLayout}(L.A, L.B))
297+
copy(L::Ldiv{SemiclassicalJacobiLayout,<:NormalizedOPLayout}) = copy(Ldiv{SemiclassicalJacobiLayout,ApplyLayout{typeof(*)}}(L.A, L.B))
297298

298299
copy(L::Ldiv{ApplyLayout{typeof(*)},SemiclassicalJacobiLayout}) = copy(Ldiv{ApplyLayout{typeof(*)},BasisLayout}(L.A, L.B))
299300
copy(L::Ldiv{SemiclassicalJacobiLayout,ApplyLayout{typeof(*)}}) = copy(Ldiv{BasisLayout,ApplyLayout{typeof(*)}}(L.A, L.B))
@@ -306,6 +307,8 @@ copy(L::Ldiv{SemiclassicalJacobiLayout,WeightedOPLayout}) = copy(Ldiv{BasisLayou
306307

307308

308309
copy(L::Ldiv{SemiclassicalJacobiLayout}) = semijacobi_ldiv(L.A, L.B)
310+
copy(L::Ldiv{SemiclassicalJacobiLayout,<:AbstractBasisLayout}) = semijacobi_ldiv(L.A, L.B)
311+
copy(L::Ldiv{SemiclassicalJacobiLayout,BroadcastLayout{typeof(*)}}) = semijacobi_ldiv(L.A, L.B)
309312
copy(L::Ldiv{<:Any,SemiclassicalJacobiLayout}) = semijacobi_ldiv(L.A, L.B)
310313
copy(L::Ldiv{<:AbstractBasisLayout,SemiclassicalJacobiLayout}) = semijacobi_ldiv(L.A, L.B)
311314
function copy(L::Ldiv{SemiclassicalJacobiLayout,SemiclassicalJacobiLayout})
@@ -353,6 +356,8 @@ function \(w_A::WeightedSemiclassicalJacobi, w_B::WeightedSemiclassicalJacobi)
353356
end
354357
end
355358

359+
\(P::SemiclassicalJacobi, Q::Weighted{<:Any,<:SemiclassicalJacobi}) = P \ convert(WeightedBasis, Q)
360+
356361
\(A::SemiclassicalJacobi, w_B::WeightedSemiclassicalJacobi) = (SemiclassicalJacobiWeight(A.t,0,0,0) .* A) \ w_B
357362

358363

@@ -395,13 +400,20 @@ end
395400
# sqrt(1-(1-x)^2) == sqrt(2x-x^2) == sqrt(x)*sqrt(2-x)
396401
# sqrt(1-(1-x)^2) == sqrt(2x-x^2) == sqrt(x)*sqrt(2-x)
397402

398-
convert(::Type{WeightedOrthogonalPolynomial}, Q::HalfWeighted{:a,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,zero(T),zero(T)) .* Q.P
399-
convert(::Type{WeightedOrthogonalPolynomial}, Q::HalfWeighted{:b,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),Q.P.b,zero(T)) .* Q.P
400-
convert(::Type{WeightedOrthogonalPolynomial}, Q::HalfWeighted{:c,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),zero(T),Q.P.c) .* Q.P
403+
weight(W::HalfWeighted{:a,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(W.P.t, W.P.a,zero(T),zero(T))
404+
weight(W::HalfWeighted{:b,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(W.P.t, zero(T),W.P.b,zero(T))
405+
weight(W::HalfWeighted{:c,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(W.P.t, zero(T),zero(T),W.P.c)
406+
weight(W::HalfWeighted{:ab,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(W.P.t, W.P.a,W.P.b,zero(T))
407+
weight(W::HalfWeighted{:ac,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(W.P.t, W.P.a,zero(T),W.P.c)
408+
weight(W::HalfWeighted{:bc,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(W.P.t, zero(T),W.P.b,W.P.c)
409+
410+
convert(::Type{WeightedBasis}, Q::HalfWeighted{:a,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,zero(T),zero(T)) .* Q.P
411+
convert(::Type{WeightedBasis}, Q::HalfWeighted{:b,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),Q.P.b,zero(T)) .* Q.P
412+
convert(::Type{WeightedBasis}, Q::HalfWeighted{:c,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),zero(T),Q.P.c) .* Q.P
401413

402-
convert(::Type{WeightedOrthogonalPolynomial}, Q::HalfWeighted{:ab,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,Q.P.b,zero(T)) .* Q.P
403-
convert(::Type{WeightedOrthogonalPolynomial}, Q::HalfWeighted{:bc,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),Q.P.b,Q.P.c) .* Q.P
404-
convert(::Type{WeightedOrthogonalPolynomial}, Q::HalfWeighted{:ac,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,zero(T),Q.P.c) .* Q.P
414+
convert(::Type{WeightedBasis}, Q::HalfWeighted{:ab,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,Q.P.b,zero(T)) .* Q.P
415+
convert(::Type{WeightedBasis}, Q::HalfWeighted{:bc,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, zero(T),Q.P.b,Q.P.c) .* Q.P
416+
convert(::Type{WeightedBasis}, Q::HalfWeighted{:ac,T,<:SemiclassicalJacobi}) where T = SemiclassicalJacobiWeight(Q.P.t, Q.P.a,zero(T),Q.P.c) .* Q.P
405417

406418

407419
include("derivatives.jl")

test/runtests.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using SemiclassicalOrthogonalPolynomials
22
using ClassicalOrthogonalPolynomials, ContinuumArrays, BandedMatrices, QuasiArrays, Test, LazyArrays, FillArrays, LinearAlgebra
33
import BandedMatrices: _BandedMatrix
4-
import SemiclassicalOrthogonalPolynomials: op_lowering, RaisedOP
5-
import ClassicalOrthogonalPolynomials: recurrencecoefficients, orthogonalityweight, symtridiagonalize, Expansion
4+
import SemiclassicalOrthogonalPolynomials: op_lowering, RaisedOP, jacobiexpansion
5+
import ClassicalOrthogonalPolynomials: recurrencecoefficients, orthogonalityweight, symtridiagonalize
66

77
@testset "Jacobi" begin
88
P = Normalized(Legendre())
@@ -12,11 +12,11 @@ import ClassicalOrthogonalPolynomials: recurrencecoefficients, orthogonalityweig
1212
@test symtridiagonalize(jacobimatrix(Q))[1:10,1:10] jacobimatrix(Normalized(Jacobi(0,1)))[1:10,1:10]
1313

1414
L = op_lowering(P,1)
15-
= P \ WeightedJacobi(1,0)
15+
= P \ Weighted(Jacobi(1,0))
1616
# off by scaling
1717
@test (L ./ L̃)[5,5] (L ./ L̃)[6,5]
1818
L = op_lowering(P,-1)
19-
= P \ WeightedJacobi(0,1)
19+
= P \ Weighted(Jacobi(0,1))
2020
@test (L ./ L̃)[5,5] (L ./ L̃)[6,5]
2121

2222
t = 2
@@ -32,10 +32,10 @@ end
3232
w = SemiclassicalJacobiWeight(2,a,b,c)
3333
@test w[0.1] 0.1^a * (1-0.1)^b * (2-0.1)^c
3434
@test sum(w) 0.8387185832077594 #Mathematica
35-
@test Expansion(w)[0.1] w[0.1]
35+
@test jacobiexpansion(w)[0.1] w[0.1]
3636
@test copy(w) == w
37-
@test Expansion(w) == w
38-
@test w == Expansion(w)
37+
@test jacobiexpansion(w) == w
38+
@test w == jacobiexpansion(w)
3939
end
4040

4141
@testset "Half-range Chebyshev" begin

0 commit comments

Comments
 (0)