Skip to content

Conversation

@DanielVandH
Copy link
Contributor

Closes #485

The method is to basically just flip the parent matrix's data around to match the data needed for the adjoint. I'm not sure what other than Union{Adjoint, Transpose} gives BandedRows but there's another branch to handle that case, just using the old definition.

@codecov
Copy link

codecov bot commented Oct 20, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.94%. Comparing base (62e8561) to head (4b3f552).
⚠️ Report is 3 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #486      +/-   ##
==========================================
+ Coverage   89.80%   89.94%   +0.13%     
==========================================
  Files          27       27              
  Lines        3719     3731      +12     
==========================================
+ Hits         3340     3356      +16     
+ Misses        379      375       -4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@dlfivefifty
Copy link
Member

I think there needs to be an interface for BandedRows, in particular a bandedrowsdata. I would argue that the right definition is:

bandedrowsdata(Ac::Transpose) = transpose(bandeddata(parent(Ac)))
bandedrowsdata(Ac::Adjoint{<:Real}) = transpose(bandeddata(parent(Ac)))

This would avoid the special case when not an AdjOrTrans, as anything with BandedRows layout would need to support this interface.

@DanielVandH
Copy link
Contributor Author

Like this?

@dlfivefifty
Copy link
Member

can you get codecov diff up to 100% please?

@DanielVandH
Copy link
Contributor Author

Done

@dlfivefifty dlfivefifty merged commit 4cacec3 into JuliaLinearAlgebra:master Oct 21, 2025
16 checks passed
@DanielVandH
Copy link
Contributor Author

Ah this actually breaks some stuff

  Expression: ≈((D * Weighted(Q))[0.1, 1:5], ((Weighted(Q))[0.1 + h, 1:5] - (Weighted(Q))[0.1, 1:5]) / h, atol = 100h)
  MethodError: no method matching bandedrowsdata(::SubArray{Float64, 2, Transpose{Float64, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}, false})
  The function `bandedrowsdata` exists, but no method is defined for this combination of argument types.

  Closest candidates are:
    bandedrowsdata(::Adjoint{<:Real})
     @ BandedMatrices C:\Users\djv23\.julia\packages\BandedMatrices\N0Z3F\src\interfaceimpl.jl:34
    bandedrowsdata(::Transpose)
     @ BandedMatrices C:\Users\djv23\.julia\packages\BandedMatrices\N0Z3F\src\interfaceimpl.jl:33

  Stacktrace:
    [1] _BandedMatrix(::BandedMatrices.BandedRows{LazyArrays.LazyLayout}, A::SubArray{Float64, 2, Transpose{Float64, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}, false})
      @ BandedMatrices C:\Users\djv23\.julia\packages\BandedMatrices\N0Z3F\src\banded\BandedMatrix.jl:268
    [2] BandedMatrix(A::SubArray{Float64, 2, Transpose{Float64, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}, false})
      @ BandedMatrices C:\Users\djv23\.julia\packages\BandedMatrices\N0Z3F\src\banded\BandedMatrix.jl:261
    [3] sub_materialize(::BandedMatrices.BandedRows{LazyArrays.LazyLayout}, V::SubArray{Float64, 2, Transpose{Float64, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}, false}, ::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}})
      @ BandedMatrices C:\Users\djv23\.julia\packages\BandedMatrices\N0Z3F\src\generic\indexing.jl:28
    [4] sub_materialize
      @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:136 [inlined]
    [5] sub_materialize
      @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:137 [inlined]
    [6] map
      @ .\tuple.jl:356 [inlined]
    [7] sub_materialize
      @ C:\Users\djv23\.julia\packages\LazyArrays\gHXdm\src\linalg\mul.jl:263 [inlined]
    [8] sub_materialize(V::SubArray{Float64, 1, ApplyQuasiMatrix{Float64, typeof(*), Tuple{Weighted{Float64, SemiclassicalJacobi{Float64}}, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}}, Tuple{Float64, UnitRange{Int64}}, false})
      @ ArrayLayouts C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:137
    [9] layout_getindex
      @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:143 [inlined]
   [10] _getindex(::Type, ::IndexCartesian, A::ApplyQuasiMatrix{Float64, typeof(*), Tuple{Weighted{Float64, SemiclassicalJacobi{Float64}}, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}}, I::Tuple{Float64, UnitRange{Int64}})
      @ QuasiArrays C:\Users\djv23\.julia\packages\QuasiArrays\0NCTx\src\abstractquasiarray.jl:381
   [11] _getindex(::Type{Tuple{Float64, Int64}}, A::ApplyQuasiMatrix{Float64, typeof(*), Tuple{Weighted{Float64, SemiclassicalJacobi{Float64}}, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}}, I::Tuple{Float64, UnitRange{Int64}})
      @ QuasiArrays C:\Users\djv23\.julia\packages\QuasiArrays\0NCTx\src\abstractquasiarray.jl:372
   [12] getindex(::ApplyQuasiMatrix{Float64, typeof(*), Tuple{Weighted{Float64, SemiclassicalJacobi{Float64}}, BandedMatrix{Float64, ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}, Adjoint{Float64, BroadcastVector{Float64, LinearAlgebra.var"#5#6"{typeof(*)}, Tuple{Float64, BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{Cumsum{Float64, 1, AbstractVector{Float64}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}, SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{SubArray{Float64, 1, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, Tuple{InfiniteArrays.InfUnitRange{Int64}}, false}}}}}}}}}, BroadcastVector{Float64, typeof(*), Tuple{InfiniteArrays.InfUnitRange{Int64}, BroadcastVector{Float64, typeof(+), Tuple{BroadcastVector{Float64, typeof(*), Tuple{BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}, MulAddAccumulate{Float64}}}, BroadcastVector{Float64, typeof(/), Tuple{BroadcastVector{Float64, typeof(-), Tuple{BroadcastVector{Float64, typeof(/), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}, InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}, BroadcastVector{Float64, typeof(inv), Tuple{InfiniteLinearAlgebra.TridiagonalConjugationBand{Float64}}}}}}}}}}}, Accumulate{Float64, 1, typeof(*), Vector{Float64}, AbstractVector{Float64}}}}}}}}}, InfiniteArrays.OneToInf{Int64}}}}, ::Float64, ::UnitRange{Int64})
      @ QuasiArrays C:\Users\djv23\.julia\packages\QuasiArrays\0NCTx\src\abstractquasiarray.jl:367
   [13] macro expansion
      @ C:\Users\djv23\.julia\juliaup\julia-1.11.7+0.x64.w64.mingw32\share\julia\stdlib\v1.11\Test\src\Test.jl:677 [inlined]
   [14] macro expansion
      @ C:\Users\djv23\.julia\dev\SemiclassicalOrthogonalPolynomials.jl\test\test_derivative.jl:131 [inlined]
   [15] macro expansion
      @ C:\Users\djv23\.julia\juliaup\julia-1.11.7+0.x64.w64.mingw32\share\julia\stdlib\v1.11\Test\src\Test.jl:1709 [inlined]
   [16] macro expansion
      @ C:\Users\djv23\.julia\dev\SemiclassicalOrthogonalPolynomials.jl\test\test_derivative.jl:122 [inlined]
   [17] macro expansion
      @ C:\Users\djv23\.julia\juliaup\julia-1.11.7+0.x64.w64.mingw32\share\julia\stdlib\v1.11\Test\src\Test.jl:1709 [inlined]
   [18] top-level scope
      @ C:\Users\djv23\.julia\dev\SemiclassicalOrthogonalPolynomials.jl\test\test_derivative.jl:7

with a missing method for bandedrowsdata of a SubArray. I can try and figure out the correct method tomorrow, or is it better to just revert?

@DanielVandH
Copy link
Contributor Author

Ah I see you also found that in #487 already

@dlfivefifty
Copy link
Member

yes it's fixed. turns out none of the tests tested negative bands

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Overload _BandedMatrix(::BandedRows, A::AbstactMatrix)

2 participants