JuliaApproximation / AlgebraicCurveOrthogonalPolynomials.jl

MIT License
1 stars 3 forks source link

Performance: Lowering vs. Laplacian #64

Open ioannisPApapadopoulos opened 1 year ago

ioannisPApapadopoulos commented 1 year ago

A question of performance (for code that I wrote). I have noticed that creating finite subsections of matrices can sometimes be slow:

julia> Z = ZernikeAnnulus(0.5,1,1); wZ  = Weighted(Z);
julia> @time Δ = Z \ (Laplacian(axes(Z,1)) * wZ);
  0.002635 seconds (2.40 k allocations: 240.312 KiB)
julia> @time Δ[Block.(1:20),Block.(1:20)];
  0.185276 seconds (498.23 k allocations: 26.108 MiB, 8.23% gc time)

versus

julia> @time L = Z \ wZ;
  0.000005 seconds (2 allocations: 256 bytes)
julia> @time L[Block.(1:20), Block.(1:20)];
  5.623841 seconds (7.67 M allocations: 605.328 MiB, 1.50% gc time)

Even if I rewrite Z \ wZ using BroadcastVector, I get similar timings.. Any ideas @dlfivefifty?

ioannisPApapadopoulos commented 1 year ago

Actually even worse, for sufficiently large blocks, it fails completely. I guess this might be an issue with the current implementation for Semiclassical Jacobi..?

julia> L[Block(54), Block(54)]
ERROR: DomainError with -0.00537306806801933:
sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)).
Stacktrace:
  [1] throw_complex_domainerror(f::Symbol, x::Float64)
    @ Base.Math .\math.jl:33
  [2] sqrt(x::Float64)
    @ Base.Math .\math.jl:567
  [3] lanczos!(Ns::UnitRange{Int64}, X::LazyBandedMatrices.SymTridiagonal{Float64, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, FillArrays.Fill{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}}}, Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(sqrt), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, Float64}}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, Float64}}}}}}}}}, W::LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{Diagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(\), Tuple{LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}, FillArrays.Ones{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}}}, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}, ClassicalOrthogonalPolynomials.Clenshaw{Float64, Vector{Float64}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, Float64}}}}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(+), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, Float64}}, LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, LazyBandedMatrices.SymTridiagonal{Float64, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, FillArrays.Fill{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}}}, Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(sqrt), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, Float64}}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Int64, Int64}, InfiniteArrays.InfStepRange{Float64, Float64}}}, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfStepRange{Float64, Float64}, InfiniteArrays.InfStepRange{Float64, Float64}}}}}, Float64}}}}}}}}}}}}, γ::LazyArrays.CachedArray{Float64, 1, Vector{Float64}, FillArrays.Zeros{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}}, β::LazyArrays.CachedArray{Float64, 1, Vector{Float64}, FillArrays.Zeros{Float64, 1, Tuple{InfiniteArrays.OneToInf{Int64}}}}, R::UpperTriangular{Float64, LazyArrays.CachedArray{Float64, 2, Matrix{Float64}, FillArrays.Zeros{Float64, 2, Tuple{InfiniteArrays.OneToInf{Int64}, InfiniteArrays.OneToInf{Int64}}}}})
    @ ClassicalOrthogonalPolynomials C:\Users\john.papad\.julia\dev\ClassicalOrthogonalPolynomials\src\lanczos.jl:19
  [4] resizedata!(L::ClassicalOrthogonalPolynomials.LanczosData{Float64}, N::Int64)
    @ ClassicalOrthogonalPolynomials C:\Users\john.papad\.julia\dev\ClassicalOrthogonalPolynomials\src\lanczos.jl:62
  [5] resizedata!
    @ C:\Users\john.papad\.julia\dev\ClassicalOrthogonalPolynomials\src\lanczos.jl:132 [inlined]
  [6] _lanczos_getindex(C::ClassicalOrthogonalPolynomials.LanczosJacobiBand{Float64}, I::UnitRange{Int64})
    @ ClassicalOrthogonalPolynomials C:\Users\john.papad\.julia\dev\ClassicalOrthogonalPolynomials\src\lanczos.jl:137
  [7] getindex(A::ClassicalOrthogonalPolynomials.LanczosJacobiBand{Float64}, I::UnitRange{Int64})
    @ ClassicalOrthogonalPolynomials C:\Users\john.papad\.julia\dev\ClassicalOrthogonalPolynomials\src\lanczos.jl:146
  [8] cache_filldata!(r::SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, inds::UnitRange{Int64})
    @ SemiclassicalOrthogonalPolynomials C:\Users\john.papad\.julia\packages\SemiclassicalOrthogonalPolynomials\9k7qi\src\SemiclassicalOrthogonalPolynomials.jl:123
  [9] _vec_resizedata!(B::SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, n::Int64)
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:158
 [10] resizedata!
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:166 [inlined]
 [11] resizedata!
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:138 [inlined]
 [12] getindex
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:76 [inlined]
 [13] getindex
    @ .\subarray.jl:276 [inlined]
 [14] _broadcast_getindex
    @ .\broadcast.jl:636 [inlined]
 [15] _getindex (repeats 4 times)
    @ .\broadcast.jl:666 [inlined]
 [16] _broadcast_getindex
    @ .\broadcast.jl:642 [inlined]
--- the last 2 lines are repeated 1 more time ---
 [19] _getindex
    @ .\broadcast.jl:667 [inlined]
 [20] _broadcast_getindex
    @ .\broadcast.jl:642 [inlined]
 [21] getindex
    @ .\broadcast.jl:597 [inlined]
 [22] macro expansion
    @ .\broadcast.jl:961 [inlined]
 [23] macro expansion
    @ .\simdloop.jl:77 [inlined]
 [24] copyto!
    @ .\broadcast.jl:960 [inlined]
 [25] copyto!
    @ .\broadcast.jl:913 [inlined]
 [26] materialize!
    @ .\broadcast.jl:871 [inlined]
 [27] materialize!(dest::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, bc::Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{1}, Nothing, typeof(sqrt), Tuple{Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{1}, Nothing, typeof(/), Tuple{Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{1}, Nothing, SemiclassicalOrthogonalPolynomials.var"#1#3", Tuple{SubArray{Float64, 1, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}, Tuple{UnitRange{Int64}}, false}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, Tuple{UnitRange{Int64}}, false}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, Tuple{UnitRange{Int64}}, false}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, Tuple{UnitRange{Int64}}, false}, SubArray{Float64, 1, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}, Tuple{UnitRange{Int64}}, true}}}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, Tuple{UnitRange{Int64}}, false}}}}})
    @ Base.Broadcast .\broadcast.jl:868
 [28] _copyto!(#unused#::ArrayLayouts.DenseColumnMajor, #unused#::LazyArrays.BroadcastLayout{typeof(sqrt)}, dest::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, bc::SubArray{Float64, 1, LazyArrays.BroadcastVector{Float64, typeof(sqrt), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, SemiclassicalOrthogonalPolynomials.var"#1#3", Tuple{OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}}}}}, Tuple{UnitRange{Int64}}, false})
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazybroadcasting.jl:23
 [29] _copyto!
    @ C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\ArrayLayouts.jl:234 [inlined]
 [30] copyto!(dest::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, src::SubArray{Float64, 1, LazyArrays.BroadcastVector{Float64, typeof(sqrt), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, SemiclassicalOrthogonalPolynomials.var"#1#3", Tuple{OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}}}}}, Tuple{UnitRange{Int64}}, false})
    @ ArrayLayouts C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\ArrayLayouts.jl:243
 [31] vcat_copyto!(::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, ::FillArrays.Fill{Float64, 1, Tuple{Base.OneTo{Int64}}}, ::Vararg{Any})
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazyconcat.jl:268
 [32] _copyto!
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazyconcat.jl:237 [inlined]
 [33] _copyto!
    @ C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\ArrayLayouts.jl:234 [inlined]
 [34] copyto!(dest::SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}, src::SubArray{Float64, 1, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(sqrt), Tuple{LazyArrays.BroadcastVector{Float64, typeof(/), Tuple{LazyArrays.BroadcastVector{Float64, SemiclassicalOrthogonalPolynomials.var"#1#3", Tuple{OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, SubArray{Float64, 1, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:dv, Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, LazyArrays.ApplyArray{Float64, 1, typeof(vcat), Tuple{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}, SemiclassicalOrthogonalPolynomials.SemiclassicalJacobiBand{:ev, Float64}}}}}}}, Tuple{UnitRange{Int64}}, true})
    @ ArrayLayouts C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\ArrayLayouts.jl:243
 [35] cache_filldata!(K::LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}, inds::UnitRange{Int64})
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazyoperations.jl:443
 [36] _vec_resizedata!(B::LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}, n::Int64)
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:158
 [37] resizedata!
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:166 [inlined]
 [38] resizedata!
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:138 [inlined]
 [39] getindex(A::LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}, I::CartesianIndex{1})
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\cache.jl:125
 [40] _broadcast_getindex
    @ .\broadcast.jl:623 [inlined]
 [41] _getindex
    @ .\broadcast.jl:667 [inlined]
 [42] _getindex
    @ .\broadcast.jl:666 [inlined]
 [43] _broadcast_getindex
    @ .\broadcast.jl:642 [inlined]
 [44] _getindex
    @ .\broadcast.jl:667 [inlined]
 [45] _broadcast_getindex(bc::Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{1}, Tuple{InfiniteArrays.OneToInf{Int64}}, typeof(-), Tuple{Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{1}, Nothing, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, I::Int64)
    @ Base.Broadcast .\broadcast.jl:642
 [46] getindex
    @ .\broadcast.jl:597 [inlined]
 [47] getindex
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazybroadcasting.jl:88 [inlined]
 [48] getindex(A::LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, i::Int64, j::Int64)
    @ LazyBandedMatrices C:\Users\john.papad\.julia\packages\LazyBandedMatrices\ZaJ9N\src\bidiag.jl:116
 [49] _getindex
    @ .\abstractarray.jl:1262 [inlined]
 [50] getindex(A::LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, I::CartesianIndex{2})
    @ Base .\abstractarray.jl:1218
 [51] _broadcast_getindex
    @ .\broadcast.jl:623 [inlined]
 [52] _getindex
    @ .\broadcast.jl:667 [inlined]
 [53] _getindex
    @ .\broadcast.jl:666 [inlined]
 [54] _broadcast_getindex(bc::Base.Broadcast.Broadcasted{BandedMatrices.BandedStyle, Tuple{InfiniteArrays.OneToInf{Int64}, InfiniteArrays.OneToInf{Int64}}, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, I::CartesianIndex{2})
    @ Base.Broadcast .\broadcast.jl:642
 [55] getindex
    @ .\broadcast.jl:597 [inlined]
 [56] getindex
    @ .\broadcast.jl:604 [inlined]
 [57] getindex(::LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), 
Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, ::Int64, ::Int64)
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazybroadcasting.jl:88
 [58] _getindex(#unused#::Type{Tuple{Int64, Int64}}, M::ArrayLayouts.Mul{LazyBandedMatrices.BroadcastBandedLayout{typeof(*)}, ArrayLayouts.BidiagonalLayout{LazyArrays.LazyLayout, LazyArrays.LazyLayout}, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}, ::Tuple{Int64, Int64})
    @ ArrayLayouts C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\mul.jl:50
 [59] getindex(::ArrayLayouts.Mul{LazyBandedMatrices.BroadcastBandedLayout{typeof(*)}, ArrayLayouts.BidiagonalLayout{LazyArrays.LazyLayout, LazyArrays.LazyLayout}, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}, ::Int64, ::Int64)
    @ ArrayLayouts C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\mul.jl:72
 [60] getindex
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\linalg\mul.jl:146 [inlined]
 [61] getindex
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazyapplying.jl:232 [inlined]
 [62] _getindex
    @ .\abstractarray.jl:1262 [inlined]
 [63] getindex(A::LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, I::CartesianIndex{2})  
    @ Base .\abstractarray.jl:1218
 [64] _broadcast_getindex
    @ .\broadcast.jl:623 [inlined]
 [65] _getindex
    @ .\broadcast.jl:666 [inlined]
 [66] _broadcast_getindex
    @ .\broadcast.jl:642 [inlined]
 [67] _getindex
    @ .\broadcast.jl:667 [inlined]
 [68] _getindex
    @ .\broadcast.jl:666 [inlined]
 [69] _broadcast_getindex(bc::Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{2}, Tuple{InfiniteArrays.OneToInf{Int64}, InfiniteArrays.OneToInf{Int64}}, typeof(*), Tuple{Float64, Base.Broadcast.Broadcasted{LazyArrays.LazyArrayStyle{2}, Nothing, typeof(*), Tuple{LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, Float64}}}}, I::CartesianIndex{2})
    @ Base.Broadcast .\broadcast.jl:642
 [70] getindex
    @ .\broadcast.jl:597 [inlined]
 [71] getindex
    @ .\broadcast.jl:604 [inlined]
 [72] getindex(::LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, Float64}}}}, ::Int64, ::Int64)
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazybroadcasting.jl:88
 [73] _getindex(#unused#::Type{Tuple{Int64, Int64}}, M::ArrayLayouts.Mul{LazyBandedMatrices.BroadcastBandedLayout{typeof(*)}, LazyBandedMatrices.ApplyBandedLayout{typeof(*)}, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, Float64}}}}, LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, 
LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}}, ::Tuple{Int64, Int64})
    @ ArrayLayouts C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\mul.jl:50
 [74] getindex(::ArrayLayouts.Mul{LazyBandedMatrices.BroadcastBandedLayout{typeof(*)}, LazyBandedMatrices.ApplyBandedLayout{typeof(*)}, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, Float64}}}}, LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}}, ::Int64, ::Int64)
    @ ArrayLayouts C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\mul.jl:72
 [75] getindex
    @ C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\linalg\mul.jl:146 [inlined]
 [76] getindex(::LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{LazyArrays.ApplyArray{Float64, 2, typeof(*), Tuple{LazyArrays.BroadcastMatrix{Float64, typeof(*), Tuple{Float64, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}, Float64}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}, LazyBandedMatrices.Bidiagonal{Float64, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}, LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(-), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{LazyArrays.BroadcastVector{Float64, typeof(*), Tuple{Float64, LazyArrays.Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}, OrthogonalPolynomialRatio{Float64, SemiclassicalJacobi{Float64}}}}}}}}}}}, ::Int64, ::Int64)
    @ LazyArrays C:\Users\john.papad\.julia\packages\LazyArrays\NYra8\src\lazyapplying.jl:232
 [77] view(R::MultivariateOrthogonalPolynomials.ModalInterlace{Float64, Tuple{Infinities.InfiniteCardinal{0}, Infinities.InfiniteCardinal{0}}}, KJ::Block{2, Int64})
    @ MultivariateOrthogonalPolynomials C:\Users\john.papad\.julia\packages\MultivariateOrthogonalPolynomials\tNdGo\src\ModalInterlace.jl:197
 [78] view
    @ C:\Users\john.papad\.julia\packages\BlockArrays\ZIuFR\src\abstractblockarray.jl:140 [inlined]
 [79] layout_getindex
    @ C:\Users\john.papad\.julia\packages\ArrayLayouts\CNneg\src\ArrayLayouts.jl:120 [inlined]
 [80] getindex(A::MultivariateOrthogonalPolynomials.ModalInterlace{Float64, Tuple{Infinities.InfiniteCardinal{0}, Infinities.InfiniteCardinal{0}}}, kr::Block{1, Int64}, jrs::Block{1, Int64})
    @ BlockArrays C:\Users\john.papad\.julia\packages\BlockArrays\ZIuFR\src\abstractblockarray.jl:181
dlfivefifty commented 1 year ago

Try doing a profile?

These things can be a bit tricky as we need to make sure we aren't hitting generic fallbacks that use getindex