Skip to content

Commit 7da0326

Browse files
committed
Fixes to ConvertedOP
1 parent 068784e commit 7da0326

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ClassicalOrthogonalPolynomials"
22
uuid = "b30e2e7b-c4ee-47da-9d5f-2c5c27239acd"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.14.2"
4+
version = "0.14.3"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/choleskyQR.jl

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,21 @@ struct ConvertedOrthogonalPolynomial{T, WW<:AbstractQuasiVector{T}, XX, UU, PP}
88
P::PP
99
end
1010

11-
_p0(Q::ConvertedOrthogonalPolynomial) = _p0(Q.P)
11+
_p0(Q::ConvertedOrthogonalPolynomial) = _p0(Q.P)/Q.U[1,1]
1212

1313
axes(Q::ConvertedOrthogonalPolynomial) = axes(Q.P)
14+
15+
16+
struct ConvertedOPLayout <: AbstractOPLayout end
1417
MemoryLayout(::Type{<:ConvertedOrthogonalPolynomial}) = ConvertedOPLayout()
18+
equals_layout(::ConvertedOPLayout, ::ConvertedOPLayout, P, Q) = orthogonalityweight(P) == orthogonalityweight(Q)
19+
20+
1521
jacobimatrix(Q::ConvertedOrthogonalPolynomial) = Q.X
1622
orthogonalityweight(Q::ConvertedOrthogonalPolynomial) = Q.weight
1723

1824

19-
# transform to P * U if needed for differentiation, etc.
25+
# transform to P * inv(U) if needed for differentiation, etc.
2026
arguments(::ApplyLayout{typeof(*)}, Q::ConvertedOrthogonalPolynomial) = Q.P, ApplyArray(inv, Q.U)
2127

2228
OrthogonalPolynomial(w::AbstractQuasiVector) = OrthogonalPolynomial(w, orthogonalpolynomial(singularities(w)))
@@ -33,6 +39,12 @@ OrthogonalPolynomial(w::Function, P::AbstractQuasiMatrix) = OrthogonalPolynomial
3339
orthogonalpolynomial(w::Function, P::AbstractQuasiMatrix) = orthogonalpolynomial(w.(axes(P,1)), P)
3440

3541

42+
simplifiable(L::Ldiv{ConvertedOPLayout,ConvertedOPLayout}) = simplifiable(Ldiv{ApplyLayout{typeof(*)}, ApplyLayout{typeof(*)}}(L.A, L.B))
43+
copy(L::Ldiv{ConvertedOPLayout,ConvertedOPLayout}) = copy(Ldiv{ApplyLayout{typeof(*)}, ApplyLayout{typeof(*)}}(L.A, L.B))
44+
copy(L::Ldiv{ConvertedOPLayout,Lay}) where Lay<:AbstractBasisLayout = copy(Ldiv{ApplyLayout{typeof(*)}, Lay}(L.A, L.B))
45+
copy(L::Ldiv{ConvertedOPLayout,Lay}) where Lay<:AbstractNormalizedOPLayout = copy(Ldiv{ApplyLayout{typeof(*)}, Lay}(L.A, L.B))
46+
47+
3648
"""
3749
cholesky_jacobimatrix(w, P)
3850
@@ -274,3 +286,6 @@ function _fillqrbanddata!(J::QRJacobiData{:R,T}, inds::UnitRange{Int}) where T
274286
ev[k] = UX[k,k-1]/U[k+1,k+1]*(-U[k-1,k+1]/U[k-1,k-1]+U[k-1,k]*U[k,k+1]/(U[k-1,k-1]*U[k,k]))+UX[k,k]/U[k+1,k+1]*(-U[k,k+1]/U[k,k])+UX[k,k+1]/U[k+1,k+1] # this is dot(view(UX,k,k-1:k+1), U[k-1:k+1,k-1:k+1] \ ek)
275287
end
276288
end
289+
290+
291+
diff_layout(::ConvertedOPLayout, P::AbstractQuasiMatrix, dims...) = diff_layout(ApplyLayout{typeof(*)}(), P, dims...)

src/normalized.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ isnormalized(_) = false
3535
represents OPs that are of the form P * R where P is another family of OPs and R is upper-triangular.
3636
"""
3737
abstract type AbstractNormalizedOPLayout <: AbstractOPLayout end
38-
struct ConvertedOPLayout <: AbstractNormalizedOPLayout end
3938
struct NormalizedOPLayout{LAY<:AbstractBasisLayout} <: AbstractNormalizedOPLayout end
4039

4140
MemoryLayout(::Type{<:Normalized{<:Any, OPs}}) where OPs = NormalizedOPLayout{typeof(MemoryLayout(OPs))}()

0 commit comments

Comments
 (0)