Skip to content

Commit 29fe0d7

Browse files
authored
correct blockcolsupport when past block range (#176)
* correct blockcolsupport when past block range * v0.12.9 * Update test_adjtransblockbanded.jl * Update test_adjtransblockbanded.jl
1 parent 868f55b commit 29fe0d7

File tree

3 files changed

+37
-13
lines changed

3 files changed

+37
-13
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "BlockBandedMatrices"
22
uuid = "ffab5731-97b5-5995-9138-79e8c1846df0"
3-
version = "0.12.8"
3+
version = "0.12.9"
44

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

src/AbstractBlockBandedMatrix.jl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ end
152152
bs = blockcolstart(A,findblock(axes(A,2),i))
153153
if isempty(axes(A,1))
154154
1
155-
elseif Int(bs) blocksize(A, 2)
155+
elseif Int(bs) blocksize(A, 1)
156156
first(axes(A,1)[bs])
157157
else
158158
size(A,1)+1
@@ -165,8 +165,16 @@ end
165165
last(axes(A,1)[CS])
166166
end
167167

168-
@inline blockbanded_rowstart(A, i::Integer) =
169-
first(axes(A,2)[blockrowstart(A,findblock(axes(A,1),i))])
168+
@inline function blockbanded_rowstart(A, i::Integer)
169+
bs = blockrowstart(A,findblock(axes(A,1),i))
170+
if isempty(axes(A,2))
171+
1
172+
elseif Int(bs) blocksize(A, 2)
173+
first(axes(A,2)[bs])
174+
else
175+
size(A,2)+1
176+
end
177+
end
170178

171179
@inline function blockbanded_rowstop(A, i::Integer)
172180
CS = blockrowstop(A,findblock(axes(A,1),i))

test/test_adjtransblockbanded.jl

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
using ArrayLayouts
2-
using BlockBandedMatrices
3-
using Test
4-
5-
import BlockBandedMatrices: BandedBlockBandedRowMajor,
6-
BandedBlockBandedRows,
7-
BandedBlockBandedColumns,
8-
BlockBandedRows,
9-
BlockBandedColumns
1+
using ArrayLayouts, BlockBandedMatrices, Test
2+
import BlockBandedMatrices: BandedBlockBandedRowMajor, BandedBlockBandedRows,
3+
BandedBlockBandedColumns, BlockBandedRows,
4+
BlockBandedColumns, blockcolsupport, blockrowsupport
105

116
@testset "Adj/Trans" begin
127
@testset "BandedBlockBanded" begin
@@ -45,4 +40,25 @@ import BlockBandedMatrices: BandedBlockBandedRowMajor,
4540
@test BlockBandedMatrix(A') == A'
4641
@test BlockBandedMatrix(transpose(A)) == transpose(A)
4742
end
43+
44+
@testset "blockcolsupport" begin
45+
D_y = BandedBlockBandedMatrix{Float64}(undef, Fill(2,81), [3; Fill(2,79)], (0,0), (0,1))
46+
@test colsupport(D_y, 161) == 159:160
47+
@test rowsupport(D_y, 162) == 162:161
48+
@test colsupport(D_y', 162) == 162:161
49+
@test rowsupport(D_y', 161) == 159:160
50+
51+
@test blockcolsupport(D_y, Block(80)) == Block.(80:80)
52+
@test blockrowsupport(D_y, Block(81)) == Block.(81:80)
53+
@test blockcolsupport(D_y', Block(81)) == Block.(81:80)
54+
@test blockrowsupport(D_y', Block(80)) == Block.(80:80)
55+
56+
E1 = BandedBlockBandedMatrix{Float64}(undef, Int[], [1], (0,0), (0,1))
57+
@test colsupport(E1, 1) == 1:0
58+
@test rowsupport(E1', 1) == 1:0
59+
60+
E2 = BandedBlockBandedMatrix{Float64}(undef, [1], Int[], (0,0), (0,1))
61+
@test rowsupport(E2, 1) == 1:0
62+
@test colsupport(E2', 1) == 1:0
63+
end
4864
end

0 commit comments

Comments
 (0)