From 0647f1ab7524b2cc7fdcfd303b4406ad37b0b5a1 Mon Sep 17 00:00:00 2001 From: Sheehan Olver Date: Thu, 25 Jul 2024 11:23:30 +0100 Subject: [PATCH] Fix sub-diagonal bandedblockbanded * diagtrav (#132) --- .github/workflows/downstream.yml | 2 ++ Project.toml | 2 +- src/blockkron.jl | 2 +- test/test_blockkron.jl | 8 +++++++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/downstream.yml b/.github/workflows/downstream.yml index f3d65a2..d6825b0 100644 --- a/.github/workflows/downstream.yml +++ b/.github/workflows/downstream.yml @@ -40,6 +40,8 @@ jobs: os: [ubuntu-latest] package: - {repo: InfiniteLinearAlgebra.jl, group: JuliaLinearAlgebra} + - {repo: ClassicalOrthogonalPolynomials.jl, group: JuliaApproximation} + - {repo: MultivariateOrthogonalPolynomials.jl, group: JuliaApproximation} steps: - uses: actions/checkout@v4 diff --git a/Project.toml b/Project.toml index 3adaa6c..dc05d4b 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "LazyBandedMatrices" uuid = "d7e5e226-e90b-4449-9968-0f923699bf6f" authors = ["Sheehan Olver "] -version = "0.10.2" +version = "0.10.3" [deps] ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" diff --git a/src/blockkron.jl b/src/blockkron.jl index b5ab96c..5dcea42 100644 --- a/src/blockkron.jl +++ b/src/blockkron.jl @@ -141,7 +141,7 @@ function copy(M::Mul{<:LazyBlockBandedLayouts,<:DiagTravLayout{<:AbstractPaddedL N = 2max(size(dat)...)-1 P = DiagTrav(convert(Matrix, B.array[1:N,1:N])) JR = blockaxes(P,1) - KR = blockcolsupport(A,JR) + KR = Block.(OneTo(Int(blockcolsupport(A,JR)[end]))) pad(A[KR,JR] * P, axes(A,1)) end diff --git a/test/test_blockkron.jl b/test/test_blockkron.jl index 8c74b75..ee5b17a 100644 --- a/test/test_blockkron.jl +++ b/test/test_blockkron.jl @@ -2,7 +2,7 @@ module TestBlockKron using LazyBandedMatrices, FillArrays, BandedMatrices, BlockBandedMatrices, BlockArrays, ArrayLayouts, LazyArrays, Test using LinearAlgebra -import BlockBandedMatrices: isbandedblockbanded, isbanded, BandedBlockBandedStyle, BandedLayout +import BlockBandedMatrices: isbandedblockbanded, isbanded, BandedBlockBandedStyle, BandedLayout, _BandedBlockBandedMatrix import LazyBandedMatrices: KronTravBandedBlockBandedLayout, BroadcastBandedLayout, BroadcastBandedBlockBandedLayout, arguments, call, blockcolsupport, InvDiagTrav, invdiagtrav, pad import ArrayLayouts: FillLayout, OnesLayout import LazyArrays: resizedata!, FillLayout, arguments, colsupport, call, LazyArrayStyle @@ -311,6 +311,12 @@ LinearAlgebra.factorize(A::MyLazyArray) = factorize(A.data) @test ApplyArray(*, A, B) * x ≈ ApplyArray(*, A, B) * DiagTrav(Matrix(C)) ≈ A * B * x @test LazyArrays.simplifiable(*, ApplyArray(*, A, B), x) == Val(true) @test LazyArrays.simplifiable(*, BroadcastArray(+, A, B), x) == Val(true) + + k = BlockBroadcastArray(hcat, blockedrange(1:5), blockedrange(1:5)) + D = _BandedBlockBandedMatrix(k', axes(k, 1), (1, -1), (1, 0)) + C = pad(randn(3,3), 5,5) + x = DiagTrav(C) + @test D*x ≈ Matrix(D) * Vector(x) end end