Skip to content

Commit a29007f

Browse files
authored
Remove another unnecessary usage of band() (#148)
* Remove band * Use dispatch to get around issue
1 parent fdab140 commit a29007f

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/SemiclassicalOrthogonalPolynomials.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,9 @@ function copy(L::Ldiv{SemiclassicalJacobiLayout,SemiclassicalJacobiLayout})
440440
(inv(M_Q) * L') * M_P
441441
end
442442

443+
_get_bands(R) = (R[band(0)], R[band(-1)])
444+
_get_bands(R::Bidiagonal) = (R.dv, R.ev)
445+
443446
function \(A::SemiclassicalJacobi, B::SemiclassicalJacobi{T}) where {T}
444447
if A.b == -1 && B.b -1
445448
return UpperTriangular(ApplyArray(inv, B \ A))
@@ -448,8 +451,8 @@ function \(A::SemiclassicalJacobi, B::SemiclassicalJacobi{T}) where {T}
448451
Bᵗᵃ⁰ᶜ = SemiclassicalJacobi(B.t, B.a, zero(B.b), B.c, A)
449452
Bᵗᵃ¹ᶜ = SemiclassicalJacobi(B.t, B.a, one(B.a), B.c, A)
450453
Rᵦₐ₁ᵪᵗᵃ⁰ᶜ = Weighted(Bᵗᵃ⁰ᶜ) \ Weighted(Bᵗᵃ¹ᶜ)
451-
b1 = Rᵦₐ₁ᵪᵗᵃ⁰ᶜ[band(0)]
452-
b0 = Vcat(one(T), Rᵦₐ₁ᵪᵗᵃ⁰ᶜ[band(-1)])
454+
b1, _b0 = _get_bands(Rᵦₐ₁ᵪᵗᵃ⁰ᶜ)
455+
b0 = Vcat(one(T), _b0)
453456
Rᵦₐ₋₁ᵪᵗᵃ⁰ᶜ = Bidiagonal(b0, b1, :U)
454457
# Then convert Bᵗᵃ⁰ᶜ into A and complete
455458
Rₐ₀ᵪᴬ = UpperTriangular(A \ Bᵗᵃ⁰ᶜ)

0 commit comments

Comments
 (0)