Skip to content

Commit 00ad0aa

Browse files
authored
Support RectDiagonal (#411)
1 parent 211877d commit 00ad0aa

File tree

5 files changed

+13
-9
lines changed

5 files changed

+13
-9
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "BandedMatrices"
22
uuid = "aae01518-5342-5314-be14-df237901396f"
3-
version = "1.2.1"
3+
version = "1.3"
44

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

src/BandedMatrices.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import ArrayLayouts: MemoryLayout, transposelayout, triangulardata,
3434
_qr!, _qr, _lu!, _lu, _factorize, AbstractTridiagonalLayout, TridiagonalLayout,
3535
BidiagonalLayout, bidiagonaluplo, diagonaldata, supdiagonaldata, subdiagonaldata, copymutable_oftype_layout, dualadjoint
3636

37-
import FillArrays: AbstractFill, getindex_value, _broadcasted_zeros, unique_value, OneElement
37+
import FillArrays: AbstractFill, getindex_value, _broadcasted_zeros, unique_value, OneElement, RectDiagonal
3838

3939
const libblas = LinearAlgebra.BLAS.libblas
4040
const liblapack = LinearAlgebra.BLAS.liblapack

src/banded/BandedMatrix.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,10 @@ BandedMatrix{V,C,Base.OneTo{Int}}(Z::Zeros{T,2}, bnds::NTuple{2,Integer}) where
226226
BandedMatrix{V}(Z::Zeros{T,2}, bnds::NTuple{2,Integer}) where {T,V} =
227227
_BandedMatrix(zeros(V,max(0,sum(bnds)+1),size(Z,2)),size(Z,1),bnds...)
228228

229-
BandedMatrix(E::Eye{T}, bnds::NTuple{2,Integer}) where T = BandedMatrix{T}(E, bnds)
230-
function BandedMatrix{T}(E::Eye, bnds::NTuple{2,Integer}) where T
231-
ret=BandedMatrix(Zeros{T}(E), bnds)
232-
ret[band(0)] .= one(T)
229+
BandedMatrix(E::RectDiagonal{T}, bnds::NTuple{2,Integer}) where T = BandedMatrix{T}(E, bnds)
230+
function BandedMatrix{T}(E::RectDiagonal, bnds::NTuple{2,Integer}) where T
231+
ret = BandedMatrix(Zeros{T}(E), bnds)
232+
ret[band(0)] .= E.diag
233233
ret
234234
end
235235

src/interfaceimpl.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ isbanded(::Zeros) = true
1818
bandwidths(::Zeros) = (-40320,-40320) # 40320 == prod(1:8), used for special cases involving gcd
1919
inbands_getindex(::Zeros{T}, k::Integer, j::Integer) where T = zero(T)
2020

21-
isbanded(::Eye) = true
22-
bandwidths(::Eye) = (0,0)
23-
inbands_getindex(::Eye{T}, k::Integer, j::Integer) where T = one(T)
21+
isbanded(::RectDiagonal) = true
22+
bandwidths(::RectDiagonal) = (0,0)
23+
inbands_getindex(E::RectDiagonal, k::Integer, j::Integer) = E.diag[k]
2424

2525
isbanded(::Diagonal) = true
2626
bandwidths(::Diagonal) = (0,0)

test/test_interface.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ LinearAlgebra.fill!(A::PseudoBandedMatrix, v) = fill!(A.data,v)
5959
@test B * Eye(5) == B
6060
@test muladd!(2.0, Eye(5), B, 0.0, zeros(5,5)) == 2B
6161
@test muladd!(2.0, B, Eye(5), 0.0, zeros(5,5)) == 2B
62+
63+
@test isbanded(2Eye(5,6))
64+
@test bandwidths(2Eye(5,6)) == (0,0)
65+
@test BandedMatrices.inbands_getindex(2Eye(5,6), 1,1) == 2
6266
end
6367

6468
@testset "Diagonal" begin

0 commit comments

Comments
 (0)